Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Abu Antos' ([info]syarzhuk)
@ 2005-02-22 06:58:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Музыка:Throbbing Gristle-Greatest Hits (Entertainment Through Pain)

[Programmism] Выбор языка для Web-программирования
Свинский Хамелеон [info]porkchameleon@lj спрашивает:
во ты можешь объективно и кратко объяснить тупому - почему везде они требуют ASP(.NET)?
Меня заебало читать безликое фуфло, пропагандирующее Майкрософт, я хочу человеское мнение.

Наш ответ Чемберлену Свинскому Хамелеону:

Элементарно, Ватсон.
Начнём с азов. Большинство людей, именующих себя программистами после окончания колледжа, уверены в одном из двух:
- либо им придётся писать решения совершенно новых задач (типа систем управления реакторами термоядерного синтеза), причём очень важна будет производительность программы и маленький объём используемой ею памяти.
Это подход, вдолбленный в курсы Computer Science в 1960-е, да так там и оставшийся. Тогда действительно большинство задач были новыми, а ресурсы компьютера - маленькими и, что важно, намного дороже времени программиста. Естественным образом из него выросли язык ассемблера и K&R C;
- либо задачи будут достаточно типовые, но большие, программированию будет предшествовать долгий процесс планирования, после чего программисту будет вручена спецификация и год-два-три его никто не будет тревожить. Каждое изменение будет сопровождаться не менее подробной спецификацией. Это подход, выработанный распространением компьютеров в бизнесе в 1970-е. Из него выросли PL/1 и COBOL.

На самом деле всё совсем не так. Абсолютно новых задач очень мало, большинство переизобретает велосипед или придумывает новые способы склейки готовых кусочков. Что важно, компьютеры стали дешёвыми, а программисты - дорогими. Вместо того, чтобы заставить программиста тратить несколько дней на то, чтобы уменьшить потребляемый программой объём памяти, дешевле купить дополнительный SIMM каждому из пользователей. Real life story - у меня как-то была прога, которая классно шла у меня на тестовом объёме данных, но вылетала у пользователя на реальном; после несколький дней борьбы, включившей в себя перекомпиляцию с отладочной информации и пошаговый проход в Turbo Debugger'e, я смог показать, что вылетает библиотечный вызов, который я вылечить, естественно, не мог; исправилось апгрейдом памяти с 8 Мб до 16 - даже тогда (1997) это было меньше $100

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

Очевидным образом, интерпретируемые языки делают компилируемые. The faster the Edit-Compile-Test loop, the more productive you will be. Опять-таки не для всех задач, но для большинства (и для подавляющего большинства Web-приложений).

Языки с понятным синтаксисом (Pascal, Basic) бьют языки с непонятным синтаксисом (C, Perl). Perl - штука замечательная, но это не язык, а целая философия, и иногда она даёт странные плоды: 1, 2).

Язык не должен требовать много лишнего для простых программок. Потому Java, где для простого Hello, World! нужно как минимум поключить 8 библиотек и написать новый класс с новым методом, идёт лесом.

Что имеем в сухом остатке? Для быстрого Web-программирования нужен язык, который:
1) интерпретируемый
1б) сам управляет распределением памяти и сборкой мусора
2) не требует больше 3-х строчек для того, чтобы написать Hello, World
3) не имеет странного и неочевидного синтаксиса
3б) желательно не зависит от регистра (возможность определять разные переменные под именем i и I, наверное, была жутко нужна Томпсону и Ричи, но зачем она сейчас?)

Грубо говоря, после отброса всех альтернатив приходим к следующему списку (я здесь не буду говорить за .Net . Я с этой платформой ещё не работал, и делать выводы на основании чтения статей не хочу и не буду):
- ASP с VBScript'ом;
- PHP;
- всякая экзотика типа Tcl/Tk, Python, Ruby;
- с натяжкой Java Server Pages;
- с натяжкой ASP с JScript'ом;

Далее, при выборе платформы руководствуются чем? Правильно, возможностью поддержки. А это исходит откуда? Правильно, из доступности относительно дешёвых программистов, которые могут заменить безвременно ушедших или дополнить команду в случае роста. Real life story 2 - я работал в конторе, где основным продуктом была скомпилированная Win32-программа. Казалось бы, естественно было бы взять за основу C++ или Delphi. Однако нет - C++ программисты на порядок дороже, а Delphi-программистов очень мало. С другой стороны, VB-шников полно, да и обучить народ просто, у нас был чувак с Java-опытом, мы его вообще не обучали, он сам всё схватил. Да и я, собственно, пришёл в ту контору, когда весь мой VB-опыт равнялся одному колледжскому классу по структурам данных.
И тогда сразу понятно, что из всего вышеперечисленного остаются ASP/VBScript, JSP и с натяжкой PHP.

Discuss



(Читать комментарии)

Добавить комментарий:

Как:
(комментарий будет скрыт)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Имя пользователя:
Пароль:
Тема:
HTML нельзя использовать в теме сообщения
Сообщение:



Обратите внимание! Этот пользователь включил опцию сохранения IP-адресов тех, кто пишет анонимно.