Môi trường lập trình trực quan cho Linux
Có thể có bản phân phối Linux tốt hơn cho các nhà phát triển web không? Hoặc hơn trong các điều khoản chung, giả sử, có thể bản phân phối Linux tốt nhất dành cho nhà phát triển?
Chúng tôi đã xem xét SemiCode OS, một bản phân phối Linux dành cho lập trình viên. Nhưng SemiCode OS vẫn đang trong giai đoạn thử nghiệm nên tôi quyết định lập danh sách để trả lời câu hỏi của bạn: cái mà Bản phân phối Linux Tôi có nên sử dụng để lập trình?
Nhiều thứ, chẳng hạn như ngôn ngữ lập trình, công cụ được sử dụng, sự hỗ trợ, tính sẵn có của các gói và tốc độ chúng được cập nhật trong kho cũng như nhiều yêu cầu phi chức năng như môi trường máy tính để bàn, mang lại sự ổn định và rất quan trọng để xác định.
Lập trình viên tiếp xúc với HĐH, đặc biệt ở mức độ cao hơn bất kỳ ai khác. Đối với lập trình viên, hệ điều hành phải kích hoạt anh ấy/cô ấy. Và khi nói “hòa nhập”, ý tôi là tạo ra niềm đam mê cháy bỏng đối với việc viết mã và mong muốn biến thế giới thành một nơi tốt đẹp hơn.
Các bản phân phối Linux tốt nhất cho người mới bắt đầu lập trình
Dù sao đi nữa, hãy bắt đầu. Chúng ta sẽ xem xét các trình quản lý gói, tính khả dụng của gói, tính ổn định, mô hình phát hành và môi trường máy tính để bàn phân phối nói riêng.
Ngoài ra, nếu bạn có các tùy chọn phân phối của riêng mình, tùy chọn này có thể được đưa vào danh sách “ Các bản phân phối tốt nhất Linux dành cho lập trình viên mới bắt đầu" - hãy viết chúng vào mẫu nhận xét trên trang web.
1. Ubuntu
Ubuntu đưa ra 3 lý do cụ thể để các lập trình viên sử dụng nó.
Ubuntu đã phát triển đến mức nó đã trở thành hiện thực máy tính để bàn Linux. Tôi thấy rằng hầu hết tất cả các nhà cung cấp phần mềm sản xuất cho nền tảng Linux đều cung cấp gói .deb. Ngày nay, Ubuntu nhận được nhiều sự hỗ trợ của nhà cung cấp hơn bất kỳ bản phân phối nào khác.
Điều này có nghĩa là bất kỳ IDE, công cụ nào mà nhà phát triển cần sẽ có trình cài đặt .deb sẵn sàng để tải xuống. Tất cả những gì bạn phải làm là nhấp vào nút tải xuống. Điều này cũng có lợi thế rất lớn khi dự án của bạn phụ thuộc vào phiên bản cụ thể phần mềm. Nó cũng có một kho phần mềm ổn định khổng lồ.
Ubuntu cung cấp phiên bản LTS sẽ được hỗ trợ trong 5 năm và không bao giờ được phiên bản LTS hỗ trợ trong 9 tháng. Phiên bản không phải LTS không có số lượng gói lớn (như biến thể LTS). Điều này mang lại sự ổn định vô song. Các thành phần chính hệ điều hành và kernel sẽ không thay đổi, như trường hợp của phiên bản di động của hệ điều hành. Điều này cung cấp cho các lập trình viên và nhà phát triển một cơ sở làm việc ổn định và đáng tin cậy, sẽ không thể hiện bất kỳ sự mâu thuẫn nào.
Thứ ba, tôi muốn bàn về môi trường làm việc Máy tính để bàn Ubuntu, đó là Unity. Mặc dù đây chỉ là vấn đề sở thích chủ quan nhưng tôi muốn nói về lợi ích của Unity đối với một lập trình viên.
Unity có giao diện đơn giản. Trình khởi chạy là một ngăn xếp đơn giản, nơi bạn đặt tất cả các ứng dụng yêu thích và được sử dụng thường xuyên nhất của mình. Bạn khởi chạy ứng dụng và chuyển đổi giữa các ứng dụng bằng cùng một trình khởi chạy. Tôi nghĩ đây là một điều tích cực, bởi vì lớp vỏ này ít xâm lấn hơn nhiều so với Gnome. Điều này giúp việc chuyển đổi giữa các ứng dụng trở nên dễ dàng hơn. Ngoài ra, Unity rất dễ tùy chỉnh. Dash cũng rất thân thiện với người dùng và giúp bạn điều hướng hệ điều hành một cách nhanh chóng. Thành thật mà nói, launcher là một công cụ tăng cường hiệu suất tuyệt vời.
Ubuntu là một hệ điều hành được đánh bóng. Ubuntu cũng có sẵn trong phiên bản khác nhauvà có những bản phân phối tuyệt vời trên Dựa trên Ubuntu. Kiểm tra chúng ra quá. Bạn có thể tải xuống Ubuntu từ trang web chính thức.
2. openSUSE
OpenSUSE là một trong những bản phân phối Linux phức tạp nhất. Nó có một cộng đồng tuyệt vời, một lĩnh vực phát triển vững chắc và thái độ hoàn toàn chuyên nghiệp. Mặc dù tôi sử dụng Arch Linux trên máy tính của mình nhưng tôi luôn đánh giá cao openSUSE.
OpenSUSE phù hợp hơn nhiều với các nhà phát triển, đặc biệt là vì sự tự do mà nó mang lại. OpenSUSE có hai loại. Và nếu chúng ta nói về bản phân phối Linux tốt nhất dành cho người mới bắt đầu lập trình thì đây sẽ là một lựa chọn tốt.
Bước nhảy vọt đi kèm với vòng đời 6 tháng sau khi phát hành phiên bản tiếp theo. Vì vậy hiện tại nếu bạn cài đặt OpenSUSE Leap 42.2 thì nó sẽ được hỗ trợ tối đa 6 tháng sau khi openSUSE Leap 42.3 ra mắt. Nó đi kèm với phần mềm ổn định được đảm bảo, vì vậy mọi công cụ bạn cần để phát triển sẽ hoạt động mà không có lỗi trong và ngoài dự án của bạn.
Mặt khác, openSUSE Tumbleweed tuân theo đợt phát hành luân phiên. Bạn có thể nói nó sẽ được hỗ trợ mãi mãi. Phần mềm sẽ được cập nhật vào ngày một cách thường xuyên. Tất cả các IDE, trình soạn thảo nguồn mở yêu thích của bạn và các công cụ khác sẽ luôn được cập nhật lên phiên bản mới nhất phiên bản mới nhất. Mặc dù các bản cập nhật đã được kiểm tra kỹ lưỡng và hầu như không bao giờ gây ra sự cố liên quan đến việc phân phối chéo nhưng có một điều bạn nên cân nhắc. Thông thường, dự án của bạn có thể phụ thuộc vào một phiên bản phần mềm cụ thể như JDK. Bạn nên cẩn thận khi chấp nhận cập nhật trong những trường hợp như vậy.
Leap hay Tumbleweed, openSUSE có một cách cung cấp phần mềm hoàn toàn tuyệt vời. Chỉ cần truy cập software.opensuse.org, tìm kiếm gói yêu cầu và chỉ cần nhấp vào "Cài đặt trực tiếp" và hoàn tất. Không có kho lưu trữ, lệnh và lỗi phụ thuộc. Tôi nghĩ đây là điểm bán hàng chính của openSUSE. Điều này sẽ tiết kiệm rất nhiều thời gian khi bạn chỉ muốn cài đặt các thứ và chuyển sang viết mã.
Cuối cùng, openSUSE là một bản phân phối Linux tuyệt vời để lập trình và mã hóa vì độ tin cậy, tính ổn định và kho lưu trữ khổng lồ các phần mềm được hỗ trợ tốt. Không có gì ngạc nhiên khi nhiều doanh nghiệp sử dụng nó cho các nhà phát triển của họ. Chắc chắn kiểm tra nó ra.
3. Fedora
Bản thân Linus Torvalds sử dụng Fedora. Cần thêm lý do?
Fedora rất nhanh. Ngay cả phiên bản Fedora của Gnome cũng chạy nhanh hơn trên PC của tôi. Nhanh hơn các bản phân phối khác chạy Gnome. Tôi thích không phải nhìn vào màn hình khi Chrome bị treo do có quá nhiều tab đang mở.
Fedora có chu kỳ phát hành là 6 tháng. Điều này rất tốt cho các nhà phát triển đang mắc kẹt với phiên bản cũ quá lâu.
Lý do chính để chọn Fedora là nó không chỉ là trình quản lý gói hoặc môi trường máy tính để bàn. Fedora là người đề xướng chính thống về nguồn mở. Mọi thứ Fedora đều là nguồn mở. Không có trình điều khiển hoặc nội dung độc quyền nào trong kho Fedora (bạn có thể cài đặt trình điều khiển độc quyền, nhưng việc này phức tạp hơn một chút so với việc chạy một vài lệnh dnf). Vì vậy, nếu bạn là người đam mê nguồn mở, Fedora chắc chắn là dành cho bạn.
Fedora là dự án chị em của Red Hat Enterprise Linux, hệ điều hành của lập trình viên gốc. Có mối quan hệ chung giữa Fedora và Red Hat Enterprise Linux mang lại cả lợi ích về mặt công nghệ và đổi mới.
Fedora có thể nhận được tài trợ và chuyên nghiệp nhận xét từ RHEL, nhưng được hỗ trợ bởi cộng đồng các nhà phát triển và chuyên gia RHEL nhiệt tình, đam mê Fedora. Điều này trực tiếp biến Fedora trở thành một thiết lập ưu việt dành cho các nhà phát triển. Và thêm Fedora - một trong những bản phân phối Linux ổn định nhất trong mọi phiên bản. Chúng tôi chỉ cần thêm bản dựng này vào danh sách chuyên nghiệp của mình. Các bản phân phối Linux tốt nhất cho người mới bắt đầu lập trình.
Fedora cũng có sẵn trên môi trường máy tính để bàn yêu thích của bạn. Kiểm tra chúng sau khi cài đặt. Bạn có thể tải xuống Fedora Gnome từ trang web chính thức.
4. Hệ điều hành Linux
Phân phối này cũng có thể được phân loại là chuyên nghiệp Các bản phân phối Linux tốt nhất cho người mới bắt đầu lập trình, bởi vì để thiết lập hệ thống cho việc này một cách đơn giản, bạn sẽ cần có đủ thời gian và sự kiên nhẫn để mọi thứ hoạt động chính xác. Nhưng nó đáng giá.
Arch Linux đi kèm với nhân Linux và trình quản lý gói Pacman. Bạn thậm chí không có GUI. Bạn xây dựng từ một cơ sở, lắp ráp các thành phần khi bạn thấy phù hợp. Kết quả là một hệ điều hành được cá nhân hóa cao chứa mọi thứ bạn cần và không có thứ gì bạn không có.
Arch Linux được biết đến với kho lưu trữ hiện đại, tiên tiến. Mỗi gói trong kho chính thức luôn ở số phiên bản cao nhất, nhưng vẫn chỉ khả dụng sau khi kiểm tra cẩn thận. Vì vậy, bản thân hệ điều hành là hoàn toàn đáng tin cậy. Sự cố ổn định hiếm gặp xảy ra khi cài đặt các gói không được hỗ trợ từ kho lưu trữ Arch (có thể tránh được điều này bằng cách cẩn thận khi làm việc với AUR). Điều này cũng chỉ ảnh hưởng phần mềm, về cái nào Chúng ta đang nói về chứ không phải về bản thân hệ điều hành.
Mọi thông tin và hướng dẫn gỡ lỗi đều được ghi lại rõ ràng trong Arch Wiki, đây thực sự là tài liệu tốt nhất mà bất kỳ bản phân phối Linux nào cũng có. Vì vậy, mọi vấn đề bạn gặp phải đều có thể được giải quyết dễ dàng bằng cách làm theo các hướng dẫn sáng tạo nhất được cung cấp trên Arch Wiki.
Arch Linux không cần bảo trì vì hệ điều hành được cập nhật liên tục. Pacman có thể giải quyết hiệu quả các vấn đề phụ thuộc và các gói mồ côi. Phiên bản Linux mới nhất và tuyệt vời nhất luôn có sẵn trong Kho lưu trữ người dùng Arch.
Xây dựng một hệ điều hành cá nhân với Arch Linux là một cách tốt nếu bạn hỏi tôi. Bạn có thể tìm thấy Arch Linux tại đây.
5.Antergos
Antergos là một bản phân phối Linux dựa trên Arch. Nhiều người cho rằng các bản phân phối dựa trên Arch chỉ đơn giản là các trình cài đặt Arch, giúp cài đặt hệ thống Arch bằng giao diện đồ họa. giao diện người dùng. Vâng, đó không phải là trường hợp. Antergos sử dụng kho lưu trữ có. Nhưng nó có chi nhánh riêng của nó.
Antergos phát hành nhanh chóng nên bạn không phải lo lắng về việc ngừng hỗ trợ. Nó có sẵn trong tất cả các ngôn ngữ chính. Antergos, mặc dù dựa trên Arch, nhưng không phải là một bản phân phối cơ bản. Nó đi kèm với một lượng lớn chương trình cài đặt sẵn. Nhưng con số này vẫn nhỏ hơn so với các bản phân phối khác, vì vậy bạn sẽ không cảm thấy hệ thống của mình bị cồng kềnh và nó cho phép bạn linh hoạt tùy chỉnh theo mong muốn và nhu cầu của mình.
Chúng tôi nghĩ bản phân phối này cũng xứng đáng có mặt trong danh sách của chúng tôi" Các bản phân phối Linux tốt nhất cho người mới bắt đầu lập trình«.
Antergos sử dụng kho Arch nên mọi thứ bạn cần trong kho vũ khí của mình luôn có sẵn với số phiên bản cao nhất. Pacman, trình quản lý gói của Arch, không gặp bất kỳ vấn đề gì khi thêm kho lưu trữ. Kho chứa phần mềm mới nhất và đôi khi một số phiên bản cũ nổi tiếng cũng được lưu trữ như Phát triển Java Bộ dụng cụ. Antergos cũng có kho bổ sung riêng cung cấp các gói tùy chỉnh Antergos (khác với Arch), phần mềm Antergos và nhiều thứ khác như hình nền và gói biểu tượng Antergos.
Pacman xử lý các vấn đề phụ thuộc và các gói mồ côi theo cách vượt trội hơn bất kỳ trình quản lý gói nào. Sự bất ổn là không thể tránh khỏi.
Mới phần mềmđược mã hóa, các phương pháp được phát triển và các xu hướng thay đổi theo mỗi buổi bình minh. Kho lưu trữ Arch User được đặt ở đây. Kho lưu trữ người dùng Arch là kho lưu trữ dựa trên cộng đồng chứa số lượng lớn gói, trong đó có nhiều chương trình mới. Về cơ bản nó chứa mọi thứ chạy trên máy Linux. Vì vậy, mọi IDE, SDK và thư viện bạn cần sẽ được cài đặt chỉ bằng một lệnh.
tên yaourt_of_the_software
Antergos cung cấp tất cả các môi trường máy tính để bàn chính. Cài đặt dễ dàng với trình cài đặt Cnchi. Nó cung cấp các tùy chọn để chọn môi trường máy tính để bàn, trình duyệt, trình điều khiển đồ họa v.v. trên chính bản cài đặt. Nhìn chung, Antergos tạo ra một bản phân phối Linux tuyệt vời cho việc viết mã. Kiểm tra nó trên trang web chính thức của họ.
kết luận
Nếu bạn có bạn bè quan tâm đến Linux, hãy nói với họ rằng tôi chọn bản phân phối Linux tốt nhất cho người mới bắt đầu lập trình. Chia sẻ phản hồi của bạn về những bản phân phối này với chúng tôi. Ngoài ra, hãy chia sẻ một số mẹo mà nhiều lập trình viên có thể thấy hữu ích trong phần bình luận bên dưới.
Nếu bạn tìm thấy lỗi, vui lòng đánh dấu một đoạn văn bản và nhấp vào Ctrl+Enter.
Nhiều lập trình viên mới bắt đầu sợ hãi
lập trình trên Linux - không có sự đơn giản của Windows
và khả năng hiển thị. Tuy nhiên, nó cũng tồn tại cho Linux
rất nhiều đồ dùng trực quan
lập trình, và nó không chỉ là một bản sao của Delphi.
Tất nhiên, chúng không thể trở nên hoàn chỉnh
thay thế tương tự Visual Studio, tuy nhiên khá
giúp đẩy nhanh quá trình phát triển
các chương trình.
NetBean
Một trong những IDE tốt nhất. Dự định cho
làm việc với Java, bạn có thể sử dụng nó
phát triển không chỉ đa nền tảng
các chương trình Java cũng như các ứng dụng web, dịch vụ web và
khách hàng cho họ, các chương trình J2ME, v.v. Có lẽ
hoạt động trên Windows, Linux, MacOS. IDE có thể mở rộng
nhiều plugin và tiện ích bổ sung khác nhau, có thể
tìm thấy trên trang web. Đồng thời, mọi thứ đều miễn phí, sau đó
ăn cho hayalva! Nói chung - một con số không thể chối cãi
một.
Nhà thiết kế QT/KDevelop
Một môi trường phát triển mạnh mẽ khác trên
nền tảng KDE và Gnome. C++ đa nền tảng
các ứng dụng chỉ đi ra ngoài đường. Vì
các chương trình Qt phi thương mại có thể
sử dụng miễn phí, tồn tại
cho hầu hết tất cả các bản phân phối.
Dòng vô tính Ngôn ngữ lập trình, và không chỉ trong thiết kế,
mà còn trong các cấu trúc ngôn ngữ. Hoàn hảo
công cụ dành cho lập trình viên VB muốn
chuyển sang Linux. Giao diện đơn giản và thuận tiện.
Truy cập vào tất cả các cơ sở dữ liệu chính - MySQL,
PostgreSQL, v.v. Hoạt động trên hầu hết mọi người
phân phối.
Trình soạn thảo WYSIWYG để tạo trang web. TRONG
Nhắc tôi rất nhiều về trình soạn thảo Macromedia hay mọi thứ
cùng một FrontPage. Hỗ trợ tự động
làm việc với trang web thông qua FTP.
Tạo môi trường Python và Ruby IDE
lập trình bằng ngôn ngữ khá đơn giản
và thú vị. Thực sự được viết trên
Trăn.
Eclipse hoàn toàn không phải là một IDE mà là toàn bộ nền tảng cho
Các ứng dụng khác nhau. Để tiêu chuẩn
việc phân phối bao gồm các plugin bổ sung cho
Hỗ trợ và phát triển ngôn ngữ Java (JDT)
plugin cho Eclipse (PDE - Môi trường phát triển plugin). Vì
làm việc với các ngôn ngữ khác nên
các plugin đặc biệt được cài đặt - trong Eclipse
có thể làm việc trên hầu hết mọi thứ
ngôn ngữ lập trình có thể truy cập được. Khác
lợi thế cũng áp dụng cho
khả năng mở rộng: số lượng khổng lồ
tiện ích (đặc biệt là cho Java) bây giờ
cũng có sẵn dưới dạng plugin cho Eclipse,
ví dụ Ant, JavaDoc, JUnit, JDepend, Check Style, Subversion.
Vì thế chúng ta không cần phải từ bỏ
hệ thống kiểm soát phiên bản của bạn, từ
chương trình kiểm tra chất lượng mã, v.v.
Ưu điểm thứ ba là Eclipse
môi trường đa nền tảng, nghĩa là
có nhiều phiên bản dành cho khác nhau
hệ điều hành (không thể
đủ khả năng cho Visual Studio tương tự).
Nhà phát triển J
Nền tảng của Oracle không phải là nguồn mở,
tuy nhiên, nó vẫn miễn phí. Như đã rõ từ
những cái tên vẫn được sử dụng đa nền tảng
Java. Sử dụng Sun JDK để làm việc nên
Oracle không có khiếu nại về những gì đang được tạo ra
về lý thuyết, các chương trình sẽ không có nó.
Và cuối cùng là môi trường điều khiển trực quan
dự án cho Gnome Desktop. Không kém phần hữu ích
chương trình dành cho lập trình viên hơn là IDE.
Bài viết này dành cho hai loại độc giả. Thứ nhất, đây là những người có kinh nghiệm lập trình trên MS Windows nhưng không có kinh nghiệm như vậy trên GNU/Linux. Thứ hai, đây là những người không hề có kinh nghiệm lập trình. Tuy nhiên, tôi cho rằng người đọc thường quen thuộc với thuật ngữ lập trình phổ biến và không cần phải giải thích, chẳng hạn như “chương trình”, “chức năng”, “trình biên dịch” hoặc “gỡ lỗi” là gì.
Công cụ phát triển
Tôi sẽ xem xét sự phát triển bằng cách sử dụng những công cụ có nguồn gốc từ GNU/Linux nhiều nhất. Bao gồm các:
Ngôn ngữ lập trình C
vỏ bash
Chữ Biên tập viên Vim và Emac
Trình biên dịch GCC
Trình gỡ lỗi GDB
Tiện ích xây dựng dự án GNU make
Hệ thống kiểm soát phiên bản Git
Hệ thống cửa sổ X11
Việc lựa chọn những phương tiện cụ thể này không phải là một giáo điều. Mỗi điều trên chuyển tiền có thể được thay thế bằng cái gì khác nếu muốn. Tuy nhiên, các cụm từ như “Môi trường phát triển Linux” thường đề cập đến bộ công cụ này.
Ngôn ngữ lập trình
Ngôn ngữ lập trình “bản địa” nhất cho GNU/Linux là C. Điều này là do các yếu tố sau:
GNU/Linux vay mượn nhiều ý tưởng (về mặt thực tế là hệ tư tưởng) từ hệ điều hành UNIX;
Phòng phẫu thuật hệ thống UNIXđược viết bằng C (trên thực tế, ngôn ngữ này được tạo riêng để viết hệ điều hành này);
Tương ứng, nền tảng Linux và môi trường hệ thống GNU cũng được viết bằng C.
Dưới đây tôi sẽ xem xét việc phát triển bằng ngôn ngữ C. Tuy nhiên, sự lựa chọn này không phải là một giáo điều. Các ngôn ngữ phổ biến khác để phát triển theo GNU/Linux là C++, Python và Perl. Tất nhiên, bất kỳ ngôn ngữ nào khác có thể được sử dụng.
Môi trương phat triển
Trong hai thập kỷ qua, cái gọi là IDE - môi trường phát triển tích hợp. Một môi trường như vậy bao gồm trình soạn thảo văn bản, trình biên dịch, trình gỡ lỗi, công cụ xây dựng dự án và nhiều thứ khác. Những môi trường như vậy cũng có sẵn cho GNU/Linux (phổ biến nhất là Eclipse, NetBeans, IDEA, KDevelop, Anjuta). Tuy nhiên, lịch sử phát triển của các hệ thống giống UNIX cho thấy IDE không chỉ là duy nhất mà còn là thứ tốt nhất. phương tiện hiệu quả phát triển. Trên thực tế, câu trả lời đúng cho câu hỏi “cái nào tốt nhất IDE tốt nhất theo GNU/Linux” có nghĩa là “GNU/Linux là một IDE.”
Bạn thường có thể có ý kiến cho rằng không thể phát triển một dự án lớn nếu không có IDE. Ý kiến này dễ dàng bị bác bỏ. Các phiên bản đầu tiên của UNIX thậm chí không được viết bằng Vim (nó chưa tồn tại) mà bằng Ed. Đây được gọi là trình soạn thảo văn bản từng dòng, trong đó bạn chỉ có thể chỉnh sửa một dòng văn bản mỗi lần. Toàn bộ tập tin không được hiển thị trên màn hình. Trong trường hợp của UNIX, không thể nào khác được - các nhà phát triển không có bất kỳ màn hình nào và việc giao tiếp với hệ thống được thực hiện bằng cách sử dụng teletypes. Nhân Linux hiện đại được viết chủ yếu bằng các trình soạn thảo Emacs và Vim.
Nhiều tiện ích UNIX gọi là "trình soạn thảo văn bản mặc định". Lệnh khởi chạy trình soạn thảo văn bản mặc định được lấy từ biến môi trường $EDITOR. Một số tiện ích trước tiên nhìn vào biến $VISUAL và chỉ khi nó không được đặt, ở biến $EDITOR. Đây là hành vi lịch sử: các máy tính cũ thường không có bất kỳ màn hình nào được kết nối mà chỉ có một teletype, vì vậy việc khởi chạy trình chỉnh sửa màn hình (trực quan) chẳng ích gì. Trong các bản phân phối hiện đại, mặc định thường là EDITOR=vi hoặc EDITOR=nano . Bạn có thể chỉ định việc sử dụng một trình soạn thảo khác cho một lệnh như thế này:
EDITOR=emacs một số lệnh
Để sử dụng biên tập viên phù hợp theo mặc định luôn, bạn cần thêm một dòng như
xuất EDITOR=emacs
Trong lịch sử, các trình soạn thảo văn bản "thực sự" duy nhất dành cho lập trình viên là Vim và Emacs (đơn giản vì chúng có lịch sử phát triển lâu nhất như soạn thảo văn bản dành cho lập trình viên). Các biên tập viên còn lại đang ở vị trí bắt kịp.
Vỏ lệnh
Vỏ lệnh (hoặc thông dịch lệnh) là một chương trình chấp nhận lệnh từ người dùng ở một mức độ khá bằng ngôn ngữ đơn giản lập trình và thực thi chúng. Hầu hết các lệnh chạy chương trình cùng tên. Các lệnh riêng lẻ là các cấu trúc ngôn ngữ lập trình shell.
Tiêu chuẩn POSIX bao gồm mô tả về bộ khả năng tối thiểu được cung cấp bởi shell lệnh. Trên thực tế, các shell đã qua sử dụng thường cung cấp nhiều tính năng hơn.
Hệ điều hành thuộc họ DOS và Windows mượn một số chức năng vỏ bọc từ UNIX, nhưng tác giả của chúng đã đơn giản hóa đáng kể, đó là lý do tại sao chức năng của COMMAND.COM và cmd.exe bị giảm đi rất nhiều. PowerShell khá ngang bằng nhưng hoạt động khác biệt đáng kể.
Với mục đích của bài viết này, tôi sẽ hạn chế sử dụng bash shell (là shell phổ biến nhất và mặc định trên hầu hết các bản phân phối) để chạy trình biên dịch và các công cụ phát triển khác. Đánh giá tốt Việc sử dụng shell lệnh có thể được tìm thấy, ví dụ, trong cuốn sách nổi tiếng .
Tài liệu
Tất cả các công cụ và thư viện phát triển trong GNU/Linux thường được ghi chép khá đầy đủ. Theo truyền thống, tài liệu sử dụng một định dạng đặc biệt và một tiện ích để xem nó - man. Tài liệu trong hệ thống được chia thành nhiều phần:
Lệnh của người dùng (chẳng hạn như ls, gcc hoặc man)
Cuộc gọi hệ thống - API nhân hệ điều hành
Chức năng thư viện
Trình điều khiển, v.v.
Định dạng tệp
Trò chơi, v.v.
Tổng quan về hệ thống con khác nhau
Các lệnh dùng để quản trị hệ thống
Để gọi một chủ đề tài liệu theo tên, bạn phải chỉ định tên đó khi gọi lệnh man (ví dụ: man ls). Đôi khi các phần có cùng tên nằm trong một số phần của tài liệu tài liệu. Bạn có thể chỉ định một phần cụ thể khi gọi man (ví dụ: man 3 printf).
Thông tin thêm về hệ thống trợ giúpđàn ông gặp đàn ông đàn ông.
Các tiện ích môi trường hệ thống GNU thường sử dụng định dạng thông tin cho tài liệu. Ví dụ: xem thông tin Coreutils.
Trình biên dịch
Hiện nay có nhiều trình biên dịch C ít nhiều tương thích với tiêu chuẩn khác nhau. Tuy nhiên, hiện tại, trình biên dịch C có trong Bộ sưu tập Trình biên dịch GNU (GCC) vẫn là trình biên dịch được áp dụng nhiều nhất trong môi trường GNU/Linux. Trình biên dịch này, ngoài tiêu chuẩn C, còn hỗ trợ một số phần mở rộng tiêu chuẩn. Đặc biệt, những phần mở rộng này được sử dụng rộng rãi trong các nguồn nhân Linux. TRONG Gần đây xuất hiện các trình biên dịch có thể biên dịch nhân Linux (ví dụ: llvm-clang hoặc EKO).
Trình biên dịch GCC được khởi chạy từ trình bao lệnh với lệnh như
gccprogram.c
trong đó chương trình.c là tên của tệp đầu vào. Ngoài ra, theo Tiêu chuẩn POSIX, trình biên dịch có thể được khởi chạy bằng lệnh cc chương trình.c (cc là viết tắt của "Trình biên dịch C").
Khi chạy bình thường, trình biên dịch sẽ cố gắng tạo tập tin thực thi. Theo mặc định, tệp đầu ra được gọi là a.out (tên này vẫn có từ các phiên bản UNIX cổ xưa). Một tên khác có thể được chỉ định bằng tùy chọn trình biên dịch -o, ví dụ:
gcc -o chương trình chương trình.c
Khi lắp ráp một chương trình từ nhiều mô-đun, trình biên dịch có thể được cung cấp một số tệp nguồn hoặc tệp mã đối tượng làm đầu vào, ví dụ:
gcc -o chương trình main.c module1.o module2.o …
Chỉ để biên dịch một tập tin gốc vào mã đối tượng (không cố gắng xây dựng tệp thực thi), bạn cần đưa ra lệnh như
(tên tệp đầu ra mặc định sẽ là module.o).
Thư viện thường cần thiết để xây dựng một chương trình. Linux sử dụng hai loại thư viện: thư viện liên kết tĩnh và thư viện liên kết động. Với liên kết tĩnh, toàn bộ thư viện được bao gồm trong tệp thực thi khi chương trình được xây dựng. Với liên kết động, chỉ có tên được ghi vào tệp thực thi thư viện động, và việc tìm kiếm tệp và thành phần này xảy ra khi chương trình khởi động.
Thư viện tĩnh trong Các hệ thống giống UNIX là một kho lưu trữ (định dạng ar cũ) chứa một tập hợp các tệp đối tượng. Một kho lưu trữ như vậy được tạo bằng một lệnh như
ar libsomething.a module1.o module2.o …
Tên tệp thư viện theo truyền thống bắt đầu bằng tiền tố lib.
Thư viện được tải động là một tệp đối tượng định dạng đặc biệt(tính cho tải động). Một thư viện như vậy được tạo bằng lệnh như
gcc -shared -o libsomething.so module1.c module2.c …
Để sử dụng thư viện khi xây dựng chương trình, bạn cần chỉ định nó cho trình biên dịch bằng tùy chọn -l chẳng hạn
gcc -o chương trình -lm chương trình.c
(ở đây tệp thư viện libm.so sẽ được sử dụng, trình biên dịch sẽ thay thế tiền tố lib theo mặc định). Theo mặc định, trình biên dịch xây dựng chương trình sử dụng thư viện động. Nếu bạn muốn sử dụng phiên bản tĩnh của thư viện, bạn cần chỉ định tùy chọn -static cho trình biên dịch.
Thông tin chi tiếtĐể biết các tùy chọn gcc, hãy xem man gcc.
Chào thế giới!
Người ta tin rằng truyền thống bắt đầu học ngôn ngữ lập trình bằng cách viết một chương trình in ra chuỗi “Xin chào thế giới!” bắt đầu từ cuốn sách “Ngôn ngữ C” của Kernighan và Ritchie. . Trong trường hợp ngôn ngữ C, chương trình này trông như thế này:
#bao gồm
int chủ yếu(int argc, char * argv) (
printf("Xin chào thế giới!\n" );
trở lại 0
;
}
Để chạy chương trình này, văn bản này cần được ghi vào một tệp có tên, chẳng hạn như hello.c, và từ thư mục chứa tệp này, hãy đưa ra lệnh như
gcc -o xin chào xin chào.c
Tuy nhiên, trong trường hợp chương trình đơn giản như vậy, chỉ cần đưa ra lệnh
(Tôi sẽ giải thích bên dưới tại sao hai lệnh này hoạt động giống nhau). Kết quả là một file thực thi có tên hello sẽ xuất hiện trong cùng thư mục. Bạn có thể chạy nó bằng lệnh
Trình tự lắp ráp
Chúng ta hãy xem xét kỹ hơn chính xác những gì trình biên dịch làm. Hoạt động của trình biên dịch C là truyền thống và được sử dụng bởi các trình biên dịch của một số ngôn ngữ khác.
Ở đầu vào, trình biên dịch có trường hợp chung tập hợp các tập tin với văn bản nguồn. Trước khi quá trình biên dịch thực sự bắt đầu, các tệp này được xử lý bởi cái gọi là. bộ tiền xử lý (chương trình cpp). Chức năng chính của chương trình này là thực thi các lệnh như #include . Gặp phải lệnh như vậy, bộ tiền xử lý sẽ chèn nội dung của tệp đã chỉ định (trong trong trường hợp này, stdio.h) thay cho chỉ thị này. Bộ tiền xử lý hiểu một số chỉ thị khác, nhưng bây giờ tôi sẽ không tập trung vào chúng.
Sau bộ tiền xử lý, quá trình biên dịch thực tế được thực hiện. Từ các tệp nguồn ở giai đoạn này, cái gọi là. các tập tin đối tượng Đây là những tập tin chứa tập tin thực thi mã máy, nhưng vẫn chưa sẵn sàng để ra mắt. Điều chính họ thiếu là địa chỉ của các hàm thư viện sẽ được gọi. Ví dụ: mã cho hàm printf() được chứa trong thư viện libc. Và tệp đối tượng chỉ chứa tên của hàm này. Ngoài ra, tệp đối tượng còn chứa tên của tất cả các hàm được khai báo trong đó.
Các tệp đối tượng, cũng như các thư viện được sử dụng, được cung cấp làm đầu vào cho trình liên kết (chương trình ld). Trình liên kết tìm kiếm tất cả các hàm được gọi từ các tệp đối tượng khác nhau (theo tên) trong các tệp và thư viện đối tượng. Nếu tất cả các chức năng được tìm thấy thì trình liên kết sẽ tập hợp tệp thực thi thực tế. Trong trường hợp này, tên của các hàm được gọi sẽ được thay thế bằng các địa chỉ bộ nhớ cụ thể. Trong trường hợp sử dụng thư viện động, tên của hàm được sử dụng vẫn giữ nguyên và tên tệp của thư viện động được thêm vào đó, khi khởi động chương trình, bạn sẽ cần tìm hàm này.
Bản thân chương trình gcc được gọi là trình điều khiển. Nó chạy các chương trình được đề cập ở trên (hoặc chỉ một số trong số chúng, tùy thuộc vào các tùy chọn) để tạo ra một tệp thực thi.
Ví dụ thứ hai: giải phương trình bậc hai
Thêm một chút nữa ví dụ phức tạp Hãy xem xét một chương trình phải giải phương trình bậc hai. Người dùng nhập các hệ số của tam thức bậc hai và chương trình sẽ hiển thị nghiệm thực của nó. Đây toàn văn một chương trình như vậy:
#bao gồm
#bao gồm
/* giải: tính nghiệm của phương trình bình phương.
* a, b, c là các hệ số trong phương trình.
* Root sẽ được lưu trữ tại x1, x2.
* Giá trị trả về: đếm số gốc thực.
*/
giải quyết int(double a, double b, double c,
gấp đôi* x1, gấp đôi* x2) (
gấp đôi D = b*b - 4*a*c;
sqrtD đôi;
nếu (D > 0) (
sqrtD = sqrt(D);
*x1 = (-b - sqrtD)/(2.0 * a);
*x2 = (-b + sqrtD)/(2.0 * a);
trở lại 2;
) ngược lại nếu (D< 0)
trả về 0;
khác(
*x1 = -b/(2.0*a);
trả về 1;
}
}
int main (int argc, char* argv) (
nhân đôi a,b,c;
gấp đôi x1, x2;
int rễ_count;
// Hệ số đầu vào
printf("A: ");
scanf("%lf", &a);
printf("B: ");
scanf("%lf", &b);
printf("C: ");
scanf("%lf", &c);
// Giải phương trình
root_count = giải quyết(a,b,c, &x1, &x2);
// Kết quả đầu ra
chuyển đổi (root_count) (
trường hợp 0:
printf("Không có gốc (thực).\n");
phá vỡ;
trường hợp 1:
printf("Một gốc: %0.4lf\n", x1);
phá vỡ;
trường hợp 2:
printf("Hai gốc: %0.4lf và %0.4lf\n",
x1, x2);
phá vỡ;
}
Bằng cách tương tự với ví dụ trước, hãy viết văn bản này vào tệp Square.c và thử biên dịch nó bằng lệnh
gcc -o vuông vuông.c
Nhưng lần này chúng ta sẽ gặp một lỗi như thế này:
/tmp/cc6RNFIi.o: Trong hàm `solve": Square.c:(.text+0x6d): tham chiếu không xác định tới `sqrt" coll2: ld trả về 1 trạng thái thoát
Có chuyện gì thế này? Rõ ràng là vì lý do nào đó trình biên dịch không thích lệnh gọi hàm sqrt(). Hơn nữa, anh ấy không còn phàn nàn về hồ sơ nữa. mã nguồn, mà là một tệp đối tượng (tệp này là cc6RNFIi.o). Điều này có nghĩa là tệp nguồn được biên dịch thành công và các vấn đề phát sinh ở giai đoạn liên kết (có thể thấy từ việc đề cập đến lỗi trong chương trình ld trong văn bản - đây là trình liên kết tiêu chuẩn trong GNU/Linux). Trình liên kết không thể tìm thấy hàm sqrt(). Trong trường hợp này, đó là do hàm được chứa trong libm và chúng tôi không yêu cầu trình biên dịch sử dụng nó. Để loại bỏ lỗi này, chúng ta cần thay đổi lệnh biên dịch thành như sau:
gcc -o vuông -lm vuông.c
Lệnh như vậy sẽ hoạt động không có lỗi và tạo một tệp thực thi hình vuông.
Khi lắp ráp cái nào cũng đủ chương trình phức tạp chúng ta sẽ phải sử dụng một số thư viện và có thể cần chỉ định một số tùy chọn khác cho trình biên dịch. Lệnh có thể khá dài. Cái gì, tôi có nên gõ thủ công mỗi lần không? KHÔNG. Một trong những nguyên tắc của triết lý UNIX là: “Bất cứ thứ gì có thể tự động hóa đều phải được tự động hóa”. Ở đây chúng ta sẽ cần một trong những tiện ích UNIX lâu đời nhất - chương trình tạo. Để sử dụng nó, chúng ta cần viết một tệp có tên Makefile (trong cùng thư mục với tệp nguồn của chúng tôi) với nội dung sau:
hình vuông: hình vuông.c $(CC) -o $@ -lm $<
Bây giờ bạn có thể xây dựng tệp thực thi chỉ bằng cách chạy lệnh make. Làm thế nào nó hoạt động?
Làm
Tiện ích make được thiết kế để xây dựng chương trình (mặc dù nó có thể được sử dụng để tự động hóa nhiều tác vụ tương tự khác). Nó đọc một tệp có tên Makefile và thấy một bộ quy tắc trong đó. Mỗi quy tắc xác định ba điều: mục tiêu (tức là những gì cần được xây dựng), danh sách các tệp nguồn và một tập hợp các lệnh phải được thực thi để xây dựng mục tiêu từ các tệp nguồn. Trong ví dụ trên, Square là tên của mục tiêu, Square.c là tệp nguồn duy nhất trong trường hợp này (nếu có nhiều tệp, chúng được liệt kê cách nhau bằng dấu cách) và dòng thứ hai là lệnh. Các biến có thể được sử dụng trong một lệnh. Một số biến có ý nghĩa đặc biệt. Cụ thể, trong bất kỳ quy tắc nào, $@ biểu thị tên của mục tiêu và $< — первый исходный файл. Переменная $(CC) указывает на компилятор C, используемый в системе по умолчанию (в большинстве случаев это gcc , но бывает и что-нибудь другое).
Ký tự đại diện % có thể được sử dụng trong tên đích và danh sách tệp nguồn. Ví dụ: quy tắc này:
%.o: %.c $(CC) -c $<
chỉ ra rằng các tệp có tên kết thúc bằng .o phải được tập hợp từ các tệp tương ứng có hậu tố .c .
Ngoài ra, hãy biết trước một số quy tắc mặc định. Trong số đó có cái được đề cập ở ví dụ trước, cũng như quy tắc
%: %.c $(CC) -o $@ $<
Nhờ quy tắc này, trong ví dụ với “Xin chào thế giới!” chỉ cần làm hello chạy cc -o hello hello.c .
Sử dụng một bộ quy tắc, make tạo ra một biểu đồ phụ thuộc của các mục tiêu với nhau và trên các tệp nguồn, đồng thời chỉ thực thi những lệnh cần thiết để xây dựng mục tiêu được chỉ định trên dòng lệnh. Nếu không có mục tiêu nào được chỉ định thì mục tiêu đầu tiên được mô tả trong Makefile sẽ được tạo.
Để biết thêm thông tin về tiện ích này, hãy xem ví dụ: man make.
Quản lý phiên bản
Bất kỳ VCS nào cũng có thể được sử dụng để tạo phiên bản mã nguồn. Tuy nhiên, vì chúng ta đang nói về GNU/Linux, chúng ta hãy xem nhanh hệ thống được sử dụng để phát triển nhân Linux: git. Có tài liệu khá phong phú về git, bao gồm. và bằng tiếng Nga. Xem ví dụ bài viết của tôi hoặc một loạt bài viết nổi tiếng .
Để bắt đầu sử dụng git, bạn cần tạo một kho lưu trữ - kho lưu trữ các phiên bản tệp. Việc này được thực hiện bởi đội
Bây giờ bạn có thể thêm tập tin vào kho lưu trữ. Nhưng chúng tôi không cần theo dõi phiên bản của một số tệp, cụ thể là tệp đối tượng và tệp thực thi. Để loại trừ chúng ngay lập tức khỏi việc xem xét git, chúng tôi sẽ viết một tệp .gitignore với nội dung sau:
*.o hình vuông xin chào
Bây giờ đội
sẽ thêm tất cả các tệp trong thư mục hiện tại vào kho lưu trữ, ngoại trừ những tệp được đề cập trong tệp .gitignore. Sau này, bạn có thể cam kết bằng lệnh
Lệnh này sẽ mở trình soạn thảo văn bản mặc định. Ở đây bạn sẽ cần phải viết một bình luận cho cam kết. Trong trường hợp này, một dòng như “Cam kết ban đầu” là đủ.
Gỡ lỗi
Để gỡ lỗi trên Linux, trình gỡ lỗi gdb được sử dụng. Nhưng trước tiên, để chương trình được thuận tiện cho việc gỡ lỗi, nó cần được biên dịch bằng tùy chọn -g. Bây giờ chúng ta chỉ cần thay đổi Makefile cho giống
hình vuông: hình vuông.c $(CC) -o $@ -lm -g $<
và xây dựng lại chương trình.
Trong quá trình biên dịch thông thường, tên của hàm, biến, v.v. không được đưa vào tệp thực thi. Tùy chọn -g yêu cầu trình biên dịch ghi thông tin này vào phần thích hợp của tệp thực thi. Ngoài ra, với tùy chọn này, thông tin về sự tương ứng của offset và số dòng trong tệp nguồn sẽ được ghi vào tệp thực thi.
Việc gỡ lỗi được bắt đầu bằng một lệnh như
gdb ./some-program -a -b
Khi bạn khởi động trình gỡ lỗi, dấu nhắc dòng lệnh sẽ xuất hiện như sau:
GNU gdb (GDB) 7.2-ubuntu Bản quyền (C) 2010 Free Software Foundation, Inc. Giấy phép GPLv3+: GNU GPL phiên bản 3 trở lên Đây là phần mềm miễn phí: bạn có toàn quyền thay đổi và phân phối lại nó. KHÔNG CÓ BẢO ĐẢM, trong phạm vi pháp luật cho phép. Nhập "hiển thị sao chép" và "hiển thị bảo hành" để biết chi tiết. GDB này được định cấu hình là "i686-linux-gnu". Để biết hướng dẫn báo cáo lỗi, vui lòng xem: ... Đọc ký hiệu từ /home/portnov/LUG/src/square...done. (gdb)
Nói chung, làm việc với trình gỡ lỗi cũng giống như làm việc với shell lệnh. Bạn nhập lệnh, trình gỡ lỗi sẽ thực thi chúng. Giống như trong shell lệnh, việc hoàn thành lệnh bằng phím Tab sẽ hoạt động. Ngoài ra, để ngắn gọn, bạn có thể rút ngắn lệnh xuống một vài chữ cái đầu tiên, chỉ để tránh sự mơ hồ.
Các lệnh được sử dụng phổ biến nhất bao gồm:
In đoạn mã nguồn tiếp theo (in được 10 dòng). Bạn có thể chỉ định số dòng cụ thể sau tên lệnh, ví dụ l 10,15.
Chạy chương trình dưới trình gỡ lỗi. Chương trình sẽ chạy cho đến điểm dừng gần nhất hoặc cho đến khi kết thúc.
Đặt điểm dừng. Số dòng mà bạn muốn đặt điểm ngắt được chỉ định sau tên lệnh.
Thực hiện một dòng chương trình.
Tính giá trị và in biểu thức. Biểu thức được chỉ định sau lệnh. Bằng cách này, bạn có thể xem giá trị của một biến một lần.
Thêm một biểu thức vào danh sách hiển thị cố định. Giá trị của các biểu thức này sẽ được hiển thị sau mỗi lệnh được thực thi. Bên cạnh mỗi biểu thức, số của nó trong danh sách được in. Bạn có thể xóa một biểu thức khỏi danh sách bằng lệnh hủy hiển thị kèm theo số biểu thức.
Thoát khỏi trình gỡ lỗi.
Để biết thêm thông tin về GDB, xem man gdb.
Hệ thống cửa sổ X11
Về mặt lịch sử, UNIX không và không thể có bất kỳ môi trường đồ họa nào vì không có màn hình đồ họa. Môi trường đồ họa cho UNIX xuất hiện vào khoảng thời gian mà các màn hình đồ họa xuất hiện rộng rãi: năm 1984. Lúc đầu nó được gọi là W (viết tắt của Window), sau đó được cải tiến và gọi là chữ cái tiếp theo của bảng chữ cái - X, phiên bản tiếp theo được gọi là X2 ... Bây giờ chúng ta có X11.
X11 chủ yếu là giao thức mạng dựa trên TCP/IP và UDP/IP. Giao thức có một máy khách và một máy chủ. Máy khách gửi một chuỗi yêu cầu như “vẽ cho tôi một cửa sổ”, “vẽ nút trên đó” và máy chủ sẽ thực thi chúng. Một trong những nguyên tắc chính của X11 là “xác định cơ chế chứ không phải chính sách”. Giao thức cung cấp khả năng vẽ các cửa sổ, nhưng không xác định chính xác cách chúng sẽ được hiển thị.
Máy chủ X phổ biến nhất hiện nay là Xorg (http://x.org); XFree86 vẫn còn sống; Xming phù hợp với Windows; Máy chủ X phần cứng được sản xuất - bộ "màn hình + bàn phím + chuột", trong đó hỗ trợ chức năng máy chủ X11 được triển khai trong phần cứng - những bộ như vậy được sử dụng làm thiết bị đầu cuối đồ họa.
Giao thức X11, không giống như HTTP, là giao thức nhị phân chứ không phải văn bản - điều này được thực hiện vì lý do tiết kiệm băng thông kết nối mạng và dễ dàng phân tích cú pháp các yêu cầu của máy chủ. Nhưng điều này làm phức tạp việc tạo các máy khách của giao thức này: việc thu thập các yêu cầu X11 nhị phân phức tạp rõ ràng là khó khăn hơn, chẳng hạn như các yêu cầu HTTP văn bản. Do đó, để viết máy khách X, các thư viện chức năng đặc biệt được sử dụng để tạo và gửi yêu cầu X đến máy chủ. Thư viện phổ biến nhất là libX11. Một lựa chọn hiện đại hơn là libxcb.
Truy vấn X11 ở mức khá thấp. Ví dụ: để triển khai chức năng của một nút, bạn cần vẽ một hình chữ nhật trong cửa sổ, viết văn bản vào đó, đợi một vòng lặp để nhấn nút chuột và với mỗi lần nhấp, hãy kiểm tra xem lần nhấp đó là bên trong hay bên ngoài hình chữ nhật. Do đó, cái gọi là bộ công cụ bắt đầu xuất hiện - các thư viện bao bọc cấp cao trên libX11.
Trong lịch sử, bộ công cụ đầu tiên là Athena3D. Sau đó là Motif và Tk. Hiện nay, phổ biến nhất là GTK+ và Qt (Qt, nói đúng ra, không phải là bộ công cụ X11 mà là một bộ thư viện đa nền tảng đa mục đích có thể được sử dụng làm bộ công cụ X11).
Xin chào thế giới trên GTK+
Ví dụ, hãy xem xét chương trình sau đây. Nó hiển thị một cửa sổ với một nút. Khi bạn nhấp vào nút này, thông báo “Xin chào thế giới” sẽ xuất hiện.
#bao gồm
// Hàm này hiển thị hộp thoại thông báo.
// tham số main_window phải được đặt thành cửa sổ chính của hộp thoại.
void message_box (GtkWindow* main_window, gchar *message) (
GtkWidget *hộp thoại, *nhãn, *content_area;
// Tạo hộp thoại
hộp thoại = gtk_dialog_new_with_buttons("Tin nhắn",
cửa sổ chính,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK,
GTK_RESPONSE_NONE,
VÔ GIÁ TRỊ);
// Tạo nhãn
content_area = gtk_dialog_get_content_area(GTK_DIALOG(hộp thoại));
nhãn = gtk_label_new(tin nhắn);
// Trên tín hiệu "phản hồi" (nó được gọi khi người dùng nhấp vào nút trong
// hộp thoại), hủy hộp thoại.
g_signal_connect_swapped(hộp thoại,
"phản ứng"
G_CALLBACK (gtk_widget_destroy),
hộp thoại);
//Thêm nhãn
gtk_container_add(GTK_CONTAINER(content_area), nhãn);
// Hiển thị hộp thoại
gtk_widget_show_all(hộp thoại);
}
// Gọi lại cho tín hiệu xóa sự kiện
gbolean delete_event tĩnh(GtkWidget *widget,
Sự kiện GdkEvent *,
dữ liệu gpointer)
{
// Nếu trả về TRUE, cửa sổ sẽ không bị đóng.
// Điều này có thể được sử dụng để ngăn chặn việc đóng cửa sổ trong một số trường hợp.
trả về SAI;
}
// Gọi lại cho tín hiệu hủy
hủy bỏ khoảng trống tĩnh (GtkWidget *widget,
dữ liệu gpointer)
{
// Kết thúc vòng lặp sự kiện GTK+ chính
gtk_main_quit();
}
// Gọi lại khi nhấn nút
khoảng trống tĩnh xin chào (GtkWidget *widget,
dữ liệu gpointer)
{
// tham số "data" đại diện cho cửa sổ chính ở đây
message_box(GTK_WINDOW(data), "Xin chào thế giới!");
}
int chính(int argc,
char *argv)
{
Cửa sổ GtkWidget *;
nút GtkWidget *;
// Khởi tạo GTK+
gtk_init(&argc, &argv);
// Tạo cửa sổ chính
cửa sổ = gtk_window_new(GTK_WINDOW_TOPLEVEL);
// Thiết lập lệnh gọi lại cho một số tín hiệu
g_signal_connect(window, "xóa sự kiện",
G_CALLBACK (xóa_sự kiện), NULL);
G_signal_connect(cửa sổ, "hủy",
G_CALLBACK (hủy), NULL);
// Thiết lập độ rộng viền cửa sổ
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
// Tạo nút có nhãn
nút = gtk_button_new_with_label("Xin chào thế giới");
// Thiết lập gọi lại cho tín hiệu "đã nhấp" của nút.
// Truyền cửa sổ chính làm tham số thứ hai.
g_signal_connect (nút, cửa sổ "đã nhấp", G_CALLBACK (xin chào), (gpointer));
// Đóng gói nút vào cửa sổ
gtk_container_add(GTK_CONTAINER(cửa sổ), nút);
// Hiển thị nút
gtk_widget_show(nút);
// Hiển thị cửa sổ
gtk_widget_show(cửa sổ);
// Chạy vòng lặp sự kiện GTK+ chính.
gtk_main();
Chương trình này được tập hợp với một lệnh có dạng
gcc -o gtk-hello $(pkg-config --cflags gtk+-2.0) $(pkg-config --libs gtk+-2.0) gtk-hello.c
văn học bổ sung
Raymond, Eric S. Nghệ thuật lập trình cho UNIX. - Mỗi. từ tiếng Anh - M.: Nhà xuất bản Williams, 2005. - 544 tr., ill.
Kernighan B., Pike R. UNIX. Môi trường phần mềm — Dịch từ tiếng Anh - St. Petersburg: Symbol-Plus, 2003. - 416 trang, bệnh.
Kernighan B., Ritchie D. Ngôn ngữ lập trình C. - Trans. từ tiếng Anh - Mátxcơva: Williams, 2006. - 304 tr.
Linux đang phát triển nhanh chóng và trở nên phổ biến hơn, đặc biệt khi việc sử dụng Windows ngày càng giảm và nhiều lập trình viên đang nỗ lực cải tiến Linux bằng cách tạo ra các chương trình máy tính để bàn mới tương đương hoặc thậm chí tốt hơn các ứng dụng trên Windows và Mac OS X.
Một số lượng lớn các bản phân phối đang cố gắng làm cho Linux trở nên dễ dàng hơn đối với những người dùng mới trước đây đã sử dụng Linux hoặc Mac OS X. Điều này càng giúp quảng bá Linux đến với đại chúng.
Có rất nhiều ngôn ngữ lập trình cho Linux và hơn nữa, những ngôn ngữ mới lại xuất hiện hàng năm. Nhưng không phải tất cả các lập trình viên đều sử dụng chúng, bởi vì để tạo ra một ứng dụng đáng tin cậy, linh hoạt, hiệu quả, có thể mở rộng và quan trọng nhất là an toàn, bạn cần chọn đúng ngôn ngữ.
Trong bài viết này, chúng ta sẽ xem xét các ngôn ngữ lập trình phổ biến nhất cho Linux. Hãy xem xét những hệ điều hành này được phát triển trên đó và những hệ điều hành được sử dụng để tạo ứng dụng. Danh sách này thực tế không được sắp xếp theo mức độ quan trọng, tất cả các ngôn ngữ được sử dụng ở đây đều tốt. Tất cả chúng đều đa nền tảng và bạn có thể viết chương trình trên chúng cho bất kỳ hệ điều hành hiện có nào.
Tôi sẽ không quá lời nếu nói rằng ngôn ngữ này được tạo ra cho hệ điều hành này. Đây đã là một ngôn ngữ cũ. Nó được tạo ra vào những năm 70 bởi một kỹ sư của Bell Labs để viết nhân Unix. Thực tế là vào thời đó, các chương trình và hệ điều hành được viết bằng trình biên dịch mã và cần phải viết chương trình cho từng kiến trúc riêng biệt, vì các tập lệnh khác nhau. Các nhà phát triển Unix cần một ngôn ngữ lập trình cấp cao để họ có thể viết Unix một lần và xây dựng nó cho tất cả các nền tảng. C đã trở thành một ngôn ngữ như vậy.
Nhân Linux dựa trên Unix và do đó cũng được viết bằng C; tất cả các mô-đun hạt nhân, trình điều khiển cũng như một lượng lớn phần mềm hệ thống cũng được triển khai bằng C. Nếu bạn đang thắc mắc Linux được viết bằng gì thì bây giờ bạn đã biết câu trả lời. Nhiều tiện ích từ bộ GNU, máy chủ X, bộ thư viện để làm việc với đồ họa GTK và hơn thế nữa, một số trình quản lý cửa sổ đã được phát triển trong C. Nhưng C ngày càng được sử dụng ít hơn để viết các chương trình mới; nó đã được thay thế bằng C++ sửa đổi theo định hướng khách quan.
2. C++
Đây là phiên bản cải tiến của C, nó xuất hiện không muộn hơn C. Vào năm 1980, Björn Stroustrup đang thực hiện nghiên cứu của mình và thiếu khả năng C tiêu chuẩn, vì vậy ông đã nghĩ ra một số cải tiến cho nó. Đột nhiên, ngôn ngữ này trở nên phổ biến trong số các đồng nghiệp của anh và anh không thể tự mình theo dõi sự phát triển của nó nữa.
Bây giờ nó là một trong những ngôn ngữ lập trình phổ biến nhất. Cả hai phong cách lập trình hướng mục tiêu và thủ tục đều có sẵn ở đây. Đúng là nó vẫn rất khó đối với người mới bắt đầu, giống như C. Điều này đòi hỏi độ chính xác rất cao trong việc quản lý bộ nhớ.
Rất nhiều phần mềm trong Linux được viết bằng C++, đây là những tiện ích GNU giống nhau, nhiều chương trình người dùng, môi trường đồ họa, trình duyệt. Khung đồ họa Qt được viết bằng C++, hiện được sử dụng cho môi trường máy tính để bàn KDE và một số lượng lớn các chương trình đa nền tảng. Qt vừa là một dự án thương mại vừa phi thương mại. Nếu bạn phát triển phần mềm miễn phí, bạn có thể sử dụng Qt miễn phí, nhưng không, bạn phải trả tiền cho giấy phép. Qt dễ dàng hơn nhiều cho người mới bắt đầu so với C hoặc C++ thuần túy.
C và C++ là ngôn ngữ lập trình phổ biến nhất cho Linux
3. Java
Đây là ngôn ngữ lập trình đa nền tảng, mạnh mẽ và hoàn toàn hướng tới mục tiêu, có nhiều cơ hội để tạo các ứng dụng máy tính để bàn cũng như các ứng dụng mạng và web.
Java ban đầu được Sun Microsystems phát triển vào những năm 1990 cho các thiết bị nhúng có sức mạnh xử lý thấp. Dành cho điện thoại di động, bộ vi điều khiển và các thiết bị khác. Mục tiêu của anh là đưa chức năng đa nền tảng lên một tầm cao mới. Chương trình được viết bằng Java, được chuyển đổi thành mã byte mà máy Java có thể thực thi trên mọi phần cứng, bất kể kiến trúc và khả năng. Sau đó, Java bắt đầu được sử dụng để tạo các ứng dụng web trong trình duyệt và do đó các ứng dụng dành cho máy tính để bàn bắt đầu được tạo ra.
Java là một trong những ngôn ngữ lập trình tốt nhất, đặc biệt nếu bạn định phát triển các ứng dụng có thể chạy ở mọi nơi. Java rất có lợi về mặt tính di động, bạn có thể chạy chương trình trên Windows hoặc Linux mà không cần sửa đổi và nó cũng an toàn hơn vì chương trình chạy trong một máy ảo và chúng ta có thể kiểm soát mọi hành động của nó. Nhưng nhược điểm là tiêu tốn nhiều bộ nhớ và hiệu năng thấp so với C.
Không có nhiều chương trình được viết bằng Java, nhưng có một số chương trình nổi tiếng trong số đó, chẳng hạn như các môi trường phát triển như Netbeans, Eclipse, InteljIDE. Một số nhà sản xuất phần cứng phát hành các tiện ích để quản lý phần cứng của họ bằng Java để nó có thể hoạt động tốt như nhau trên Linux. Nhiều trò chơi đơn giản được viết bằng Java và nó cũng được sử dụng rộng rãi trong hệ điều hành Android.
3.Python
Python là một ngôn ngữ thông dịch cấp cao, có mục đích chung. Nó được phát triển bởi một người tên là Guido Van Rossum vào đầu những năm 80. Ông làm việc với ngôn ngữ này trong thời gian rảnh rỗi và mục tiêu là tạo ra một ngôn ngữ để dạy lập trình.
Ý tưởng chính của Python là sự đơn giản, tốc độ phát triển tối đa, lỗi tối thiểu, độ không chắc chắn tối thiểu. Cú pháp của ngôn ngữ giúp bạn viết chính xác và tránh sai sót. Điều này ngay lập tức khiến Python trở thành một trong những ngôn ngữ phổ biến nhất. Nhiều thư viện đã được phát triển để làm việc với các thành phần hệ thống, triển khai các thuật toán và bộ API để làm việc với các dịch vụ mạng. Giờ đây, bạn có thể viết cả trang web và ứng dụng Qt chính thức bằng Python, bằng chứng đầu tiên là nhiều trang web, bao gồm Yandex và thứ hai là trình chỉnh sửa video OpenShot phổ biến.
Ngoài ra, vô số tập lệnh hệ thống và tiện ích quản lý Linux đã được viết bằng Python. Đây là tiện ích thích hợp để cài đặt phần mềm trong Ubuntu, trình quản lý gói Emerge trong Gentoo và một số lượng lớn các tập lệnh nhỏ. Lý do cho điều này là sự đơn giản của ngôn ngữ. Lập trình viên dành vài giờ cho chương trình và nó hoạt động hoàn hảo trong vài năm.
4. Điện tử JavaScript / GitHub
JavaScript chủ yếu là ngôn ngữ lập trình để tạo các trang web động, được phát triển đặc biệt cho mục đích này vào giữa những năm 1990 bởi Brendan Eich tại Netscape. Cho đến gần đây, JavaScript đã được sử dụng để tạo các trang web động ở phía máy khách và trong các ứng dụng web. Nhưng sau đó dự án Node.js xuất hiện, cho phép bạn phát triển các chương trình máy chủ bằng JavaScript. Gần đây nhất, GitHub đã tạo ra khung Electron, dựa trên Node.js, giờ đây có thể sử dụng JavaScript để tạo các ứng dụng dành cho máy tính để bàn.
Electron cho phép bạn sử dụng các công nghệ HTML, CSS, JavaScript để tạo ra các chương trình máy tính để bàn đẹp mắt. Nền tảng này được nhóm và cộng đồng GitHub tích cực duy trì.
Mặc dù nền tảng này chỉ mới được phát hành gần đây nhưng có tới hàng trăm ứng dụng đã được viết trên đó, trong số đó nổi tiếng nhất là các trình soạn thảo mã tương tự Atom và LightTable, cũng như ứng dụng quản lý trang web WordPress và ứng dụng trò chuyện mới RocketCaht. Ngoài ra, JavaScript còn được sử dụng để phát triển các chương trình máy tính để bàn trên nền tảng Chrome, còn có nhiều chương trình như vậy, cùng trình soạn thảo Brackets, các tiện ích hữu ích như Google Keep, Pocket, Wunderlist và các chương trình khác từ cửa hàng Chrome.
5. Vỏ
Các lệnh đầu cuối Linux không chỉ cho phép bạn thực hiện các thao tác hàng ngày một cách tương tác mà còn là ngôn ngữ lập trình hoàn chỉnh với sự hỗ trợ cho các cấu trúc điều khiển rất đơn giản. Shell phổ biến nhất là Bash (Bourne Again Shell). Hầu hết các tập lệnh đều được viết theo cú pháp của nó, nhưng cũng có những tập lệnh khác, chẳng hạn như cùng một loại cá, sh, zsh, dấu gạch ngang, v.v.
Cú pháp của các cấu trúc điều khiển Bash hơi khó hiểu, nhưng nhiều tập lệnh hệ thống được viết trong đó, trước hết là tất cả các tập lệnh khởi tạo daemon trong SysVinit, tập lệnh duy trì máy chủ, sao lưu, chạy chương trình, v.v. Mỗi quản trị viên đều có một số tập lệnh được viết bằng Bash.
kết luận
Đây không phải là tất cả các ngôn ngữ lập trình Linux được sử dụng để tạo chương trình trong Linux; Ruby gần đây đã bắt đầu được sử dụng để tạo tập lệnh; Perl đã lỗi thời; các ngôn ngữ lập trình cụ thể hơn như Go, R, Vala và những thứ khác cũng được sử dụng. Đối với nhu cầu của tôi, tôi sử dụng Python và php, còn bạn có viết chương trình cho Linux không? Ngôn ngữ lập trình nào? Viết trong các ý kiến!
Hướng dẫn này tiếp tục phần tổng quan của chúng tôi về Nền tảng khách hàng phong phú của Eclipse. Nó cho thấy cách sử dụng chế độ xem, hành động và trình hướng dẫn để tạo một ứng dụng hoàn chỉnh.
Bước 1 - Biên dịch chương trình trong C/C++ (30/01/2002 - 2 Kb)
Bước 2 - Thông tin gỡ lỗi (30/01/2002 - 4.2 Kb)
Bước 3 - Biên dịch một số file (15/02/2002 - 3.7 Kb)
Bước 4 - Thư viện tệp đối tượng (20/02/2002 - 3.0 Kb)
Bước 5 - Tạo thư viện tĩnh (20/02/2002 - 3.7 Kb)
Bước 6 - Tạo thư viện động (20/02/2002 - 5.2 Kb)
Bước 7 - Sử dụng thư viện động (23/02/2002 - 4.9 Kb)
Bước 8 - Các chức năng làm việc với thư viện động (23/02/2002 - 5.0 Kb)
Bước 9 - Khởi tạo thư viện động (27/02/2002 - 3.5 Kb)
Bước 10 - Chuyển các tùy chọn cho chương trình - getopt (15/10/2002 - 6.6 Kb)
Bước 11 - Truyền các tùy chọn dài cho chương trình - getopt_long (19/12/2002 - 11.2 Kb)
Bước 12 - Hiển thị thông báo lỗi chương trình (22/12/2002 - 7.5 Kb)
Bước 13 - Lấy thông tin người dùng (22/12/2002 - 10.2 Kb)
Bước 14 - Lấy dữ liệu từ mật khẩu ẩn (22/12/2002 - 5.5 Kb)
Bước 15 - Làm việc với mật khẩu hệ thống bằng hàm crypt() (24/12/2002 - 10.0 Kb)
Công cụ đồ họa là thư viện các quy trình cho phép bạn thêm một bộ chức năng cụ thể, sử dụng ngôn ngữ lập trình này để tích hợp giao diện đồ họa vào chương trình của bạn.
GCC
GCC là một trình biên dịch tuyệt vời, nhưng trang man không thân thiện với người dùng. Ghi chú nói về sự dễ sử dụng của trình biên dịch.
Trình biên dịch
Ngôn ngữ vỏ
Trình thông dịch ngôn ngữ lệnh Shell
Cùng một cuốn sách, nhưng ở dạng văn bản.
Biểu thức chính quy là công cụ mạnh mẽ nhất để làm việc với các chuỗi mà các lập trình viên hiện đại có thể nghĩ ra. Với sự trợ giúp của họ, bạn có thể phân tích chuỗi cho nội dung của chuỗi ký tự, thực hiện thay thế dựa trên lựa chọn này, chia chuỗi thành mảng, v.v.
Ngôn ngữ C và C++
Các tiện ích tạo ra, chẳng hạn như GNU make, System V make và Berkeley make, là những công cụ cơ bản cần thiết để đơn giản hóa quá trình xây dựng ứng dụng. Bài viết này sẽ giới thiệu cho các bạn cấu trúc của một makefile.
Bài viết này mô tả cách thiết lập môi trường phát triển cho bộ vi điều khiển Atmel AVR 8 bit.
Pascal và Delphi
ngôn ngữ Java
Ngôn ngữ JavaScript
Hãy tiếp tục cuộc trò chuyện về việc sử dụng tập lệnh trên các trang web. Và có lẽ chúng ta sẽ bắt đầu bằng cách viết một số hàm sẽ rất hữu ích cho chúng ta sau này.
Các ngôn ngữ kịch bản theo một cách nào đó đã đảo lộn thế giới và chính nhờ chúng mà DHTML xuất hiện, cho phép bạn thực hiện hầu hết mọi thứ với một trang. Như bạn đã biết, chỉ có hai ngôn ngữ được cho là kẻ chiến thắng trên trình duyệt. Đây là VBScript - một tập hợp con của Visual Basic và JavaScript. Đây là cái cuối cùng chúng ta sẽ giải quyết, vì nó là cái phổ biến nhất.
Perl
Sao chép
Bài viết này nhằm giúp “khởi đầu nhanh” cho những ai quyết định xây dựng ứng dụng Web “bằng chính đôi tay của mình” và chọn ngôn ngữ lập trình Perl (Practical Electric Rubbish Lister) làm phương tiện để tạo ra chúng.
PHP
Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng PHP để tạo ứng dụng hỗ trợ quy trình làm việc, tìm hiểu về xác thực HTTP, luồng dữ liệu, tạo đối tượng và xử lý ngoại lệ.
Trong hướng dẫn này, bạn sẽ học cách sử dụng PHP để tạo một ứng dụng hỗ trợ quy trình làm việc.
Trong hướng dẫn này, bạn sẽ học cách sử dụng PHP để tạo một ứng dụng quy trình công việc cơ bản, xây dựng các trang PHP bằng biểu mẫu HTML và truy cập cơ sở dữ liệu.
“Phần I
"Phần II
"Phần III "21 lỗi lập trình PHP hàng đầu" của Sterling Hughes, ngày 14 tháng 1 năm 2001 http://www.zend.com/zend/art/mistake2.php, Bản dịch: Danil Mironov.
"Chúng tôi viết mã PHP có khả năng chống lỗi"
Bài viết này thuộc loạt bài viết về “xây dựng trang web” hiện đại nói về hệ thống MySQL phổ biến và ngôn ngữ lập trình PHP, cách sử dụng chúng để giải quyết các vấn đề mà bất kỳ nhà phát triển trang web nào cũng gặp phải - chuẩn bị và hiển thị tin tức, nhập và hiển thị thông tin văn bản, tìm kiếm trên trang web, tổ chức các dịch vụ bổ sung ("sự công nhận" của khách truy cập, diễn đàn, khảo sát, v.v.). Cả hai công cụ này đều miễn phí và được cung cấp bởi tất cả các nhà cung cấp dịch vụ lưu trữ mà không có ngoại lệ.
Phần 1. Lần đầu làm quen với PHP và MySQL
Phần 2. Xung quanh có tin tức nhưng làm thế nào để nhập và hiển thị nó?
Phần 3. Bài viết cho trang
Phần 4. Dịch vụ bổ sung