- Mini-HOWTO по языкам программирования
- Risto S. Varanka
- Перевод: Александр Ермолаев, SWSoft Pte Ltd.
- 1. Введение
- 1.1. Новые версии этого документа
- 1.2. Copyright
- 1.3. License
- 1.3.1. Requirements of Modified Works
- 1.4. Авторские права
- 1.5. ОТВЕТСТВЕННОСТЬ
- 1.6. Связь с автором
- 1.7. Благодарности
- 1.8. Ссылки
- 2. Языки программирования
- 2.1. Принятые обозначения
- 2.2. Основные языки
- 2.3. Shell программирование
- 2.4. Другие языки
- 2.5. Ссылки
- 3. Средства разработки GUI
- 3.1. Принятые обозначения
- Популярные языки программирования Linux
- 3. Java
- 3. Python
- 4. jаvascript / GitHub Electron
- 5. Shell
- Выводы
Mini-HOWTO по языкам программирования
Risto S. Varanka
Перевод: Александр Ермолаев, SWSoft Pte Ltd.
Краткое сравнение основных языков программирования в Linux, а также библиотек для создания графических интерфейсов пользователя (GUIs) в Linux.
1. Введение
Linux можно назвать интерактивнай операционной системой, потому что она позволяет пользователям учавствовать в ее разработке. Для большинства начинающих разработчиков многие существующие языки программирования могут показаться очень сложными. Этот документ поможет вам разобраться в их преимуществах и недостатках (которые я отметил).
Моей целью не является выявление оптимального языка. Каждый из них является инструментом для решения определенных задач. Вы можете о них узнать у своих знакомых, но такая информация будет довольно спорной. Воспользовавшись главой, содержащей ссылки, вы можете самостоятельно получить информацию об этих языках.
Существует целая плеяда языков и библиотек для Linux, этот документ затрагивает лишь некоторые из них. Я постарался быть беспристрастным, но не смог сделать обозрение всех языков. Так как мои рассуждения основываются на личном опыте, то я бы посоветовал серьезным разработчикам заглянуть и на официальные сайты.
Этот документ один из последних добавлений в LDP, поэтому я еще не получил отзывов о его содержании. Тем не менее, надеюсь, он будет полезен всем интересующимся программированием в Linux, в особенности, начинающим. Знак вопроса в таблицах означает недостаток сведений. Если вы ей владеете, то проинформируйте меня об этом.
1.1. Новые версии этого документа
Вы можете найти последние версии по адресу http://www.helsinki.fi/
1.2. Copyright
Copyright (c) 2000 Risto Varanka.
1.3. License
The following license terms apply to all LDP documents, unless otherwise stated in the document. The LDP documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that this license notice is displayed in the reproduction. Commercial redistribution is permitted and encouraged. Thirty days advance notice via email to the author(s) of redistribution is appreciated, to give the authors time to provide updated documents.
1.3.1. Requirements of Modified Works
All modified documents, including translations, anthologies, and partial documents, must meet the following requirements:
The modified version must be labeled as such.
The person making the modifications must be identified.
Acknowledgement of the original author must be retained.
The location of the original unmodified document be identified.
The original author’s (or authors’) name(s) may not be used to assert or imply endorsement of the resulting document without the original author’s (or authors’) permission.
In addition it is requested that:
The modifications (including deletions) be noted.
The author be notified by email of the modification in advance of redistribution, if an email address is provided in the document.
As a special exception, anthologies of LDP documents may include a single copy of these license terms in a conspicuous location within the anthology and replace other copies of this license with a reference to the single copy of the license without the document being considered «modified» for the purposes of this section.
Mere aggregation of LDP documents with other documents or programs on the same media shall not cause this license to apply to those other works.
All translations, derivative documents, or modified documents that incorporate any LDP document may not have more restrictive license terms than these, except that you may require distributors to make the resulting document available in source format.
1.4. Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу
1.5. ОТВЕТСТВЕННОСТЬ
ЭТОТ ДОКУМЕНТ ОХВАТЫВАЕТ ОЧЕНЬ БОЛЬШУЮ И ПОСТОЯННО МЕНЯЮЩУЮСЯ ОБЛАСТЬ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ. ПО ЭТОЙ ПРИЧИНЕ, ИНФОРМАЦИЯ В ЭТОМ ДОКУМЕНТЕ МОЖЕТ БЫТЬ НЕВЕРНОЙ ИЛИ УСТАРЕВШКЙ. ИСПОЛЬЗУЙТЕ ЭТОТ ДОКУМЕНТ И ИНФОРМАЦИЮ, В НЕМ СОДЕРЖАЩУЮСЯ, ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК. АВТОР НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ, ПРЯМЫХ ИЛИ КОСВЕННЫХ.
1.6. Связь с автором
Вы можете послать свои отзывы и предложения автору по адресу: risto.varanka@helsinki.fi.
Домашняя страничка автора находится по адресу http://www.helsinki.fi/
1.7. Благодарности
Я благодарен нескольким людям, которые консультировали меня по вопросам различных языков. Эти консультации дали мне возможность рассмотреть все языки с точки зрения различных сторон применения. В особенности, я бы хотел поблагодарить людей из чата RCNet #linux: Morphy, Bluesmurf, Vadim, Zonkˆ, Rikkus и других, чьи имена я, к сожалению, не помню. Большое спасибо Stig Erik Sandoe за полезные советы и комментарии.
1.8. Ссылки
Исчерпывающий список библиотек и инструментов разработчика обеспечения в Linux:
The Hacker FAQ Это еще один интересный текст написанный Eric S. Raymond. Он написан для новичков в разработке программного обеспечения в Linux. Там затронуты аспекты культурного и психологического плана, в связи с разработкой программного обеспечения с общедоступными исходными текстами.
LDP documents покрывают общие темы программирования, включая Reading List HOWTO и Руководство разработчика в Linux (Linux Programmer’s Guide) — еще несколько написаны на более узкие темы.
2. Языки программирования
C, Lisp и Perl являются традиционными языками программирования в системе GNU/Linux; Python, PHP, Java и C++ присоединились к их числу совсем недавно.
2.1. Принятые обозначения
Указывает, насколько язык удовлетворяет потребности людей с небольшим опытом программирования. Язык, отмеченный «да», должен быть прост для изучения новичком.
Как быстро ваши приложения будут работать, когда вы выпустите их в виде готового продукта. Эффективность зависит более от личных навыков алгоритмического программирования, чем от фактического языка. Как правило, C, C++ и Fortran являются иногда необходимыми, потому что они могут решать больше задач, в отличии от других языков — с другой стороны они могут быть неприменимы для достижения желаемой цели. (Одна идея для тестирования языков состояла в том, чтобы осуществить простой алгоритм сортировки во всех из них, а затем сравнивать продолжительность выполнения задания. Кто-нибудь хочет помочь мне в этом?)
ООП, Объектно-ориентированное программирование против других парадигм
Объектно-ориентированное программирование — важная составляющая программирования, которая получает все большее распространение. В объектно-ориентированном программировании, структуры данных и алгоритмы интегрированы в модули, часто называемые классами. ООП часто контрастирует с процедурным программированием (которое использует разделение алгоритмов и структуры данных). Это строго не зависит от языка: вы можете осуществлять ООП на языках, не причисляемых к объектно-ориентированным (C например), и программирование в процедурном стиле на языках, причисляемых к ОО. Я причислил к объектно-ориентированным языки, которые имеют специальные особенности или расширения, чтобы облегчить ООП. Функциональные языки (Lisp например) являются иным — среди других, функциональное программирование — надмножество ООП. Логическое программирование (Prolog), также называемое декларативным программированием, с другой стороны, не связано с иными типами программирования, в подобном смысле.
RAD, Быстрая разработка приложений
Многое зависит от инструментальных средств, которые вы используете, а не от языка. Имеется HOWTO по инструментам разработки GUI для Linux, хотя уже устаревшее. С хорошим графическим инструментом вы можете быстро разрабатывать приложения. Иногда RAD основан на многократном использовании готового кода, тем более что свободно распространяемое ПО — хорошая основа для этого.
Области, в которых наиболее часто используется данный язык программирования. Другие области существуют, но в них применение данного языка не так ярко выражено.
Дополнительная информация относительно языка, «диалекты».
2.2. Основные языки
2.3. Shell программирование
Оболочки — это также важная среда программирования. Я не охватил эту область, потому что не до конца понимаю ее. Знание shell важно для любого, кто регулярно работает на Linux, особенно для системных администраторов. Имеются подобия между shell программированием и созданием скриптов (сценариев) — часто они могут достигать тех же самых целей, и вы можете выбирать между родной оболочкой и скрипт-языком. Среди наиболее популярных оболочек можно отметить bash, tcsh, csh, ksh и zsh. Вы можете получить основную информацию по вашей оболочке с помощью команды man например, man bash.
2.4. Другие языки
Другие языки: AWK, SED, Smalltalk, Eiffel, ADA, Prolog, assembler, Objective C, Logo, Pascal (p2c конвертер)
2.5. Ссылки
Общий информационный сайт по языкам программирования, большое количество информации и мнений.
3. Средства разработки GUI
Стандартные графические подсистемы для UNIX и Linux, называемые X(иксами), имеют свои собственные библиотеки для разработки GUI. Они обеспечивают программный интерфейс на низком уровне для X, но довольно сложны в использовании. Они, конечно, хороши для старых приложений, но в настоящее время используются GTK+ и Qt, так как их используют две популярные среды — GNOME и KDE.
3.1. Принятые обозначения
Общее название или аббревиатура библиотеки.
Подходит ли библиотека для начинающего программиста.
Различные лицензии для различных средств (инструментов) разработки GUI имеют практическое значение. Лицензии GTK+ и TK позволят вам разрабатывать приложения с открытыми исходными текстами и без них, без оплаты за лицензию. Лицензия Motif требует оплаты, лицензия QT требует оплаты, если вы распространяете приложения без исходных текстов.
Язык, который наиболее часто используется со средствами разработки.
Другие языки, которые могут использовать комплект инструментов.
Приложения, использующие библиотеку.
Дополнительная информация по средствам разработки.
Источник
Популярные языки программирования Linux
Linux быстро развивается и становиться все популярнее, особенно в связи с тем, что сокращается использование Windows, а также множество программистов работают над продвижением Linux, создавая новые программы для настольных компьютеров, которые будут эквивалентны или даже лучше приложений в Windows и Mac OS X.
Большое количество дистрибутивов пытаются сделать Linux более легким для новых пользователей, которые раньше использовали Linux или Mac OS X. Это еще лучше способствует продвижению Linux в массы.
Для Linux есть множество языков программирования, и более того, каждый год появляются новые. Но не все их используют программисты, ведь для того, чтобы создать надежное, гибкое, эффективное и расширяемое, а главное, безопасное приложение, нужно подобрать правильный язык.
В этой статье мы рассмотрим самые популярные языки программирования для Linux. Рассмотрим те, на которых разработана эта операционная система и те, которые используются для создания приложений. На самом деле список не отсортирован по степени важности, все используемые здесь языки хороши. Все они кроссплатформенные, и вы можете написать на них программу для любой из доступных операционных систем.
Я не преувеличу, если скажу, что этот язык был создан для этой операционной системы. Это уже старый язык. Он создавался в семидесятых годах инженером из Bell Labs Денисом Ритчи специально для написания ядра Unix. Дело в том, что в те времена программы и операционные системы писались на ассемблере и нужно было для каждой архитектуры писать программу отдельно, потому что наборы инструкций отличались. Разработчикам Unix нужен был высокоуровневый язык программирования, на котором они смогли бы написать Unix один раз и собирать его для всех платформ. Таким языком стал Си.
Ядро Linux, основано на Unix, а поэтому тоже написано на Си, также на Си реализованы все модули ядра, драйверы, а также огромное количество системного программного обеспечения. Если вы задавались вопросом, на чем написан Linux то теперь знаете ответ. На Си разработаны множество утилит из набора GNU, X сервер, набор библиотек для работы с графикой GTK и многое другое, некоторые оконные менеджеры. Но для написания новых программ Си используется все реже, ему на замену пришла его объективно ориентированная модификация С++.
Это усовершенствованная версия Cи, появился он ненамного позже си. В 1980 году Бьёрн Страуструп работал над своим исследованием и ему не хватало стандартных возможностей Си, поэтому он придумал к нему пару улучшений. Неожиданно этот язык стал популярен среди его коллег и он уже не мог сам следить за его развитием.
Теперь это один из самых популярных языков программирования. Здесь доступно как объективно ориентированное, так и процедурные стили программирования. Правда, он все же очень сложен для новичков, как и Си. Здесь нужна очень высокая точность при управлении памятью.
На C++ написано много программного обеспечения в Linux, это те же самые утилиты GNU, много пользовательских программ, графические окружения, браузеры. На C++ написан графический фреймворк Qt, который сейчас используется для окружения рабочего стола KDE и большого количества кроссплатформенных программ. Qt — одновременно коммерческий и некоммерческий проект. Если вы разрабатываете свободное ПО, то можете использовать Qt бесплатно, нет — нужно платить за лицензию. Qt намного проще для начинающих чем чистый Си или С++.
Си и С++ наиболее популярные языки программирования для linux
3. Java
Это мощный и полностью объективно-ориентированный, кроссплатформенный язык программирования в котором есть широкие возможности для создания как приложений для рабочего стола, так и сетевых и веб-приложений.
Изначально Java был разработан в девяностых годах компанией Sun Microsystems для встраиваемых устройств с низкой вычислительной мощностью. Для мобильных телефонов, микроконтроллеров и другого оборудования. Его цель была поднять кроссплатформенность на новый уровень. Программа пишется на java, преобразуется в байт код, которой Java машина может выполнять вообще на любом оборудовании независимо от архитектуры и возможностей. Затем Java начал использоваться для создания веб-апплетов в браузерах, а потому же начали создаваться настольные приложения.
Java — один из лучших языков программирования, особенно если вы собираетесь разрабатывать приложения, которые будут работать везде. Java очень выгодна в плане переносимости, вы можете без изменений выполнять программу в Windows или Linux также она более безопасна, ведь программа выполняется в виртуальной машине и мы можем контролировать все ее действия. Но недостатком есть большое потребление памяти и низкая производительность по сравнению с Си.
На Java пишется не так много программ, но среди них есть и известные, это такие среды разработки, как Netbeans, Eclipse, InteljIDE. Некоторые производители оборудования выпускают утилиты для управления своим оборудованием на Java, чтобы они могли одинаково хорошо работать в Linux. На Java написано много простых игр, а также она вовсю используется в операционной системе Android.
3. Python
Python — это интерпретируемый язык высокого уровня общего назначения. Он разработан человеком по имени Гвидо Ван Россум в начале восьмидесятых годов, он работал над языком в свободное время, и ставил цель создать язык для обучения программированию.
Основная идея Python — простота, максимальная скорость разработки, минимум ошибок, минимум неопределенности. Сам синтаксис языка способствует тому чтобы вы писали правильно и не допускали ошибок. Это мгновенно сделало Python одним из самых популярных языков. Было разработано множество библиотек для работы с системными компонентами, реализаций алгоритмов и наборов API для работы с сетевыми сервисами. Сейчас на Python можно написать как веб-сайт, так и полноценное Qt приложение, доказательство первому — множество сайтов, в том числе Яндекс, а второму популярный видеоредактор OpenShot.
К тому же на Python написано бесчисленное количество системных скриптов и утилит для управления Linux. Это утилита apt для установки программного обеспечения в Ubuntu, пакетный менеджер Emerge в Gentoo и еще огромное количество небольших скриптов. Причина тому простота языка. Программист тратит на программу несколько часов, а она отлично работает несколько лет.
4. jаvascript / GitHub Electron
jаvascript — это в первую очередь язык программирования для создания динамических веб-страниц, разработанный специально для этой цели в середине девяностых Бренданом Эйхом в компании Netscape. До недавнего времени jаvascript так и использовался для генерации динамических веб-страниц на стороне клиента и в веб-приложениях. Но затем появился проект Node.js, позволяющий разрабатывать серверные программы на jаvascript. Совсем недавно компания GitHub создала фреймворк Electron, на базе Node.js, с помощью которого теперь jаvascript может использоваться для создания десктопных приложений.
Electron позволяет использовать технологии HTML, CSS, jаvascript для создания прекрасных программ для рабочего стола. Эта платформа активно поддерживается командой GitHub и сообществом.
Хотя платформа вышла совсем недавно, на ней уже написано до сотни приложений, среди самых известных можно отметить редакторы сходного кода Atom и LightTable, а также приложение для управления сайтом WordPress, и новое приложение для чата RocketCaht. Кроме того, jаvascript используется для разработки программ рабочего стола на платформе Chromium, таких программ намного больше, тот же редактор Brackets, такие полезные утилиты, как Google Keep, Pocket, Wunderlist и другие программы из магазина Chrome.
5. Shell
Команды терминала Linux позволяют не только выполнять повседневные операции в интерактивном режиме, но это также полноценный язык программирования с поддержкой самых простых управляющих конструкций. Наиболее распространенная оболочка Bash (Bourne Again Shell) Больше всего скриптов написаны именно на ее синтаксисе, но есть и другие, например, тот же fish, sh, zsh, dash и т д.
Синтаксис управляющих конструкций Bash немного сложный для понимания, но на нем написано много системных скриптов, это в первую очередь все скрипты инициализации демонов в SysVinit, скрипты для обслуживания серверов, резервного копирования, запуска программ и т д. У каждого администратора есть несколько скриптов, написанных на Bash.
Выводы
Это далеко не все языки программирования linux, которые используются для создания программ в Linux, очень часто для создания скриптов в последнее время начал использоваться Ruby, уже выходит из моды Perl также применяются такие более специфические языки программирования как Go, R, Vala и другие. Для своих нужд я использую Python и php, а вы пишите программы для Linux? На каких языках программирования? Напишите в комментариях!
Источник