[флейм] perl - гавно

ava3443

bastii

Согласен.

Marinavo_0507

Perl совсем-совсем непригоден? Вот жалость.
Это где-то на microsoft.com написано?

ava3443

:
Это где-то на microsoft.com написано?
Нет, собственный вывод
:
Perl совсем-совсем непригоден? Вот жалость.
Ну я вообще не сторонник флеймваров, в особенности про Perl Сам больше 3 лет под mod_perl писал...
Но пока ещё не слышал о крупном продукте/решении, где бы Perl играл ключевую роль.

Marinavo_0507

> Но пока ещё не слышал о крупном продукте/решении, где бы Perl играл ключевую роль.
А что, есть какие-то проблемы, чтоб их решать?
Люди не продукты и решения ищут, а просто берут и делают как им надо.
Подборка success stories находится гуглом за 5 минут.

ava3443

:
Люди не продукты и решения ищут, а просто берут и делают как им надо.
Я вроде чётко написал, что непригоден именно в большой, промышленной разработке.

Marinavo_0507

Я вроде чётко написал про гугл.

ava3443

Ну и? Думаешь, я этих success stories за годы программирования на перле не начитался? Среди них нет ни одной системы, где бы заказчик платил, скажем, больше 50 килобаксов в год за поддержку и где бы perl являлся ключевой технологией.

Marinavo_0507

> Среди них нет ни одной системы, где бы заказчик платил, скажем, больше 50 килобаксов в год за поддержку
Дешевизна поддержки - это теперь недостаток технологии?

Marinavo_0507

Одну и ту же яму выкопать можно
1) сотней солдат с сапёрными лопатками;
2) одним человеком на экскаваторе.
В армии предпочитают способ (1 так как это тогда получается большая промышленная разработка.

ava3443

Ок, берём - real time gross settlement system. Система, нужная в любой стране мира. Вот тебе пример большой системы.
На перле таких систем пока не написали Если вдруг напишут - может дешевле поддержка будет, а пока - так. Только навряд ли напишут

Marinavo_0507

> Система, нужная в любой стране мира.
Объясняю.
Каждому, кто сталкивается с этим, нужно как-то прикрыть свою жопу,
чтоб его не расстреляли как врага народа, или как террориста, в зависимости от традиций его страны.
Нужно, чтобы за каждый возможный провал было на кого-то другого показать пальцем, как на виновника.
Это - проблема, и ей нужно - именно решение.
Тут приходят на помощь большие компании, которых не расстреляешь,
и за несколько мегабаксов предоставляют нужное решение.
Синтаксис языка тут не играет никакой роли.

Marinavo_0507

Поискал гуглом про это дело, нашёл несколько рекламных буклетов.
Нигде не упомянуты языки, на которых оно реализовано.
Просто потому, что это неважно!

ava3443

Логично. Только это не открытие для меня.
Поверь, любая из этих больших компаний была бы счастлива, если бы могла взять, нанять нескольких суперрюхастых разработчиков на Perl, создать им все условия для творчества и в итоге за разумное время получить RTGS. Так нифига, чудес не бывает...

Marinavo_0507

> Поверь, любая из этих больших компаний была бы счастлива
А вот не верю. Обычно такое делается стартапами, а не большими компаниями.

ava3443

> Нигде не упомянуты языки, на которых оно реализовано.
Ну так давая я тебе расскажу. Если современные системы, то C++. Если старые, на мейнфреймах ещё - тогда точно не знаю, но думаю, что что-нибудь более древнее типа кобола... Ни о каких Java и .NET как правило и речи нет. Разве что для веб-интерфейсов.
> Просто потому, что это неважно!
Конечно неважно - неважно для клиента, которому и предназначены эти буклеты. А разработчикам ещё как важно.

Marinavo_0507

> Ну так давая я тебе расскажу. Если современные системы, то C++. Если старые, на мейнфреймах ещё - тогда точно не знаю, но думаю, что что-нибудь более
> древнее типа кобола...
Легко видеть, что синтаксис Perl позволяет писать не хуже, чем на этих языках.
То есть, дело не в этом.

ava3443

> А вот не верю. Обычно такое делается стартапами, а не большими компаниями.
Не знаю насчёт обычно, а в моём примере среди всех вендоров ни одного стартапа.

ava3443

:
Легко видеть, что синтаксис Perl позволяет писать не хуже, чем на этих языках.
Именно. Писать, но не читать.

Marinavo_0507

На С++ тоже хватает способов написать нечитаемый код.
Просто не надо так делать, и всё.

Marinavo_0507

> Не знаю насчёт обычно, а в моём примере среди всех вендоров ни одного стартапа.
Правильно, крупные заказы стартапам не дают, по причинам, изложенным выше.

ava3443

Ага. Только программистов, качественно пишущих на C++ на рынке пока существенно больше, чем качественно пишущих Perl-программистов.

Marinavo_0507

> Только программистов, качественно пишущих на C++ на рынке пока существенно больше
Фрагменты кода на C++, которые я видел в чужих программах, мне обычно были непонятны.
В отличии от кода на perl.
Ну и опять же, солдат с лопатами в армии больше, чем экскаваторов.

ava3443

Талантливый "солдат с лопатой" к 40 годам становится "генералом" и рулит проектами, в которых участвуют куча солдат и экскаваторов. А у машиниста экскаватора далеко не такие радужные перспективы карьерного и профессионального роста.
Так и программисты на Перл: в больших компаниях они не водятся, а в маленьких компаниях потолок слишком низок.

Dasar

У перла как минимум есть следующие минусы:
1. Перловые модули сложно продавать
2. Отсутствие IDE
3. Отсутствие технологий уровня JSP/ASP (по крайней мере я таких не видел)
4. Сложность стыковки с чужими модулями (как снизу, так и сверху).
5. Отсутствие статической типизации - сложность с оптимизацией критических мест.
6. АФАИК, работа с базами тоже происходит на низком уровне.

Dasar

> Одну и ту же яму выкопать можно
> 1) сотней солдат с сапёрными лопатками;
> 2) одним человеком на экскаваторе.
Есть одно большое НО:
в большом проекте есть большой объем работы, который проще отдать "солдатам":
например, разработка формочек под капризы заказчика,
рисование отчетов,
настройка под конкретного заказчика
стыковка с другими программами
и т.д.
Соответственно всегда получается, что, кроме, эскаватора нужно еще несколько человек с лопатами, причем, у этих челов с лопатами - квалификация низкая.
Соответственно необходимы средства (язык, среда и т.д.) - которая позволяют легко совместить зскаватор и лопаты, а также сделать чтобы ошибки этих лопат были легко обнаружимы и несильно сказывались на работоспособности всей системы.
У перла - таких средств очень мало, у С++ - больше, у .Net-а/Java-ы еще больше.

Marinavo_0507

> Талантливый "солдат с лопатой" к 40 годам становится "генералом"
Это если не только лопатой умеет орудовать.
> Так и программисты на Перл: в больших компаниях они не водятся, а в маленьких компаниях потолок слишком низок.
Не совсем так. Сегодняшняя маленькая компания завтра может стать крупной - раз.
В маленькой компании легче занять руководящую позицию - два.
"Программист на $lang" - неудачник по определению, в отличии от просто программиста - три.

Marinavo_0507

> У перла как минимум есть следующие минусы:
ни один из которых не связан с богатым синтаксисом

Dasar

> ни один из которых не связан с богатым синтаксисом
посмотри второе замечание

Marinavo_0507

> У перла - таких средств очень мало, у С++ - больше, у .Net-а/Java-ы еще больше.
Только в нескольких областях, где всё уже поделено, и бодаются крупные компании вроде Microsoft, Sun и Oracle.
Другим оставлена лишь работа лопатами под присмотром прапорщика.

oleg_n

где можно увидеть строгое определение синтаксиса perl?

Marinavo_0507

А нафига оно надо, без строгого определения семантики?
И я не говорю, что perl - идеальный язык, а говорю, что обычно его критики
не попадают в тазик.

Dasar

> Только в нескольких областях, где всё уже поделено, и бодаются крупные компании вроде Microsoft, Sun и Oracle.
При желании можешь и ты поучаствовать, также как участвует Borland, Rational и т.д., главное, чтобы у тебя был продукт, который позволяет совместить эскаватор и лопаты.

sergey_m

с Perl 5 знакомы? Ну так вот это пример того, как немеряное количество syntactic sugar + многие годы развития могут сделать язык неприменимым в большой разработке (=промышленной разработке).
perl позволяет программировать плохо. Не надо заявлять, что любая программа на perl плохая.

sergey_m

Ага. Только программистов, качественно пишущих на C++ на рынке пока существенно больше, чем качественно пишущих Perl-программистов.
С этим согласен.

sergey_m

4. Сложность стыковки с чужими модулями (как снизу, так и сверху).
В чём заключается?

maksimys19

Но пока ещё не слышал о крупном продукте/решении, где бы Perl играл ключевую роль.
А что должен играть прям ключевую? вообще то создавался он совсем для другого. С парсингом логов, с работой с базой, генерацией отчетов, выборок и т.п. успешно справляется. Причем с большими объемами данных. Всегда считал, что пока ключевую роль отводится либо си++ (си либо java. А perl хороший всего лишь помощник.

tokuchu

Но пока ещё не слышал о крупном продукте/решении, где бы Perl играл ключевую роль.
Request Tracker

TYU_2008

Это rt крупный проект-то ?
Лично я знаю, что в проекте HSPComplete учавствуют порядка 20 perl программистов. Вот это еще более менее кандидат на крупные проекты

sergey_m

а у вас веб на чём программируют?

Dasar

> В чём заключается?
Невозможность статической линковки.
Проблемы с созданием и подключением dll-ек.

sergey_m

Только программистов, качественно пишущих на C++ на рынке пока существенно больше, чем качественно пишущих Perl-программистов.
Я тут еще прокомментирую. Устраивался я на работу в компанию Inline. Прихожу к ним, и мне говорят: типа есть вакансия на perl и есть на С, что выбираешь? Только вот у ведущего perl программиста зарплата $1200, а y ведущего на С - $1400. Я им говорю: "А почему у perl программиста меньше?" Они говорят: "Ну потому что у них уровень ниже среднестатистически". Я говорю: "Вот я по собеседованию могу стать и тем и другим. Ясен пень, что я выберу С. Потому что из любви к искусству никто не будет терять 200 бачей. И так сделает каждый на моём месте. Таким образом, в итоге на место perl программиста вы возьмёте самого слабого из всех. А потом будете заявлять, что они слабее среднестатистически".
И мне кажется, что подобная политика весьма распостранена. Получается такая самоподдерживающаяся система, которую трудно разрушить.

sergey_m

> Невозможность статической линковки.
Зачем она нужна для языка интерпретатора? Как ты её себе представляешь?
> Проблемы с созданием и подключением dll-ек.
Насколько мне известно, в операционных системах UNIX проблем нет.

tokuchu

Это rt крупный проект-то ?
Ну я не заявлял, что он самый крупный. Просто недавно видел его в инете и решил привести в пример.

TYU_2008

perl, c

TYU_2008

Тут вот еще какое соображение. Почти всегда чистые perl программисты начинали с веба и это оказало не самое хорошее влияние на качество их кода. В веб программировании очень часто качество не нужно, можно сляпать на коленке и все.

sergey_m

perl, c
Вот к вопросу о крупных проектах. Mail.ru, Rambler используют perl.

sergey_m

Тут вот еще какое соображение. Почти всегда чистые perl программисты начинали с веба и это оказало не самое хорошее влияние на качество их кода. В веб программировании очень часто качество не нужно, можно сляпать на коленке и все.
Угу. Хотя мнение, что в вебе качество не нужно тоже необосновано. Просто сложилась такая традиция, что веб не требует качества, поэтому веб программисты дешевы и имеются в избытке. Если странный человек пытается делать качественно, то начальство смотрит на него косо: "тоже мне, системный архитектор нашелся". Как следствие мы имеем очередную самоподдерживающуюся систему.

TYU_2008

Еще как правило в веб программировании
1) нужно делать все быстро
2) часто переделывать уже сделанную работу
Поэтому писать качественно, проектировать и продумывать систему - это непозволительная роскошь. Конкурентное преимущество имеет человек, который пишет быстро, который быстро может выдать на гора более-менее работающий результат. Увы, но такова жизнь.

Dasar

Самое главное, что в веб программирование - ошибки очень легко исправить.
Если в десктоп-софте (не говоря уже о hard-софте) цикл (реальная работа у пользователя - обнаружение ошибки - исправление - установка пользователю исправленной версии) - занимает месяцы, то в веб-софте - это часы/дни.
Также веб-софт монолитен, не надо задумываться о переносимости, работе с другим окружением и т.д.

ava3443

Весело так мой пост переименовали в "perl - гавно". И это при том, что я на нём написал больше, чем на всех остальных языках вместе взятых
Здесь было высказано много интересных мыслей насчёт перла. Очень со многим из сказанного я согласен. Но хочу ещё раз подчеркнуть, что я хотел сказать в первом (теперь) моём посте про Perl.
Есть понятие "syntactic sugar". Кто-то (теперь уже в другой ветке) высказался в духе, что, грубо говоря, как добавят "syntactic sugar" в C# - будет круто. Я не уверен, что это будет полезно языку C#, потому что, как мне кажется, из-за этого он может не стать "промышленным" языком (как C, C++ и Java).

ava3443

> Только вот у ведущего perl программиста зарплата $1200, а y ведущего на С - $1400.
Ага. У меня в фирме ещё круче. Perl и Python за языки программирования вообще не считают. Вот и приходится временами делать сайт на комбинациях типа PL/SQL + mod_plsql + XSLT.

ava3443

P.S. Особый кайф - генерить Javascript на страницах при помощи XSLT: нормальную обработку ввода пользователей (всяческих ошибок в смысле) так проще сделать, чем на PL/SQL...

rfgbnfy

Особый кайф - генерить Javascript на страницах при помощи XSLT:нормальную обработку ввода пользователей (всяческих ошибок в смысле) так проще сделать, чем на PL/SQL...
это как ?
поясни плз.
или я что то совсем не понимаю - или ты пытаешься тут сравнить 2 принципиально разных типа контроля за вводом данных ..............

voronetskaya

принципиально разных типа контроля за вводом данных
думаю речь не о контроле, а о фидбэке контроля. Т.е. из pl\sql для простоты юзеру говорится только "шэф, все пропало" а не конкретно в каком поле какая ошибка, а это уже по возможности проверяется джаваскриптом на этапе ввода.

ava3443

Ага, именно как сказал. Сайт для интранета + сделать надо было максимально быстро, поэтому один уровень проверки - на клиентах.

Marinavo_0507

> главное, чтобы у тебя был продукт, который позволяет совместить эскаватор и лопаты.
не только продукт, а ещё и новая область применения, не занятая пока гигантами
то есть придумывать что-то чуть-чуть получше, чем тот же C# и .Net framework, не имеет смысла для мелкой компании
в то время как Microsoft может придумать и внедрить что-то чуть-чуть получше (да и с этим вон спорят) чем Java
а нужно что-то несравнимо лучшее, позволяющее делать то, что раньше считалось невозможным

Marinavo_0507

То есть на промышленном языке нужно скажем писать так:

for (int i=0, n=a.length; i<n; i++) {
a[i]++;
}
А вот так уже плохо:

for my $x (@a) { $x++; }
Слишком коротко, да?

ava3443

Вот так, например, уже плохо:
$_++ for (@a);

Не знаю, правда, кто так будет писать в здравом уме

ava3443

или даже вот так
map {$_++} @a;

Marinavo_0507

> кто так будет писать в здравом уме
я даже не знал, что это возможно
но даже от таких штук эффект всего лишь локальный

ava3443

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

ava3443

> но даже от таких штук эффект всего лишь локальный
глобальная беда - например, то, что программисту поднять свой уровень владения Perl-ом до ОО-программирования может быть нелегко (по сравнению с другими языками, с Python или Ruby, например).

Marinavo_0507

> например, то, что программисту поднять свой уровень владения Perl-ом до ОО-программирования может быть нелегко
Это потому что возможностей perl хватает, чтобы долго без этого обходиться.
Чужие библиотеки с ОО-интерфейсом подключить - нет проблем.
Свои написать, чтоб другим было легче - думаю, тоже нет проблем, хотя я не пробовал.
Вот "магические" переменные с нелокальным действием - это да, легко можно устроить засаду.
Но разве в книжках не учат, как этого избегать?

ava3443

Согласен со всем, что ты написал.
Но беда в том, что когда возможностей перла без ОО перестаёт хватать (когда проект разрастается и чего-то модифицировать и добавлять в него чем дальше, тем тяжелее перейти на ОО весьма и весьма сложно. Ну или квалификация программистов не та

Marinavo_0507

> Ну или квалификация программистов не та
А хуле они делали, пока проект разрастался?
> когда возможностей перла без ОО перестаёт хватать
Не уверен, что это обязательно наступит, ведь perl полноценно поддерживает
программирование в функциональном стиле, в отличии от многих из упомянутых тут других языков.

Hastya

Перл не поддерживает и трети всех API, доступных из Java. Думаю, что такая же ситуация и с .NET.
А язык? При чем тут язык? Индустриальными обычно становятся далеко не самые "правильные" или "мощные" языки.

Marinavo_0507

> Перл не поддерживает и трети всех API, доступных из Java. Думаю, что такая же ситуация и с .NET.
И наоборот.

Hastya

> Перл не поддерживает и трети всех API, доступных из Java. Думаю, что такая же ситуация и с .NET.
И наоборот.
Например?

Marinavo_0507

Про CPAN слышал?

Dasar

> Про CPAN слышал?
Модули с друг другом увязаны? или это просто толпа никак с друг другом несвязанных модулей?

Marinavo_0507

Есть разные.
Про ортогональность слышал?

Dasar

> Про ортогональность слышал?
слышал. У них получилось?
Если есть ортогональность, то есть и замыкания, когда модуль X_and_Y должен работать подругому (или проще, лучше и т.д. чем модули X+Y.
Как они поступают с замыканиями?

Marinavo_0507

Грубо говоря - нужен модуль - вот он.
Значит ли это, что получилось?

Dasar

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

Marinavo_0507

Ну 40 модулей скорее всего окажутся совсем разного назначения.
Какие тут общие интерфейсы и т.д.?

sergey_m

 $_++ for (@a); 

Если весь скрипт выдержан в этом стиле, то не так уж плохо.

Vladislav177Rus

А если while(a[ i]) a[i++]++; - тоже неплохо?

Dasar

Допустим я пишу программу, которая должна работать на windows-е, *nix-е, предоставлять, как десктопный, так и web UI, хранить данные, как в Oracle, так и в MySql, так и в Access-е и т.д., программа должна формировать документы в OpenOffice, Word, Excel, html, rtf, pdf, tex, поддерживать графические форматы: png, jpeg, gif, bmp и т.д.
Далее возникают вопросы:
1. Предоставляют ли одиннаковый интерфейс модули, которые работают с разными базами: Oracle, Access, MySql, SqlLite, odbc-базы, ole-базы?
2. Предоставляют ли одиннаковый интерфейс модули, которые работают с разными графическими форматами?
3. Можно ли, напрямую, соединить модуль, который получает данные из базы, и модуль, которые выводит данные на экран, в html или в документ? Или требуется большой объем ручного кода?
4. Насколько одиннаковую концепцию обеспечивают модули, которые делают web-UI и desktop-UI?
5. Я использую готовый модуль для создания web-UI, но часть пользователей жалуются, что у них коряво выводится. Смогу ли я законфигурировать модуль так, чтобы под этих пользователей вывод происходил чуть другим образом.
6. Каждый из модулей требует конфигурирование. Можно ли единообразным способом законфигурировать все используемые модули? Какой объем ручного кода требуется?
7. Можно ли единообразным способом локализовать все модули? В частности, локализовать все сообщения об ошибках?

sergey_m

> А если while(a[ i]) a[i++]++; - тоже неплохо?
Нормально.

Marinavo_0507

Допустим я пишу программу, которая должна работать на windows-е, *nix-е, предоставлять, как десктопный, так и web UI, хранить данные, как в Oracle, так и в MySql, так и в Access-е и т.д., программа должна формировать документы в OpenOffice, Word, Excel, html, rtf, pdf, tex, поддерживать графические форматы: png, jpeg, gif, bmp и т.д.
Так не бывает, к сожалению
Если всё же захочешь делать, будь готов к проблемам.
На 1,2,7 ответ скорее "да", про остальное не знаю.
Объём ручного кода для связи модулей различных авторов зависит
от выразительности языка и мастерства программиста, с первым у перла неплохо.

Dasar

> Объём ручного кода для связи модулей различных авторов зависит от выразительности языка и мастерства программиста
Так хочется, чтобы связь разных модулей производилась мышкой, "наладчиком" и у клиента, на основе его слов.
.net-фреймоворк, как раз раз сейчас в этом направлении развивается.

Marinavo_0507

> Так хочется, чтобы связь разных модулей производилась мышкой, "наладчиком" и у клиента, на основе его слов.
Повторю, что это возможно в случае специализированных задач.
А на CPAN - в основном универсальные библиотеки.
Для некоторых специализированных задач такая "наладка" возможна -
пишутся скрипты прямо у клиента, мышка не нужна - и так всё просто.

Dasar

> Так не бывает, к сожалению
если требование к .nix-выкинуть, то это требования реальных проектов.
т.е. обычно требуется примерно следующее:
предоставлять, как десктопный, так и web UI (или другими словами: rich и lite UI) на windows-е,
хранить данные, как в Oracle, так и в MsSql,
формировать документы в Word, Excel, html, rtf, pdf,
поддерживать графические форматы: png, jpeg, gif, bmp
online и offline-доступ (синхронизация с базой раз в сутки, например
связь клиента и сервера, как по толстому канала (выделенка так и по тонкому (gprs).
По возможности дожно обеспечиваться:
работа с другими базами.
доступ с nix-клиента,
доступ с КПК-клиента,

Dasar

> Для некоторых специализированных задач такая "наладка" возможна -
Почему это невозможно для универсальных задач?
Вывод данных он, и в Африке, вывод.
Ввод данных он, и в Африке, ввод.
Хранение данных оно, и в Африке, хранение.
Редактирование данных...
Последовательность пересчетов...
Связь...
Оптимизация...
Какие задачи остались?

ava3443

Если есть требование

Dasar

> кучу запросов придётся писать отдельно для Oracle и отдельно для MSSQL
Это скорее всего останется на уровне stored procedure.

Marinavo_0507

Это специализированная задача aka бухгалтерия.
Кто ж спорит, что у .Net тут хорошие перспективы.
Примеры других задач: игры, ИИ, высокопроизводительные вычисления, символьные вычисления, встраиваемые системы.
Могут быть дополнительные требования к задачам, например отказоустойчивость, повышенная безопасность.
Perl скорее специализируется на интеграции компонентов различного происхождения,
где нет согласованных интерфейсов, синтаксис языка и стандартные библиотеки заточены
для уменьшения объёма ручного кодирования, необходимого для преобразования данных любой структуры.

Marinavo_0507

Базы данных: если у MySQL рекордная скорость на простых запросах, но нет многой функциональности других СУБД,
то приложение, которое использует одинаковые абстракции на MySQL и на Oracle, будет сосать хотя бы в одном из этих случаев.
Если использовать одинаковый подход при проектировании WIMP GUI и для веб-интерфейса,
то по крайней мере один из вариантов будет неудобным, кроме самых простых случаев.

Dasar

> Могут быть дополнительные требования к задачам, например отказоустойчивость, повышенная безопасность.
так это как раз ортогональные требования
кто только, что говорил, что модули должны быть ортогональными?
> Примеры других задач: игры, ИИ, высокопроизводительные вычисления, символьные вычисления, встраиваемые системы.
И чем эти задачи друг от друга отличаются?
Все они сводятся к тому - что есть простая последовательность преобразований, в которой надо схитрить или сделать частично, чтобы она "влазила" в текущие компы.

ava3443

> есть простая последовательность
Всё относительно. Бывает и сложная логика...

ava3443

> И чем эти задачи друг от друга отличаются?
Ну, например, тем, что играм обычно нафиг не нужны реляционные базы данных, а высокопроизводительным вычислениям не нужны всякие ворды, эксели и прочие PDF-ы.

Dasar

> Бывает и сложная логика...
например?

enochka1145

> Примеры других задач: игры, ИИ, высокопроизводительные вычисления, символьные вычисления, встраиваемые системы.
И чем эти задачи друг от друга отличаются?
Все они сводятся к тому - что есть простая последовательность преобразований, в которой надо схитрить или сделать частично, чтобы она "влазила" в текущие компы.
Можно здесь поподробнее? Заранее могу сказать:
- Что касается игр, то здесь нужна не просто "простая последовательность преобразований", а офигенно быстрая такая последовательность, и .NET здесь, ясное дело, подходит плохо.
- Что касается ИИ, то примеры есть. Например JESS (Java-версия экспертной системы CLIPS).

Hastya

Про CPAN слышал?
Ты библиотеки от API отличаешь?

Dasar

> Ну, например, тем, что играм обычно нафиг не нужны реляционные базы данных, а высокопроизводительным вычислениям не нужны всякие ворды, эксели и прочие PDF-ы.
Это, по твоему, серьезное отличие?
РБД - это маленький частный случай хранения данных.
ворд, эксель, pdf - это маленький частный случай вывода данных.
хранить и выводить данные надо, как и в играх, так и в вычислениях.

Dasar

> и .NET здесь, ясное дело, подходит плохо.
Типа Flash быстрее?
все-таки смотря о каких играх идет речь.

ava3443

Ну ок, все подзадачи, возникающие в программировании - это маленькие частные случаи давно известных задач. И что с того? Чего обсуждаем? Абстрактную метасистему, которую можно настроить мышкой "на коленке", сидя в офисе у заказчика, расспрашивая его про требуемую функциональность и попивая коньячок?

Dasar

> Абстрактную метасистему, которую можно настроить мышкой "на коленке",
В идеале, хочется именно что-то такое.
В реале, хочется от языка/системы - хотя бы поддержки нескольких основных принципов (ортогональности, последовательности и т.д.)

enochka1145

Понимаю. Лично я имел в виду HL/CS.
По крайней мере, у -а "игры" шли вместе с "высокопроизводительными вычислениями".

voronetskaya

Понимаю. Лично я имел в виду HL/CS.
показать тебе игру с графикой покруче чем в контре в которой все кроме 3д написано на java?

Dasar

> Лично я имел в виду HL/CS.
Такие игры можно разбить на следующие части:
граф. движок,
физич. движок,
движок мира
и т.д.
Верхнюю часть каждого движка удобнее писать на чем-нибудь высокоуровневом.
Верхняя часть - это описание правил преобразований - что движение бочки - это гор. перемещение + поворот вокруг своей оси,
что контейнер при взрыве распадается на три доски,
что пуля попадая в корпус уменьшает здоровье на 10 пунктов
и т.д.
Постоянный же обсчет этих правил- лучше всего, вообще, делать в железе или спец. либой написанной на asm-е с поддержкой sse2.

Marinavo_0507

> Ты библиотеки от API отличаешь?
Расскажи, что ты понимаешь под ними, и в чём разница.

enochka1145

Покажи. Заодно скажи, какие требования к компу.

enochka1145

Как человеку, посвятившему какое-то время играм, мне прям даже интересно стало: что это за игры, которые по динамизму не уступают HL/CS, а написаны (кроме 3D) на Java?

Marinavo_0507

> В идеале, хочется именно что-то такое.
Я бы сказал, что Java по сравнению с Smalltalk и C++ - это уход в сторону специализации.
Perl по сравнению с C, shell и awk - развитие в сторону универсальности и метапрограммирования.
Про .Net сказать затрудняюсь.

Marinavo_0507

> так это как раз ортогональные требования
не очень
например, если некий фреймворк не удовлетворяет требованиям безопасности, то его скорее всего придётся выкинуть целиком
а если слабо связанные модули, то может быть, некоторые можно и оставить

Dasar

> Perl по сравнению с C, shell и awk
У perl-а, также как и у C++ - очень плохие корни - и это очень серьезный минус, т.к. получается, что база языка - "рыхлая".

Dasar

> например, если некий фреймворк не удовлетворяет требованиям безопасности, то его скорее всего придётся выкинуть целиком
так может он просто был сформирован не по ортогональным правилам?

bleyman

Ку2 портированная на жаву.
Ей, правда, памяти много надо.

Marinavo_0507

Просто для безопасности вредны зависимости между модулями.

enochka1145

Память-то ладно, она сравнительно дешёвая.
Ей комп. нужен, по производительности на порядок больше моего.
На своём Duron 700MHz с древней видеокартой я прошёл Quake2 без всяких проблем.
Здесь же частота обновления 0.5-1 fps - куда это годится?

Dasar

> Просто для безопасности вредны зависимости между модулями
т.е. код дублируется?

Marinavo_0507

Если изначально библиотека не проектировалась с учётом требований безопасности,
то таки нужную функциональность придётся переписывать, то есть дублировать код.

Dasar

> то таки нужную функциональность придётся переписывать, то есть дублировать код.
Не понимаю я - зачем это надо код переписывать, если требование ортогонально к самой задаче?

bastii

А ты про .NET не говори, это не язык. Никто не мешает пересадить Perl на .NET. Причем если очень постараться, то можно сделать нормальный доступ из него к .NET API.
Если по поводу API в целом. Сегодня все системы API очень, очень ужасные. Как там у Perl с этим я не знаю, но думаю, что не сильно лучше чем у других. Например, то что я видел в PHP так это вообще ужас. Как там можно прогать. Реально тема API очень сильно игнорировалась. Если велось множество исследований в обоасти ООП и ЯП, то про дизайн API прочти нет ничего толкового. Проблемы наверно в том, что в разных ЯП используются разные стили организации API, поэтому наверно какие-то общие исследования не имели смысл. С появлением .NET можно говорить о API немного абстрагируясь от конкретного языка. Так MS сегодня работает на новыми API на ближайшие годы и очень серьезно подходит к этой проблеме. Просто сегодня уже очевидно, что на комфортность программирования вилияет качество API в большей степени, чем выбор ЯП, особенно когда вы работаете с очень сложным и функциональным фреймфорком.
Лично мне очень нравится все то, что складывается в .NET. C одной стороны доступны неплохие API к очень богатой функциональности. Взять например, взять хотя бы AST.NET. Можно накупить готовых компонент, что позволит с минимум кода сделать очень функциональное веб приложение. Что-то аналогично получить в PHP просто невозможно сегодня. Не спасут положение и все прелести языка в PHP. С другой стороны в .NET доступно большое количество языков. Пиши каждую часть проекта на том языке, который наиболее удобен. Как пример, VB.NET очень неплохо годится для написания бизнес логики, код смотрится очень симпатично, все ок с читабельностью. Если нужно много работать на низком уровне, много доступа к native компонентам, то хорошо подойдет MC++2005.

Hastya

> Ты библиотеки от API отличаешь?
Расскажи, что ты понимаешь под ними, и в чём разница.
API = application programming interface = интерфейс
библиотека = суть реализация какой-то функциональности

Ivan8209

Верее, все системы API, известные _тебе_.
Либо что ты подразумеваешь под API?
---
...Я рабоатю антинаучным аферистом...

enochka1145

А какая между ними разница для client programmer?

bastii

Ну я согласен, что у меня не самый широкий кругозор

Lorin

комент гнилой
афтар мозго!б

sergey_m

У perl-а, также как и у C++ - очень плохие корни - и это очень серьезный минус, т.к. получается, что база языка - "рыхлая".
Говноаргумент. В стиле "NNTP - очень старый протокол".

Marinavo_0507

У библиотеки всегда есть некий интерфейс. Для приложений. То есть API.

bastii

Я не вижу особой разницы. Разые что такой. Библиотека юзается внутри проги. API предоставляется проге как части чего-то большего (системы). Есть здесь разница?

Ivan8209

Здесь не в возрасте дело.
У Схемы корни уходят столь же, если не более, глубоко,
однако это куда более вылизанный язык, чем Перл.
---
...Я работаю антинаучным аферистом...

Marinavo_0507

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

Dasar

> В стиле "NNTP - очень старый протокол".
Проблема не в старости, а в том, что языки (перл и c++) сначала разрабатывались, исходя из одних принципов, задач и т.д., а потом совсем из других.
Причем, даже если что-то в языке противоречит или мешает новой концепции - оно все равно остается.
ps
Взять тот же C - он, например, разрабатывался, исходя из того, что памяти у компилятора очень мало - и многие фишки растут именно из этого требования, хотя оно уже давно неактуально.

Ivan8209

Схема --- это универсальный язык, который сделан достаточно
небольшим, чтобы его можно было хорошо понять.
Всё, что выходит за рамки основ языка, вынесено в SRFI.
Последние, если их вдруг не оказалось, можно определять внешним
способом, как библиотеки, и использовать в своё удовольствие.
Схема, кстати, это "one T LISP."
---
...Я работаю антинаучным аферистом...

Hastya

А какая между ними разница для client programmer?
Большая. Разницу между JDBC и Oracle OCI понимаешь?

Hastya

У библиотеки всегда есть некий интерфейс. Для приложений. То есть API.
И... что? Этот интерфейс поддерживается всеми остальными библиотеками?

Marinavo_0507

Отбрасывание лишнего, дабы осталось только true, я бы назвал одним из видов специализации.

Marinavo_0507

Не совсем понятно, какие такие остальные библиотеки должны поддерживать, например API для доступа к базам данных.

Ivan8209

Если выбрасывание мусора называть специализацией, то ладно.
---
...Я работаю дзен-специалистом...

Marinavo_0507

Я заглянул в http://www.schemers.org/Documents/FAQ/ .
Там довольно легко разглядеть, на чём специализируется Схема.

Ivan8209

А это такая область, куда замусоренным языкам очень уж сложно втиснуться.
Это также можно считать показателем большей универсальности,
то есть меньшей специализации.
---
...Я работаю дзен-специалистом...

enochka1145

> Разницу между JDBC и Oracle OCI понимаешь?
Нет. Могу лишь гадать, что JDBC позволяет абстрагироваться от конкретной реализации базы данных - Oracle, SQL Server, Access...
Ну и что? Насколько я понял, речь шла, с одной стороны, об интерфейсе как о наборе имён функций, с описанием того, что они делают и, с другой стороны, о конкретной реализации этих функций. Я предположил, что пользователю API плевать на реализацию, и API и интерфейс (в твоём смысле) - для него одно и то же.

Hastya

Не совсем понятно, какие такие остальные библиотеки должны поддерживать, например API для доступа к базам данных.
Поэтому ты и любишь перл Вот появится когда-нибудь PDBC или PNDI, Perl Collections и PTA, динамическая загрузка классов и AOP, станет перл платформой, а не языком для парсинга лог-файлов - тогда будут на нем писать, и будут перлисты получать больше C-шников

Marinavo_0507

Всё перечисленное возможно, если я правильно понял сокращения.
По поводу платформы - читай выше про ямы и лопаты.

sergey_m

> станет перл платформой
Кстати, есть еще одно модное маркетинговое слово - решение. Возьми на вооружение.
> и будут перлисты получать больше C-шников
То есть C уже стал платформой?

Hastya

Решение - это немножко другое. Это уже ближе к дотнету. И мне не платят за флеймы на перловые темы а мнение свое основываю на некоем количестве переработанных legacy-систем. На людей, расхваливающих перл, с тех пор смотрю с подозрением. Язык ИМХО ужасен, как с точки зрения средств абстракции, так и с точки читабельности.
Про С я ссылаюсь на твой собственный пример.

Hastya

Нет, дело не в возможности! Возможности и в Visual Basic есть.
По поводу ям и лопат тебе вроде правильно ответили.

Marinavo_0507

Ответили не совсем правильно. Упустили из виду то, что экскаватор дают погонять бесплатно
(платить нужно только за модель с душем, кондиционером и ракетным ускорителем).
Но некоторые похоже по своей воле даже суп есть пытаются той же лопатой.
И дело не в возможностях, действительно.
Каждый имеет возможность подметать улицу зубной щёткой, но вне армии этого обычно не делают.

Marinavo_0507

> зачем это надо код переписывать, если требование ортогонально к самой задаче?
Microsoft и некоторые другие думают так же.
Поэтому поток обнаруженных уязвимостей не стихает.

Marinavo_0507

> очень плохие корни
так может показаться тем, кто понимает только бухгалтерию

Dasar

> Microsoft и некоторые другие думают так же.
> Поэтому поток обнаруженных уязвимостей не стихает
Я говорил о другом.
Думай.
ps
Подсказка:
если у меня была программа:

СпроситьЛогинИПароль;
If (ПодлинностьПароляУстановлена(логин, пароль
{
ПроизвестиРасчеты;
ВывестиРезультатыПользователю;
}
else
НеПуститьПользователя;

И появилась новое требование: обеспечить безопасность,
то надо ли эту программу переписывать следующим образом:

СпроситьЛогинИПарольБезопаснымОбразом;
If (!ПодлинностьПароляУстановленаБезопаснымОбразом(логин, пароль
{
ПроизвестиРасчетыБезопаснымОбразом;
ВывестиРезультатыПользователюБезопаснымОбразом;
}
else
НеПуститьПользователяБезопаснымОбразом;

Marinavo_0507

Эти пять строчек переписывать, может быть, и не надо.
А вот те тысячи, что составляют тела функций, скорее всего придётся.

sergey_m

> Язык ИМХО ужасен, как с точки зрения средств абстракции, так и с точки читабельности.
Повторю еще раз для тех кто невнимательно читает: perl позволяет писать очень плохо, и то, что многие именно так и поступают не означает, что на perl нельзя писать хорошо.
На perl можно писать дюжиной стилей, и не вдаваясь в сравнение их между собой, я просто скажу, что самое ужасное начинается, когда их начинают месить. Когда передирают примеры из разных книжек и чужих програм, то рождаются перловые франкенштейны.
Что же до зарплаты, то это московская (?) или веб (?) специфика. Я например несколько раз видел объявления о найме perl программистов в конторы занимающиеся антиспамом, в т.ч. и в буржуйские, так там была вполне достойная зарплата, такая же как у программистов на других языках.

Ivan8209

Первые два твоих предложения можно преобразовать без потери
истинности: s/perl/C/g, s/perl/C++/g, s/perl/C#/g.
---
...Я работаю антинаучным аферистом...

Hastya

... не означает, что на perl нельзя писать хорошо
А я такого и не говорил, это претензия к другим товарищам. Я говорил об объективных ограничениях перла - это прежде всего касается ООП. Правда, не знаю что там в Перл 6.

Marinavo_0507

ООП - сейчас скорее проблема, чем решение.
См. соседний тред о множественном наследовании.

sergey_m

Э-э, чуве, если ты утверждаешь, что язык ужасен потому, что он не ООП, то это клиника.

Marinavo_0507

> Первые два твоих предложения можно преобразовать без потери
> истинности: s/perl/C/g
На С писать разными стилями потруднее будет.
Настолько труднее, что никому и в голову не приходит без внешних генераторов и хитрых препроцессоров.

sergey_m

Первые два твоих предложения можно преобразовать без потери
истинности: s/perl/C/g, s/perl/C++/g, s/perl/C#/g.
Без потери, но в случае perl это намного более ярко выражено.

Marinavo_0507

Почитал про ООП в перл.
Своеобразно, но не слишком. В принципе, то же самое.

TYU_2008

Что же до зарплаты, то это московская (?) или веб (?) специфика. Я например несколько раз видел объявления о найме perl программистов в конторы занимающиеся антиспамом, в т.ч. и в буржуйские, так там была вполне достойная зарплата, такая же как у программистов на других языках.
Ну, в Москве, C/C++ программистам платят все-таки больше, чем перл. Разброс разный - в одних 100$$, в других 400$$, но обратного я пока не встречал. Хотя, ИМХО, настоящий атец перла на C писать-то должен уметь. XSы то как писать ?

Hastya

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

sergey_m

Я ж и говорю, что похоже такова московская специфика.

Ivan8209

"Real Programmer can write FORTRAN in any language."
Из того, что в Си из функции можно вернуть только одно слово,
никак не следует, что там нельзя писать в функциональном стиле.
Выглядит, конечно, очень уж чуднО, но всё же.
А ещё у меня есть подозрение, что GNU cpp старается всеми силами
подпрыгнуть повыше, став таким образом этим "хитрым
препроцессором." Можно ли cpp считать таким уж внешним?
---
...Я работаю антинаучным аферистом...

Marinavo_0507

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

Ivan8209

Объекты ООП как средство абстракции --- это бред.
Простыми АТД можно обходиться с большим успехом.
---
...Я работаю антинаучным аферистом...

Ivan8209

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

Marinavo_0507

> Си слишком низкоуровневый, поэтому ручной работы не избежать.
Лисп тоже низкоуровневый, но для него
> есть готовые библиотеки
чего для Си сделать не получится.

Ivan8209

Ключевое слово --- "слишком."
На Лиспе, если этих библиотек нет, последние создаются руками за
пятнадцать минут. Не так давно проделывал подобную работу,
устраняя отсутствие человеческого "map". Для Си объёмы кода,
выполняющего то же, значительно выше. Вот и думай, что более
низкоуровневое.
---
...Я работаю антинаучным аферистом...

Marinavo_0507

> Для Си объёмы кода,
> выполняющего то же, значительно выше.
Я думаю, вообще невозможно.
Есть контрпримеры?

Marinavo_0507

Ах, ну да.
Можно написать интерпретатор.
Любой язык можно "расширить" таким образом.
Вот такой вопрос: можно ли (и если да, по каким признакам)
отделить "интерпретаторы других языков" от "библиотек, расширяющих существующий язык"?

Ivan8209


* Overview:: What is GLIB?
* Doubly linked lists:: Doubly linked lists
* Signly linked lists:: Singly linked lists
* List allocators:: List Allocators
* Hash tables:: Hash tables

---
...Я работаю антинаучным аферистом...

Ivan8209


* Signly linked lists:: Singly linked lists
~~~~

Кстати.
---
...Я работаю...

Marinavo_0507

Это библиотека, или интерпретатор, или неизвестно?

Hastya

Объекты ООП как средство абстракции --- это бред.
Простыми АТД можно обходиться с большим успехом.
Кто ж спорит (со вторым утверждением)? Обходись.

Ivan8209

Вообще-то библиотека.
---
...Я работаю антинаучным аферистом...

Ivan8209

И с бОльшим успехом.
---
...Я работаю антинаучным аферистом...

Marinavo_0507

А вот если писать:

#include <lisp.h>

{ "(", "defun", "p", "(", "a", ")", "(", "+", "2", "a", ")", ")",
"(", "print", "(", "p", "3", ")", ")" };
и при запуске оно напечатает

5
, это на каком языке будет?

Ivan8209

Я никогда не сомневался в том, что "Real Programmer can write
FORTRAN in any language."
---
...Я работаю антинаучным аферистом...

Marinavo_0507

То есть, ты считаешь, что на C?

Ivan8209

Считаешь, на Лиспе?
---
...Я работаю антинаучным аферистом...

Marinavo_0507

Думаю, тут не будет ответа, одновременно осмысленного и однозначного.

Hastya

И с бОльшим успехом.
Если ты намекаешь на свои неудачные попытки использования объектов, то остается только посочувствовать.

Ivan8209

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

bleyman

Память-то ладно, она сравнительно дешёвая.
Ей комп. нужен, по производительности на порядок больше моего.
На своём Duron 700MHz с древней видеокартой я прошёл Quake2 без всяких проблем.
Здесь же частота обновления 0.5-1 fps - куда это годится?
Странно это. У меня атлон64 3000+ и гф2мх200, в 1024х768 60фпс. Причём фпс при уменьшении разрешения растут линейно, т.е. затык в карточке.
Что-то у тебя по ходу совсем говнокомп или говнодрова или древняя ЖаваРантайм.

enochka1145

> Что-то у тебя по ходу совсем говнокомп или говнодрова или древняя ЖаваРантайм.
Ну спасибо. Опустил мой заслуженный комп.-ветеран ниже плинтуса...
У меня, повторяю, Duron 700, и никакая видюха. Тем не менее, Quake 2 отлично работал. Java у меня версии 1.6 (Java 6).

shlyumper

Странно это. У меня атлон64 3000+ и гф2мх200, в 1024х768 60фпс. Причём фпс при уменьшении разрешения растут линейно, т.е. затык в карточке.
Что-то у тебя по ходу совсем говнокомп или говнодрова или древняя ЖаваРантайм.
Ну сосет ява по быстродействию, сосет.
На моем совсем древнем компе в свое время Quake 2 без каких-либо ускорителей выдавал 15-25 fps в разрешении 320x200. На Pentium 166MMX + 64 MB RAM. Сомневаюсь, что у реализации на Java в такой конфигурации удастся хотя бы дождаться, пока она загрузится.

bastii

Не слышал что Q2 на Java переносят, это ж много гемора. Зато помню, что так демонстрировали фичу MC++/CLR. CLR тянула Q2 в софтварном режиме очень даже ничего (потеря производительности была порядка 15%)
А на ООП вообще гнать глупо. Не придумали еще ничего лучше. И не сделаешь нормальный фреймворк без ООП, чтобы прогер был в достаточной степени производителен и с другой стороны не испытывал больших ограничений в возможностях. И нет никаких проблем с мн наследованием в ООП, поверь.

Ivan8209

Про ООП смотри в соседней ветке.
Лучше есть и давно придумано.
А ООП --- говно.
---
"Я знаю правду! Все прежние правды --- прочь!"
Оставить комментарий
Имя или ник:
Комментарий: