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

Risto S. Varanka

    
   

Перевод: Александр Ермолаев, SWSoft Pte Ltd.

22 июля 2000г.

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


1. Введение

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

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

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

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


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

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


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:

  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.


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. Связь с автором

Вы можете послать свои отзывы и предложения автору по адресу: [email protected].

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


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

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


1.8. Ссылки

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

  • Freshmeat

  • Linux Development Tools

  • linuxprogramming.com

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. Основные языки


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

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

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

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

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

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

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

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

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


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. Ссылки

  • Общий информационный сайт по языкам программирования, большое количество информации и мнений.

  • TCL

  • Perl

  • Python

  • PHP

  • Java

  • clisp


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

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


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

Библиотеки

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

Начинающий

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

Лицензия

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

Язык

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

Связанные

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

Примеры

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

Комментарии

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


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

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


3.3. Ссылки

  • TK

  • GTK+

  • QT

  • Motif

  • GNUstep