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

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)
Entry tags:code

[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



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


[info]rydel23@lj
2005-02-22 10:16 (ссылка)
> Наш ответ Чемберлену

А зараз уяві, каб увесь сайт Livejournal.com сядзеў на IIS і быў напісаны на ASP/VBScript з SQL Server на сьпіне-канцы?

(Ответить) (Ветвь дискуссии)


[info]meshko@lj
2005-02-22 11:12 (ссылка)
Им бы пришлось в два или три раза больше компьютеров купить. См. эпохальный переход Hotmail FreeBSD -> w2k.

(Ответить) (Уровень выше)


[info]syarzhuk@lj
2005-02-22 22:48 (ссылка)
Некарэктнае параўнаньне. Блогаў - тысячы ці дзесяткі тысяч (і шмат зь іх на .Net), зь іх кшталту Livejournal - меней за дзесятак. Для cnn.com ASP на адной машыне, напэўна, не падыдзе, але-ж для svaboda.com - працуе :)

Дарэчы, MSN Spaces хосьціцца на Windows 2003 Server, ня ведаю, што там за мова, але...

(Ответить) (Уровень выше)


[info]ausvald@lj
2005-02-22 10:30 (ссылка)
с натяжкой PHP
Чаму?

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-02-22 22:50 (ссылка)
Бо, на маю сьціплую думку, тут, у ЗША, колькасьць праграмістых, што ведаюць php, яшчэ нашмат меньшая за тых, што ведаюць asp. Ніякіх заяваў пра тое, што адна з гэтых тэхналёгіяў лепей за другую, рабіць ня буду.

(Ответить) (Уровень выше)


[info]efimg@lj
2005-02-22 10:49 (ссылка)
Ты рассматриваешь определенный круг задач, и естественно, под него подходят определенные языки. Ты берешь applications для desktop PC. Или для серверов, что небольшая разница.

Под другой круг задач никакое безобразие в виде VB не канает. Скажем, системные задачки, или embedded systems. Там все пишется "по старинке" на C или C++ если ресурсов много.

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

Что же касается программистов после колледжа... В 1999 году когда за приведенного в фирму программиста платили премию 10К, я интервьюировал паренька, который рассказывал что "толпы безработных программистов не могут устроиться". После интервью я понял, каких "программистов" он имеет ввиду.

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-02-22 22:59 (ссылка)
Ты берешь applications для desktop PC. Или для серверов, что небольшая разница.
Web-программірованіе - чітайте заголовок, да? :)

Под другой круг задач никакое безобразие в виде VB не канает. Скажем, системные задачки, или embedded systems. Там все пишется "по старинке" на C или C++ если ресурсов много.
Естественно, и спорить с этим я совершенно не буду. Но... Для примера забежал сейчас на Монстр - по ключевому слову embedded в МА находится 200 работ; по ключевому слову Visual Basic - 400, a оно далеко не покрывает всего спектра "applications для desktop PC. Или для серверов". Т.е. понятно, что всегда будет место для embedded программирования на ассемблере и для оптимизации путём правильного расположения операций (http://www.cs.utah.edu/~elb/folklore/mel.html), но всё-таки большинство бизнес-программирования - такое, о котором говорю я.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]efimg@lj
2005-02-23 10:45 (ссылка)
Заголовок про@#$л, виноват.

Рынок работ с embedded гораздо меньше чем Web, это понятно. Но людей, которые могут это делать, еще меньше. Потому что "программисты" после 3-х месячных курсов вполне могут писать на Visual Basic.

(Ответить) (Уровень выше)


[info]mauz@lj
2005-02-22 12:21 (ссылка)
Jscript'овый ASP существенно мощнее VBScriptового, PHP - их обоих. Но это так, в сторонку.

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-02-22 23:00 (ссылка)
Jscript'овый ASP существенно мощнее VBScriptового
За счёт хотя бы обработки ошибок. Но - там нужно ставить точку с запятой и фигурные скобки, а люди этого не любят.

(Ответить) (Уровень выше)


[info]porkchameleon@lj
2005-02-22 14:27 (ссылка)
Хотелось бы послушать, что ты скажешь, поработав с .NET

В целом на счёт вышесказанного - во многом согласен, но лично сам ставлю PHP повыше ASP, хтя бы потому, что достаточно давно работаю именно с ним, а всё знакомство в ASP тогда закончилось у меня неудачной попыткой установки IIS, после чего я благополучно поставил Апач и жил долго и счастливо... до сих пор =)

Настоящее - за open-source.

(Ответить)


[info]mypehka@lj
2005-02-22 18:30 (ссылка)
Почему ТАК лично все ето воспринимают-то? Ну программирование, ну компутеры...

(Ответить) (Ветвь дискуссии)


[info]porkchameleon@lj
2005-02-22 19:16 (ссылка)
Для кого-то это "ну компутеры", для кого-то - образ жизни.

Каждому своё, короче...

(Ответить) (Уровень выше)


[info]ultracube@lj
2005-02-22 20:42 (ссылка)
Каждый зарабатывает на хлеб чем может. Хотелось бы ещё чтоб и с удовольствием, побыстрее да поудобнее.

(Ответить) (Уровень выше)


[info]xekc@lj
2005-02-23 10:16 (ссылка)
всё правильно да, но если взять планку повыше то в масштабах всего мира - php чуть более силён получается. а там открываются интересные моменты, когда в штатах больше asp программистов и разрабатывать на asp удобнее по вышеописанным причинам и нестыковка в том, что если заказывать что-то снаружи - удобнее php, как более распространённый в мировом масштабе язык.

(Ответить)


[info]dyukon@lj
2005-02-27 02:55 (ссылка)
Довожу до вашего сведения, что ваш пост на этой неделе меня как следует "зацепил", в результате чего угодил в мой скромный и чертовски субъективнй рейтинг "Десять постов, которые потрясли меня на этой неделе" (http://www.livejournal.com/users/dyukon/24224) ;-) Спасибо, что так замечательно пишете!

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-02-27 10:50 (ссылка)
Если я правильно понимаю, вы типа прикалываетесь. Перечитайте ещё раз заголовок поста, посмотрите в комментариях. Я ни в коем случае не отказываю C-подобным языкам в праве на существование, но в более узкой теме Web-программирования они действительно не катят.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dyukon@lj
2005-02-28 01:15 (ссылка)
По-моему, вы меня не так поняли. Я вовсе не обвинял вас в том, что вы начисто отказываете в праве на жизнь тому же C++. "Положили на лопатки" вы его именно в контексте Web-программирования, и контект этот вполне ясен из названия вашего поста. Так к чему кипятиться? ;-)

(Ответить) (Уровень выше)


[info]maksa@lj
2005-02-27 16:56 (ссылка)
Так, товарищи сокомандники, а ну-ка прекращайте делать вид, что вы не знакомы, да ещё и выкать друг другу на глазах у честного народа. J

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dyukon@lj
2005-02-28 01:19 (ссылка)
Макс, ну как ты не понимаешь.
Там - хобби, а тут, как-никак, высокое искусство программирования. Как к сей материи на "ты" подойдешь? ;-)

(Ответить) (Уровень выше)


[info]netch@lj
2005-02-27 06:49 (ссылка)
З практичної точки зору, нема сенсу виключати Perl зі списку: я розумію, чого він Вам не до вподоби,
і можу апріорі погодитися с будь-якими аргументами проти нього, але давайте приймати на увагу реальність -
веб-програмування на Perl - дуже поширена тенденція. ;))

Але Ваш дослід (та мабуть досвід), здається, лімітований Win-платформою; у такому випадку дійсно наведений список показує найбільш доцільні варіанти. У моєму випадку (коли єдина альтернатива - різноманітні Unix-системи) VBScript не влаштовує аж ніяк, а навпаки PHP та Perl стають двома щонайпривабливішими.

.NET - що до нього, раджу переглянути статтю (http://russian.joelonsoftware.com/Articles/MicrosoftGoesBonkers.html) Спольського. Він має рацію:)

(Ответить) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-02-27 10:48 (ссылка)
Ничего, что я по-русски? Я по-украински понимаю, но не говорю. Калі-ж не падабаецца клятая маскальская мова, дык магу па-беларуску.

практичної точки зору, нема сенсу виключати Perl зі списку
Слишком уж он write-only language. Т.е. для небольших страничек пойдёт, но большой сайт я бы сейчас делать на нём не стал.

У моєму випадку (коли єдина альтернатива - різноманітні Unix-системи) VBScript не влаштовує аж ніяк
А как же ChiliSoft (http://www.sun.com/software/chilisoft/index.xml)?

а навпаки PHP та Perl стають двома щонайпривабливішими
Хорошо, давайте забудет про Win-языки и скажите, как человек с переднего края фронта - на чём легче делать большой сайт - на Perl или всё-таки на PHP? Единственная причина "натяжки", которой я сопроводил PHP - малая, на мой взгляд, распространённость в Штатах программистов с опытом работы на нём.

.NET - що до нього, раджу переглянути статтю Спольського. Він має рацію
Там немножко о другом. Он объясняет, что не имеет смысла переводить ВЕСЬ софт на .Net и работу через Интернет. Он задаёт правильный вопрос - зачем потребителю Word, который работает через Интернет, и даёт правильный ответ - незачем. Т.е. в 2000, когда эта статья была написана, действительно так и было - шума про великую платформу .Net, которая заменит всё и вся, было много, а что это такое и куда оно будет вставлено, никто толком не знал. Но у меня тема заранее объявлена намного уже - Web-программирование. Word здесь никаким боком не при чём.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]netch@lj
2005-02-27 11:54 (ссылка)
> Ничего, что я по-русски? Я по-украински понимаю, но не говорю.

Ничего, это было в порядке приколки:) Чтобы были комментарии на трёх языках:)

>> практичної точки зору, нема сенсу виключати Perl зі списку
> Слишком уж он write-only language. Т.е. для небольших страничек пойдёт, но большой сайт я бы сейчас делать на нём не стал.

Ну, случаи разные бывают. Например, RT (http://bestpractical.com/rt/) - на Perl и мелким не назовёшь. С другой стороны, он же и показателен тем, чем плох Perl для таких применений - в CGI-режиме страшно тормозен, в постоянно загруженном (mod_perl, FastCGI) - прожорлив (MaxRequestsPerChild 50 - как-то спасает, 100 - уже нет). То есть я бы больше ограничением считал прожорливость, а не качество кодирования. Write-only - это далеко не для всех, я уже в общем разбираю его без особых проблем, хотя если будет писать мастер плетений - сдамся немедленно.:) Если есть жёсткие ограничения против тяжёлых стилей, сопровождение не составит особых проблем.

RT я привёл как пример который легко увидеть отовсюду. Знаю несколько нераспространяемых крупных разработок на перле, как с mod_perl так и без него. Во всех случаях при соблюдении дисциплины стиля (грубо говоря, без write-only кода) и хотя бы базовых познаниях программеров - устойчиво.

>>У моєму випадку (коли єдина альтернатива - різноманітні Unix-системи) VBScript не влаштовує аж ніяк
>А как же ChiliSoft?
Это маргинальный случай, к сожалению или счастью - не знаю.

>>а навпаки PHP та Perl стають двома щонайпривабливішими
> Хорошо, давайте забудет про Win-языки и скажите, как человек с переднего края фронта - на чём легче делать большой сайт - на Perl или всё-таки на PHP? Единственная причина "натяжки", которой я сопроводил PHP - малая, на мой взгляд, распространённость в Штатах программистов с опытом работы на нём.

Если поддерживать будет народ "отсюда" - исключительно PHP. Потому что каждый второй студент сможет сделать хоть что-то. На штатовцев же залагаться в условиях тотальной оффшорности разработки смысла мало.
Это даже при том факторе, что у PHP как средства серьёзные проблемы с защитой, методами работы и прочим.

(Ответить) (Уровень выше)


[info]another_felix@lj
2005-03-02 07:27 (ссылка)
"Потому Java, где для простого Hello, World! нужно как минимум поключить 8 библиотек и написать новый класс с новым методом, идёт лесом." - это какие 8 библиотек?

public class Hello {
public static void main(String[] args) {
System.out.println("Hello.");
}
}

Чёрт, четыре строчки.

(Ответить) (Ветвь дискуссии)


[info]another_felix@lj
2005-03-02 07:28 (ссылка)
Пять.

(Ответить) (Уровень выше)


[info]syarzhuk@lj
2005-03-02 07:58 (ссылка)
Ну, преувеличил немного. Но согласи[те]сь, что в чистой Джаве, как правило, очень много места уходит на импорт библиотек, описание классов и методов и т.д. 4 или 5 строчек в данном случае - не так важно, все равно это в 4-5 раз длиннее (и соответственно, дольше писать, чем)
<%="Hello"%>

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]another_felix@lj
2005-03-02 08:24 (ссылка)
Можно на "ты".

А вот и не соглашусь.
1. Много места уходит в том случае, если импортить конкретные классы. Но ведь можно импортить целый package - javac разберётся и сам.
2. Описание классов и методов... Не понял. А в каком языке не требуется описывать классы, методы, функции, модули, процедуры и пр.? Конечно, речь не идёт о языках, в которых вообще нет возможности создать что-нибудь своё. Но если мне требуется что-нибудь сложнее print "Hello"... Уж лучше опишу. :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-03-02 08:33 (ссылка)
Ещё раз повторяю - речь идёт о Web-программировании, т.е. интерфейсной части. Здесь не так важно "описывать классы, методы, функции, модули, процедуры". А если использовать сторонние объекты для бизнес-логики, то конечно, пишите их хоть на Джаве, хоть на SmallTalk'e.
(У меня знакомый в своё время (ранние 1990е) писал в универе мини-экспертную систему. Когда он понял, что за возможности турбопаскакаля сильно вылезает, взял и написал движок логики на Forth'e.)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]another_felix@lj
2005-03-02 08:40 (ссылка)
А-а-а... Если под Web-программированием понимать "интерфейсную часть" (GUI?), то да. А я всё больше в другом контексте, т.к. чаще работал на проектах, на которых Web-морда - 10% от всего остального.

Ок, умываю руки. :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]syarzhuk@lj
2005-03-02 08:55 (ссылка)
Ну, я тоже в основном работаю на таких проектах, причём по большей части именно в бизнес-логике. Но согласись, что написание [в моём случае COM-]объектов для Web'a по сути ничем не отличается от написания [COM-]объектов для других клиентов, и потому Web-программированием это можно назвать только с большой натяжкой.
P.S.: вчера читал документацию к проекту, народу показалось, что 7 используемых языков (HTML, CSS, client-side JavaScript, server-side VBScript, VB, SQL, PL/SQL) мало, нужно хотя бы 8. И потому прикрутили к Ораклу одну (1) функцию на Java.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]another_felix@lj
2005-03-02 09:06 (ссылка)
Не отличается. :)

PS. Сами себе доктора.

(Ответить) (Уровень выше)