GetInfo.Ru – Компьютерная библиотека
Последние поступления
Как выбрать систему управления базы данных
Базы данных03/09/14
Этапы загрузки UNIX (в схеме)
Unix27/03/12
Gatewall Antispam: тотальный контроль электронной почты
Спам21/04/11
Мастер-класс: создаем Интернет-магазин (Часть 1)
Обзоры ПО20/04/11
CorelDRAW Graphics Suite X5: Что нового?
Обзоры ПО20/07/10
Добавить статью
Самые читаемые материалы
Проверка e-mail адреса на существование(32661)
Строим календарь для сайта на Perl(11989)
Web Основы с LWP(11560)
Построение крупно-масштабного e-commerce сайта на Apache и mod_perl(11431)
Image::Magick или фотошоп для perl(9756)
Всего статей: 793Всего авторов: 364Подразделов: 47Добавлено за сутки: 0
Статьи  СТАТЬИ Форум  ФОРУМ Рейтинг  РЕЙТИНГ Поиск  ПОИСК Контакты  КОНТАКТЫ
» Главная » Perl » Сравнительная Религия

Сравнительная Религия


Александр Кубышкин
cub@mobi.spb.ru

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

Кто-то из стариков сказал: "за все браться и ничего не уметь". Подобно многим программистам, у меня были дни 4 языков - дни, когда я писал на 4 различных языках. Это частенько необходимо. Однако, чем больше вы уделяете внимания одному языку, тем лучше вы его знаете и тем больше вы сможете сделать за меньшее время. Поэтому я предлагаю вам выбрать ваш "основной язык" - это тот язык, который вы используете для всего, если только нет веского повода использовать что-то другое.

Мой основной язык Perl. Он установлен почти на всех UNIX, Linux и BSD машинах и поэтому я действительно могу "написать однажды, запускать везде". Он также доступен бесплатно или за небольшую плату (например $39.00) для Windows от ActiveState, а также с открытым кодом от Siemens, называемый SiePerl. Благодаря встроенным регулярным выражениям, слабому типизированию и многочисленным шоткатам(shortcuts), разработка ведется подобно молнии. Фаза отладки занимает больше времени, чем мне хотелось бы, но я могу жить с этим. Не в пример многим языкам, поставляемым с Linux, знание Perl действительно ведет к оплачиваемой работе.

Это все мои мысли.

Обсуждения языков программирования похожи на релегиозные обсуждения - живо, яростно и упрямо. Эта статья обсуждает C, C++, Java, Python, Ruby, TCL, QT, gTk, bash и Perl. По-моему это превосходные языки. В прошлом я писал на плохих языках, поэтому я узнаю собаку, когда ее вижу и ни один из них не собака (в оригинале "so I know a dog when I see one, and none of these is a dog" - может быть слово "собака" надо было заменить на слово "сука"? - прим. перев.).

Я написал сотни тысяч строк на C, C++ и Perl, десятки тысяч на Java и Python и тысячи строк на bash. У меня есть знания Ruby, потому что он похож на C++, Java и Python. Я знаю немного gTK и QT и немного знаком с TCL.

Далее идет небольшое сравнение упомянутых языков.

Язык Описание Преимущества Недостатки Доступность
C
Небольшой, прекрасный компилятор в машинные коды.
  • Создает быстровыполяемые программы.
  • Полный доступ к железу, памяти и I/O.
  • Строгая типизированность защищает от ошибок.
  • Небольшое количество конструкций высокого уровня делают разработку меннее эффективной.
  • Частое использование указателей памяти и необходимость управления распределением памяти для программиста часто приводит к ошибкам.
  • Строгая типизированность тормозит разработку.
  • Установлен по умолчанию на всех UNIX/Linux/BSD машинах. Может быть приобретен для Windows.
    C++
    C + ООП
  • Все преимущества C, хотя более медлителен.
  • Классы и объекты делают программы более масштабируемыми.
  • Строгая типизированность защищает от ошибок.
  • Полная объектная инкапсуляция делает программы более надежными, исключая проблемы с указателями и переполнением буфера.
  • Те же недостатки как у C.
  • Установлен по умолчанию на всех UNIX/Linux/BSD машинах. Может быть приобретен для Windows.
    Java Машинно-независимый язык, компилируемый в специальный байткод. Изначально создавался объектно-ориентированным.
  • Масштабируемый до гигантских проектов, благодаря врожденному ООП.
  • Встроенная сборка мусора в памяти и отсутствие указателей минимизируют количество ошибок.
  • Фаза отладки Java программ невероятно быстра.
  • Строгая типизированность защищает от ошибок.
  • Полная объектная инкапсуляция делает программы более надежными.
  • Гигантский рынок для Java программистов.
  • Скорость выполнения может быть очень медленной.
  • Даже простая программа требует ООП, поэтому простые программы не так просты, как вам бы этого хотелось.
  • Строгая типизированность тормозит разработку.
  • Доступен для всех платформ.
    Python Широко распространенный интерпретатор, хорошо интегрированный с ООП.
  • Хорошая интеграция с ООП делает Python масштабируемым до довольно крупных проектов.
  • Встроенная сборка мусора в памяти и отсутствие указателей минимизируют количество ошибок.
  • Отсутствие проверки типов позволяет быстрее разрабатывать программы.
  • Инкапсуляция объектов доступна, если вы знаете как (__переменная), поэтому вы можете писать отличные, надежные программы.
  • Вложенность Python, чувствительная к отступу, делают его самым читабельным языком на планете.
  • Отсутствие проверки типов потворствует появлению трудноуловимых ошибок.
  • Скорость выполнения не может стравниться с C или C++.
  • Почти нет рынка для Python программистов.
  • Доступен на UNIX, Linux, BSD and Windows. Поставляется со многими Linux дистрибутивами, но часто не устанавливается.
    Ruby Интерпретатор, построенный снизу вверх, с мыслями об ООП. Что-то похожее на Perl и Python.
  • Хорошая интеграция с ООП делает Ruby масштабируемым до довольно крупных проектов.
  • Встроенная сборка мусора в памяти и отсутствие указателей минимизируют количество ошибок.
  • Отсутствие проверки типов позволяет быстрее разрабатывать программы.
  • Объектная инкапсуляция позволяет делать надежные программы.
  • Скорость выполнения не может стравниться с C или C++.
  • Нулевой рынок для Ruby программистов.
  • Доступен на Linux, но редко установливаемый. На других платформах каждый может скомпилировать рабочий вариант и установить.
    TCL Интерпретатор, чей синтаксис и использование очень различается для С или других языков, обсуждаемых здесь. Те, кто знает как, могут писать реальные программы всего из нескольких строк TCL, но не очень масштабируемые.
  • Реальные программы могут быть написаны, используя несколько TCL операторов.
  • Нет ООП и не очень масштабируемый.
  • TCL редко используется и рынок TCL программистов довольно мал.
  • Поставляется и обычно устанавливается на Linux. Доступен для других платформ, включая Windows.
    QT Компилируемый язык, спроектированный для создания графических приложения.
  • Создает быстрые и эфективные графические приложения.
  • Трудный для использования.
  • Поставляется с Linux, доступный посредством компиляции на большинстве других платформ.
    gTk
    Компилируемый язык, спроектированный для создания графических приложения.
  • Создает быстрые и эфективные графические приложения.
  • Трудный для использования.
  • Поставляется с Linux, доступный посредством компиляции на большинстве других платформ.
    bash Командный интерпретатор может быть использован как язык.
  • Выдающаяся модульность достигнута путем разделения на исполняемые файлы, piping и перенаправление.
  • Контроль качества прост, если вы собираете программу из протестированных, хорошо известных программ.
  • Безцикловая производительность так быстра, насколько быстро ее вызывает оптимизированная программа.
  • Доступен очень рано в процессе загрузки, поэтому bash-скрипты могут быть использованы для контроля загрузки.
  • Скорость циклов неприемлемо низка.
  • Синтаксис раздражающе непривычный.
  • Нет ООП.
  • Мало поддержки комплексных структур данных.
  • Установлен на всех Linux машинах. Bash или что-то очень подобное установлен почти на всех UNIX и BSD машинах. Может быть установлен на Windows машинах.
    Perl

    Замечание: эта оценка справедлива только для 5 версии.
    Интерпретатор, оптимизированный делать большие вещи несколькими строками. ООП добавлено позже.
  • Доступность ООП делает Perl масштабируемым до средних размеров проектов.
  • Встроенная сборка мусора в памяти и отсутствие указателей минимизируют количество ошибок.
  • Отсутствие проверки типов позволяет быстрее разрабатывать программы.
  • Используется повсеместно во всем UNIX/Linux/BSD мире.
  • Perl программа вероятно запускается на любой машине.
  • Солидный рынок на знания Perl.
  • Очень быстрый для интерпретатора.
  • Репозитарий Perl модулей CPAN содержит инструменты, делающие легким почти все, что вам нужно.
  • Отсутствие инкапсуляции и закрытых переменных могут приводить к ошибкам в крупных проектах.
  • Философия "много путей, чтобы выполнить задачу" приводит к нечитаемому коду, трудностям в отладке и отсутствию "лучшей практики".
  • Отсутствие "лучшей практики" приводит к весьма плохому коду Perl.
  • Устанавливается по умолчанию на всех Linux, BSD и Unix машинах. Доступен для Windows и других платформ.


    Лучше выбрать основной язык, чтобы использовать его в тех случаях, когда нет веских причин использовать какой-нибудь другой язык. Язык, который я выбрал в качестве основного - Perl.

    Perl не совершенство. Он даже не язык, который мне больше нравится. Я предпочитаю Python. Но я выбираю Perl перед Python по следующим причинам:

    1. Perl наверняка будет установлен на большинстве машин.
    2. Perl библиотека CPAN - это одна из самых полных и может быть использована, чтобы выполнить почти все на Perl.
    3. Реально есть оплачиваемая работа на Perl.

    Многим людям нравится Ruby, потому что его ООП from the ground up, и он очень мощный язык. Однако те же 3 причины, по которым я выбрал Perl перед Python дважды применимы к Ruby.

    Выбор Perl перед Python и Ruby - это непростой случай. Выбор Perl перед C, C++ и Java намного больше поддерживаемый.

    C and C++ требуют от программиста удалять выделенную память и они зависят от указателей на память. Эти два фактора почти гарантия ошибок в любой C или C++ программе. Я имею ввиду ошибки, которые переживают стадию отладки при разработке и видны пользователю. Во многих случаях, эти ошибки используются кракерами, как ошибки переполнения буфера. Также, C и C++ предлагают мало конструкций высокого уровня, поэтому программист должен строить каждое приложение из набросков. Perl, особенно усиленный репозитарием CPAN, позволяет вести очень быструю разработку.

    Теперь Java. Java - это чудесный язык, с преимуществами Perl'а управления памятью и отсутствием указателей. Java так организованный язык, что он почти отлаживает(debug) себя. Фаза отладки в Java НАМНОГО более быстрая, чем в Perl. Исключая фазу кодирования. Java огромен. Нужно выучить тонны всего. И он поддерживает только ООП подход, это значит, что в любом проекте вы должны использовать объекты. Hello World требует ООП код. И потом, имеет значение производительность Java. Получаем лучше, но все еще медленно.

    gTk и QT просто слишком запутанны для меня, чтобы тратить время на обучение. Bash - прекрасный, пока программа остается меньше ста строк. TCL слишком отличен - я использую языки, произошедшие от Pascal - C, C++, Java, Perl, Python, Ruby, VB, etc. Дайте мне Lisp, Prolog или да, TCL, и я новичок опять.

    Как Выбрать Свой Основной Язык
    Каковы ваши приоритеты? Вы пишите в основном драйверы устройств? Если так, вам нужен C. Ваши приоритеты быстрая разработка и свобода от багов? Держитесь подальше от С и С++. Ваш главный приоритет получить работу? У меня есть одно слово для вас - Java! Или С#, если вы двигаетесь в эту сторону. Вы хотите самый читабельный язык, когда либо созданный и получить прекрасное ООП, быструю разработку и свободу от багов? Python! Вы хотите ООП язык from the ground up? Java или Ruby. Вам нужен самый распространенный интерпретатор в мире UNIX, с быстрой разработкой и свободой от ошибок памяти? Perl.

    Я хотел бы предостеречь вас, что это может быть большое горе, работать с языком, который никто другой не использует. У меня есть приятель, кто работает с языком, называющимся REBOL. Он может долго о нем рассказывать и хвастается своей работой на обычных основаниях. Это не хорошо - REBOL стоит денег, поэтому мы все используем C, Java, Perl, Python и Ruby. У него нет сообщества, от которого копить знания. Мои друзья в одиночестве прогуливаются по его миру.

    Замечания, неточности и дополнения, а также слова благодарности и справедливая критика принимаются по адресу: cub@mobi.spb.ru

    Оригинал: November 2003 Linux Productivity Magazine: Perl
    Автор: Copiright © 2003 Стив Лит(Steve Litt)
    Перевод: Copiright © 2003 Александр Кубышкин
    Дата: 8 января 2004

     
    23.01.2004
    Версия для печати Версия для печати Запомнить ссылку Запомнить ссылку
    Ваша оценка:  1   2   3   4   5     

     О проектеПерепечаткаАвторамПартнерыО нас пишут
    Наверх
    ©2003—2007. GETINFO.RU. ВСЕ ПРАВА ЗАЩИЩЕНЫ.