Mini-HOWTO по языкам программирования

Краткое сравнение основных языков программирования в Linux, а также библиотек для создания графических интерфейсов пользователя (GUIs) в Linux.

[Risto S. Varanka. Перевод Александр Ермолаев (ave@asplinux.ru)]

Mini-HOWTO по языкам программирования

Аннотация

Краткое сравнение основных языков программирования в Linux, а также библиотек для создания графических интерфейсов пользователя (GUIs) в Linux.


Введение

Linux можно назвать интерактивнай операционной системой, потому что она позволяет пользователям учавствовать в ее разработке. Для большинства начинающих разработчиков многие существующие языки программирования могут показаться очень сложными. Этот документ поможет вам разобраться в их преимуществах и недостатках (которые я отметил).

Моей целью не является выявление оптимального языка. Каждый из них является инструментом для решения определенных задач. Вы можете о них узнать у своих знакомых, но такая информация будет довольно спорной. Воспользовавшись главой, содержащей ссылки, вы можете самостоятельно получить информацию об этих языках.

Существует целая плеяда языков и библиотек для Linux, этот документ затрагивает лишь некоторые из них. Я постарался быть беспристрастным, но не смог сделать обозрение всех языков. Так как мои рассуждения основываются на личном опыте, то я бы посоветовал серьезным разработчикам заглянуть и на официальные сайты.

Этот документ один из последних добавлений в LDP, поэтому я еще не получил отзывов о его содержании. Тем не менее, надеюсь, он будет полезен всем интересующимся программированием в Linux, в особенности, начинающим. Знак вопроса в таблицах означает недостаток сведений. Если вы ей владеете, то проинформируйте меня об этом.


Новые версии этого документа

Вы можете найти последние версии по адресу http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/


Copyright

Copyright (c) 2000 Risto Varanka.


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.


Requirements of Modified Works

All modified documents, including translations, anthologies, and partial documents, must meet the following requirements:

  1. The modified version must be labeled as such.

  2. The person making the modifications must be identified.

  3. Acknowledgement of the original author must be retained.

  4. The location of the original unmodified document be identified.

  5. 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:

  1. The modifications (including deletions) be noted.

  2. 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.


Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу


ОТВЕТСТВЕННОСТЬ

ЭТОТ ДОКУМЕНТ ОХВАТЫВАЕТ ОЧЕНЬ БОЛЬШУЮ И ПОСТОЯННО МЕНЯЮЩУЮСЯ ОБЛАСТЬ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ. ПО ЭТОЙ ПРИЧИНЕ, ИНФОРМАЦИЯ В ЭТОМ ДОКУМЕНТЕ МОЖЕТ БЫТЬ НЕВЕРНОЙ ИЛИ УСТАРЕВШКЙ. ИСПОЛЬЗУЙТЕ ЭТОТ ДОКУМЕНТ И ИНФОРМАЦИЮ, В НЕМ СОДЕРЖАЩУЮСЯ, ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК. АВТОР НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ, ПРЯМЫХ ИЛИ КОСВЕННЫХ.


Связь с автором

Вы можете послать свои отзывы и предложения автору по адресу: risto.varanka@helsinki.fi.

Домашняя страничка автора находится по адресу http://www.helsinki.fi/~rvaranka/.


Благодарности

Я благодарен нескольким людям, которые консультировали меня по вопросам различных языков. Эти консультации дали мне возможность рассмотреть все языки с точки зрения различных сторон применения. В особенности, я бы хотел поблагодарить людей из чата RCNet #linux: Morphy, Bluesmurf, Vadim, Zonk^, Rikkus и других, чьи имена я, к сожалению, не помню. Большое спасибо Stig Erik Sandoe за полезные советы и комментарии.


Ссылки

Исчерпывающий список библиотек и инструментов разработчика обеспечения в Linux:

The Hacker FAQ Это еще один интересный текст написанный Eric S. Raymond. Он написан для новичков в разработке программного обеспечения в Linux. Там затронуты аспекты культурного и психологического плана, в связи с разработкой программного обеспечения с общедоступными исходными текстами.

LDP documents покрывают общие темы программирования, включая Reading List HOWTO и Руководство разработчика в Linux (Linux Programmer's Guide) - еще несколько написаны на более узкие темы.


Языки программирования

C, Lisp и Perl являются традиционными языками программирования в системе GNU/Linux; Python, PHP, Java и C++ присоединились к их числу совсем недавно.


Принятые обозначения

Язык

Название языка.

Начинающий

Указывает, насколько язык удовлетворяет потребности людей с небольшим опытом программирования. Язык, отмеченный ``да'', должен быть прост для изучения новичком.

Эффективность

Как быстро ваши приложения будут работать, когда вы выпустите их в виде готового продукта. Эффективность зависит более от личных навыков алгоритмического программирования, чем от фактического языка. Как правило, C, C++ и Fortran являются иногда необходимыми, потому что они могут решать больше задач, в отличии от других языков - с другой стороны они могут быть неприменимы для достижения желаемой цели. (Одна идея для тестирования языков состояла в том, чтобы осуществить простой алгоритм сортировки во всех из них, а затем сравнивать продолжительность выполнения задания. Кто-нибудь хочет помочь мне в этом?)

ООП, Объектно-ориентированное программирование против других парадигм

Объектно-ориентированное программирование - важная составляющая программирования, которая получает все большее распространение. В объектно-ориентированном программировании, структуры данных и алгоритмы интегрированы в модули, часто называемые классами. ООП часто контрастирует с процедурным программированием (которое использует разделение алгоритмов и структуры данных). Это строго не зависит от языка: вы можете осуществлять ООП на языках, не причисляемых к объектно-ориентированным (C например), и программирование в процедурном стиле на языках, причисляемых к ОО. Я причислил к объектно-ориентированным языки, которые имеют специальные особенности или расширения, чтобы облегчить ООП. Функциональные языки (Lisp например) являются иным - среди других, функциональное программирование - надмножество ООП. Логическое программирование (Prolog), также называемое декларативным программированием, с другой стороны, не связано с иными типами программирования, в подобном смысле.

RAD, Быстрая разработка приложений

Многое зависит от инструментальных средств, которые вы используете, а не от языка. Имеется HOWTO по инструментам разработки GUI для Linux, хотя уже устаревшее. С хорошим графическим инструментом вы можете быстро разрабатывать приложения. Иногда RAD основан на многократном использовании готового кода, тем более что свободно распространяемое ПО - хорошая основа для этого.

Примеры

Области, в которых наиболее часто используется данный язык программирования. Другие области существуют, но в них применение данного языка не так ярко выражено.

Комментарии

Дополнительная информация относительно языка, "диалекты".


Основные языки


PERL
Начинающий: Да - ООП: Да
Примеры: Создание скриптов, системное администрирование, веб-программирование
Комментарии: Мощный для обработки текста и строк, очень популярный

Python
Начинающий: Да - ООП: Да
Примеры: Создание скриптов, системное администрирование, веб-программирование
Комментарии:

TCL
Начинающий: Да - ООП: Нет
Примеры: Создание скриптов, системное администрирование, создание приложений
Комментарии:

PHP
Начинающий: Да - ООП: Да
Примеры: веб-программирование
Комментарии: Популярен для работы с базами данных в веб

Java
Начинающий: Да - ООП: Да
Примеры: Кросс-платформенный приложения, веб-программирование
Комментарии:

Lisp
Начинающий: Да - ООП: Функциональный
Примеры: Режимы Emacs (для elisp)
Комментарии: Варианты Elisp, Clisp и Scheme

Fortran
Начинающий: Нет  - ООП: Нет
Примеры: Математические приложения
Комментарии: Варианты f77 и f90/95

C
Начинающий: Нет  - ООП: Нет
Примеры: Системное программирование, создание приложений
Комментарии: Очень популярный

C++
Начинающий: Нет  - ООП: Да
Примеры: Создание приложений
Комментарии:


Shell программирование

Оболочки - это также важная среда программирования. Я не охватил эту область, потому что не до конца понимаю ее. Знание shell важно для любого, кто регулярно работает на Linux, особенно для системных администраторов. Имеются подобия между shell программированием и созданием скриптов (сценариев) - часто они могут достигать тех же самых целей, и вы можете выбирать между родной оболочкой и скрипт-языком. Среди наиболее популярных оболочек можно отметить bash, tcsh, csh, ksh и zsh. Вы можете получить основную информацию по вашей оболочке с помощью команды man например, man bash.


Другие языки

Другие языки: AWK, SED, Smalltalk, Eiffel, ADA, Prolog, assembler, Objective C, Logo, Pascal (p2c конвертер)


Ссылки


Средства разработки GUI

Стандартные графические подсистемы для UNIX и Linux, называемые X(иксами), имеют свои собственные библиотеки для разработки GUI. Они обеспечивают программный интерфейс на низком уровне для X, но довольно сложны в использовании. Они, конечно, хороши для старых приложений, но в настоящее время используются GTK+ и Qt, так как их используют две популярные среды - GNOME и KDE.


Принятые обозначения

Библиотеки

Общее название или аббревиатура библиотеки.

Начинающий

Подходит ли библиотека для начинающего программиста.

Лицензия

Различные лицензии для различных средств (инструментов) разработки GUI имеют практическое значение. Лицензии GTK+ и TK позволят вам разрабатывать приложения с открытыми исходными текстами и без них, без оплаты за лицензию. Лицензия Motif требует оплаты, лицензия QT требует оплаты, если вы распространяете приложения без исходных текстов.

Язык

Язык, который наиболее часто используется со средствами разработки.

Связанные

Другие языки, которые могут использовать комплект инструментов.

Примеры

Приложения, использующие библиотеку.

Комментарии

Дополнительная информация по средствам разработки.


Основные средства разработки GUI

Библиотеки Начинающий Лицензия Язык Связанные Примеры Комментарии
TK Да Бесплатная TCL Perl, Python, другие make xconfig, TKDesk  
GTK+ Нет Бесплатная (LGPL) C Perl, C++, Python, многие другие GNOME, Gimp Очень популярна
QT No Бесплатные исходники C++ Python, Perl, C, другие? KDE Очень популярна
Motif Нет Покупается C/C++ Python, другие? Netscape, Wordperfect Lesstif бесплатная версия (может заменить коммерческую)
GNUstep Нет Бесплатная (LGPL) Объектный C Guile, Java? не распространенная, но вы можете просмотреть область применения GNUstep до сих пор находится в стадии разработки
           

[Источник: www.linuxdoc.ru]

[ опубликовано 24/10/2003 ]

Risto S. Varanka. Перевод Александр Ермолаев (ave@asplinux.ru) - Mini-HOWTO по языкам программирования   Версия для печати