LINUX.ORG.RU
Ответ на: комментарий от bugmaker

2bugmaker :

> Крайне спорное.

Наверное... Я не Гуру, на истину в последней инстанции не претендую...

> На самом деле, компиляция в байткод теоретически может дать большую нежели статическая компиляция производительность.

Никак! По крайней мере, на эргодических системах. Хотя, гипотеза эргодичности пока не доказана ... :)

Впрочем, в чем мерить производительность. Если, например, в уничтожаемой энтопии на бит программы -- да, конечно!

> Например 1st class functions в принципе возможны только если прога таскает с собой компилер/интерпретатор

Лямбда -- маргинальное направление. Грэм бабки срубил, другим не оставил...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Никак! По крайней мере, на эргодических системах. Хотя, гипотеза эргодичности пока не доказана ... :)

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

> Лямбда -- маргинальное направление. Грэм бабки срубил, другим не оставил...

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

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

2bugmaker:

Домой пошел, может, через полчаса отвечу. Если нет -- завтра.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Лямбда -- маргинальное направление.

А ничего что эти самые лямбды/замыкания используються в большинстве языков в.т.ч. и в промышленном программирование?

CrazyPit ★★★
()
Ответ на: комментарий от bugmaker

bugmaker (*) (14.06.2006 1:36:36):

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

Как это?

Кто мешает при статической компиляции (+загрузке, есснно) просто тупо повторить все те шаги, которые делаются при компиляции в байткод + JIT компиляции?

Вот обратное не верно: JIT ограничен временем, в отличие от наитивного компилятора.

Так что, чисто теоретически, никто не мешает при статической компиляции выполнить полную теоретически достижимую оптимизацию (правда, времени может потребоваться бесконечно много). А вот JIT компилятор по определению ограничен минимизацией суммарного времени оптимизации+выполнения (я подразумеваю оптимизацию по времени выполнения).

Die-Hard ★★★★★
()
Ответ на: комментарий от CrazyPit

CrazyPit:

> А ничего что эти самые лямбды/замыкания используються в большинстве языков в.т.ч. и в промышленном программирование?

Где?

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Ну, если замыкания -- все, что Мир взял от Лямбды...

+ функции высших порядков, вот я курсовик только-что сдал ну чисто имеративный, а всяких там map'ов и списковых включений 5-10 насчитаеться на 1000 строк.

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

Ну, замыкания и функции высших порядков ну совершенно не требуют знания Лямбда-исчисления.

Вот в Сях я возвращаю указатель на функцию, ничего не зная про высшие функции. То же с замыканиями -- я просто захватываю контекст явно. И не хочу знать всякие ученые слова!

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Так что, чисто теоретически, никто не мешает при статической компиляции выполнить полную теоретически достижимую оптимизацию

Мешает. При статической компиляции оптимизатор не знает как будет исполняться программа. Он делает некоторые предположения, но они не всегда верны. Вот небольшое чтиво про run-time optimization: http://www.cs.umd.edu/projects/hpsl/ResearchAreas/runtimeoptim.htm .

bugmaker ★★★★☆
()
Ответ на: комментарий от Die-Hard

К вопросу о лямбдах. Все эти конструкции (в тч list comprohensions) позволяют просто короче записать алгоритм (тот же quicksort в две строчки или list permutations в одну), хотя потом бывает сложновато понять написанное =) Но если грамотно пользоваться, получается очень даже удобно. А вообще хаскель мне нравится легкостью разработки (как на скриптовом языке) и скоростью работы софта (сравнимую с плюсами).

AiLr ★★
()
Ответ на: комментарий от Die-Hard

Raytheon SigLab.

http://www.lispworks.com/success-stories/raytheon-siglab.html

David McClain of Raytheon says 'The screenshot shows our SigLab system running a simulation of an incoming nuclear warhead (all exo-atmospheric), and at 40 seconds into the run you see in the middle left 2-D Sonogram display the effects of a nearby warhead exploding and heating up the target being tracked. This analysis was used at Raytheon to develop advanced rapid detection and discrimination systems for targeting incoming nuclear warheads on our EKV project (Exoatmospheric Kill Vehicle).'

Это Common Lisp.

Sun-ch
()
Ответ на: комментарий от Sun-ch

(lambda (x) (+ 1 x)). Тож чясто юзаю комонлисп для ращётов. Правда не вархедов. Удобно с clisp, начинается трабла с производительностью - компиляю cmucl'ом, все веселы и довольны.

bugmaker ★★★★☆
()
Ответ на: комментарий от lester_dev

И чё? Процессоры под виндой как-то по другому работают?

Sun-ch
()
Ответ на: комментарий от Lockywolf

> Между прочим, BASIC на 9 лет старше С. Поэтому говорить про "начало эры"....

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

anonymous
()
Ответ на: комментарий от anonymous

http://en.wikipedia.org/wiki/BASIC

In computer programming, BASIC (an acronym for Beginner's All-purpose Symbolic Instruction Code[1]) refers to a family of high-level programming languages. It was originally designed in 1963, by John George Kemeny and Thomas Eugene Kurtz at Dartmouth College, to allow students not in science fields to use computers.

Понимаешь, этим ВСЁ сказано. А теперь читаем про C на http://en.wikipedia.org/wiki/C_programming_language :

The C programming language (often, just "C") is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the UNIX operating system. It has since spread to many other operating systems, and is now one of the most widely used programming languages. C is distinguished for the efficiency of the code it produces, and is the most commonly used programming language for writing system software, though it is also widely used for writing applications. Though not originally designed as a language for teaching, and despite its somewhat unforgiving character, C is commonly used in computer science education, in part because the language is so pervasive.

А вот паскаль ( http://en.wikipedia.org/wiki/Pascal_programming_language ):

Initially, Pascal was a language intended to teach students structured programming, and generations of students have "cut their teeth" on Pascal as an introductory language in undergraduate courses.

Разницу чуешь? А теперь васика протащили в general-purpose, об этой эре и речь.

anonymous
()
Ответ на: комментарий от anonymous

> А теперь васика протащили в general-purpose, об этой эре и речь.

Мдя, а мне еще паскаль не нравился. Лучше паскаль, чем пейсик, в паскале хотя бы правильному стилю способствует.

anonymous
()
Ответ на: комментарий от anonymous

Идите нафиг, что удобнее - то и выживет.
И BASIC в этом намного лучше и паскаля, и еще много чего

Писать на ем фотошоп - неразумно, но на бейсике многое реализуется просто
быстрее

А Паскаль...
Зачем нужен паскаль, если все, что можно
сделать на паскале можно написать на
бейсике - проще или
на С++ - быстрее работающим

Lockywolf ★★★
()
Ответ на: комментарий от Lockywolf

> И BASIC в этом намного лучше и паскаля, и еще много чего

Это чем же? Своей ублюдочностью, что ли? Васик удобен для написания совсем маленьких, совсем смешных программок. Чуть посложнее программа - уже требуется минимум структурное программирование.

anonymous
()
Ответ на: комментарий от Lockywolf

> А Паскаль... Зачем нужен паскаль, если все, что можно сделать на паскале можно написать на бейсике - проще или на С++ - быстрее работающим

Глупость про быстрее работающий C++ можешь засунуть себе в анус. Я в своё время сравнивал вычислительные алгоритмы в Delphi и в C++. Победила дружба - где-то Delphi даже оказалась быстрее.

Второе. Pascal за счёт большей тоталитарности сильнее защищает от глупых ошибок, что для быдлокодера - плюс охрененный.

И последнее: даже весьма сложный проект компилится в Delphi единицы секунд, в то время как C++ пердит над ним минутами. И это - факт.

anonymous
()
Ответ на: комментарий от Sun-ch

2Sun-ch :

Сугубо моя точка зрения, которую я никому не навязываю:

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

Die-Hard ★★★★★
()
Ответ на: комментарий от bugmaker

bugmaker (*) (14.06.2006 9:46:43):

>> Так что, чисто теоретически, никто не мешает при статической компиляции выполнить полную теоретически достижимую оптимизацию

> Мешает. При статической компиляции оптимизатор не знает как будет исполняться программа.

О, Боже! Ну кто мешает сделать динамический линковщик, решающий все эти проблемы?

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

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> динамический линковщик, решающий все эти проблемы

Как он будет?

> Адаптивная оптимизация при компиляции в машинный код -- даже не смешно! Пока эта оптимизация отработает, исходные данные для оптимизатора многократно поменяются.

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

Насчёт лиспа - я работал с им немного и вполне оценил ево превосходство над другими. ИМХО слухи о ево маргинальности вызваны необычностью синтаксиса только.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

bugmaker:

Ну вот, смотри:

1. Компилим в байткод, потом через пару дней JITим.

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

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

> Тем не менее в тырнете полно работ на эту тему.

А тама полно работ и о том, что Жаба Це по всем параметрам уделывает! Модно, востребовано маркетоидами...

> Насчёт лиспа - я работал с им немного и вполне оценил ево превосходство над другими. ИМХО слухи о ево маргинальности вызваны необычностью синтаксиса только.

Маргинальность Лиспа доказана практикой.

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

Последний всплеск связан с тем, что его Грэм распропагандировал, чтобы бабки на этом срубить. Объективно это совпало по времени с моментом, когда компьютеры стали достаточно мощными, чтобы тормоза интерпретируемых языков не бросались в глаза.

А насчет необычности синтаксиса...

Если под "обычным" ты понимаешь синтаксис императивных алголоподобных языков -- конечно, необычный. Но посмотри на Форт, на ТеХ, на Пролог, на Форм, на Аксиом, на SQL, на Перл, на... Чего такого в Лиспе необычного-то?

ЗЫ

Насчет удобства Лиспа, аллегория:

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

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Лисп -- маргинален.

Юникс на десктопе тоже. И?

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

Интересно как он это показывал? Он показал только свою сильную отличность от попсы -> непопулярность. Плюс он взял на себя провал "Искусственного интеллекта". А как же Emacs Lisp им пользуются очень многие и на нём написано куча мега-полезных вещей.

CrazyPit ★★★
()
Ответ на: комментарий от Die-Hard

>> Объективно это совпало по времени с моментом, когда компьютеры стали достаточно мощными, чтобы тормоза интерпретируемых языков не бросались в глаза.

АРГХ! Lisp КОМПИЛИРУЕТСЯ В МАШИННЫЙ КОД.

> Но посмотри на Форт, на ТеХ, на Пролог, на Форм, на Аксиом, на SQL, на Перл, на...

Да и эти яхыки конечно же популярнее Лиспа - тоже самое. А SQL тут вообще не причём - этоже DSL, да и Тех. А Перл -- алголоподобный так что исключаем.

CrazyPit ★★★
()
Ответ на: комментарий от Die-Hard

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

... - он переборол себя, вырос, стал физиком и придумал биореактор :)

Pi ★★★★★
()
Ответ на: комментарий от Pi

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

> ... - он переборол себя, вырос, стал физиком и придумал биореактор :)

В фортунки!

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

>Интересно как он это показывал? Он показал только свою сильную отличность от попсы -> непопулярность

вот ты знаешь... когда я численные методы писал на окамле, надо мной смеялись :( многие слабо подозревают о существовании чего-либо кроме Ц, Паскаля, Жабы и, теперь, .НЕТа - они не понимают нх это вообще нужно. Я к тому, что такую категорию людей вообще не стоит брать в расчёт. Остальная часть программерского населения знает его, наслышана, что он нипадецки крут, используется в АИ, емаксе, гуиле. На нём можно ничего не писать, но он будет на слуху - и это, имхо, и есть проявление попсы. Это как Дима Билан: он него соплячки писаются на концертах, а если спросить почему, то ответ будет "Ой, ну он такой классный!"

ЗЫ. Ну всё... Билана с Лиспом сравнил - порвут :)

Pi ★★★★★
()
Ответ на: комментарий от Pi

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

Надо заметить что это остальная часть процентов 5-10 от программерской тусовки, так что с попсой вряд ли можно сравнивать. И вообще такая ситуация в основном на ЛОРе, вон на РСДН такого отношения к Лиспу далеко нет...

CrazyPit ★★★
()
Ответ на: комментарий от Die-Hard

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

Teak ★★★★★
()
Ответ на: комментарий от Die-Hard

>А тама полно работ и о том, что Жаба Це по всем параметрам уделывает! Модно, востребовано маркетоидами...

Это не модно, а так и есть

anonymous
()
Ответ на: комментарий от bugmaker

2bugmaker:

Кстати, насчет байткода.

Я тут в магази пока сходил, подумал... :)

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

Короче, слил в этом вопроси, признаЮ...

Die-Hard ★★★★★
()
Ответ на: комментарий от CrazyPit

>> Лисп -- маргинален.

> Юникс на десктопе тоже. И?

Ну, Юних стал маргинальным стараниями маркетоидов, после глобального опопсевания ИТ технологий, когда компъютерами стали забивать гвозди -- в смысле, использовать их исключительно как пишмашинки. Для _моих_ целей он совершенно даже майнстрим. Прикинь, у нас на этаже нет ни одного компьютера под Виндузом. Все десктопы под Линуксом. Даже секретарши под ним сидят. И, думаю, во всем 16-этажном здании вряд ли найдется много компьютеров с Виндой...

А Лисп получил популярность (в последний раз) как раз благодаря а-ля маркетоидным талантам Грэма.

Die-Hard ★★★★★
()
Ответ на: комментарий от Teak

Teak:

> но ты ни разу ничего толком (кроме "глупых скобок", которые на мастику не тянут как-то)

Только что сказал. Ок, сформулирую тезисно.

Дисклаймер: я не претендую на истину в последней инстанции и даже не гарантирю, что со временем эта моя точка зрения не изменится.

1. За почти 40 (!) лет своего развития Лисп постоянно "имел потенциал", но ни разу его не реализовал. Единственный из ранних языков, который никогда не был популярным. Пик его развития пришелся на времена, когда программирование было еще наукой, разделом математики; когда попсы и Виндуза еще не было. Что сейчас-то изменилось? Скажу: попсы стало больше. Как результат, (п.2:)

2. Нынешний всплеск популярности произошел стараниями талантливого новеллиста и мошенника Грэма, который сумел таким способом окучить массу падких на высшую научность леммингов и заработать кучу денег.

3. Изредка мне нужно кое-что сделать на Лиспе: Емакс на нем, Редьюс на нем, некоторые алгоритмы на нем реализованы. Каждый раз мне приходится учить его заново. Единственный язык, который я забываю после полугода релаксации! Либо я дурак, либо язык не очень логичный. Я подразумеваю второе, вы вольны принять первое, есснно.

4. Вся история развития Лиспа представляет собой иллюстрацию к Искусству Пришивания Рукава к -- ну, вы поняли... Постоянно чего-нибудь не хватало, и ЭТО добавляли. Постоянно не хватало императивщины, и ее добавляли. Недаром он развалился на столь огромное число диалектов!

5. Нахрена ЭТИ скобки? Это ж надо было тонко извратиться, придумать писать s-выражения в Польской (т.е. БЕССКОБОЧНОЙ!) нотации, но со столь чудовищным злоупотреблением скобками!!

Die-Hard ★★★★★
()
Ответ на: комментарий от CrazyPit

CrazyPit :

2CrazyPit:

> Lisp КОМПИЛИРУЕТСЯ В МАШИННЫЙ КОД.

Угу, все диалекты -- прямо в ELF.

>> Но посмотри на Форт, на ТеХ, на Пролог, на Форм, на Аксиом, на SQL, на Перл, на...

> Да и эти яхыки конечно же популярнее Лиспа - тоже самое

А я спорю? Лисп -- один из... (Хотя ТеХ, все же, гораздо популярнее Лиспа).

> ... этоже DSL, ...

Вот и Лисп -- тоже DSL! :) По крайней мере, сравнимо с ТеХом.

> А Перл -- алголоподобный

Но синтаксис _весьма_ необычен. Мы ж про привычность синаксиса говорим?

Моя жена отказывается иметь дело с Перлом! Мотивация -- "это вам хорошо, вы привыкли к скриптам и синтаксису шелла! А я эти птичьи кракозябины не понимаю..." ("Родными" языками для нее являются Клиппер и SQL, потом было несколько лет ВижуалВасика, а сейчас еще ЦеШарп добавился).

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Извиняюсь, обсчитался:

> 1. За почти 40 (!) лет своего развития Лисп

Почти 50 лет!!!

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Такое чувство, что 1, 2, 4 пункты написаны некомпетентным маркетологом... Что-то я там аргументов не вижу. Хотя тоже не претендую на знание истины - может что-то и верно.

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

А по пункту 3 можно подробнее? Что можно забыть в лиспе?

Fedor ★★★
()
Ответ на: комментарий от Fedor

2Fedor:

> Такое чувство, что 1, 2, 4 пункты написаны некомпетентным маркетологом... Что-то я там аргументов не вижу.

Ну вот что ты ждешь в ответ на столь убийственную логику... Чтобы я стал возражать: "Нет, там много сильных аргументов!"?

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

> По-моему, даже при отсутствии подсветки синтаксиса скобки совсем не мешают.

А по-моему мешают. И не только по моему, это известная feature синтаксиса, по которой Лисп сильно критикуют.

> А по пункту 3 можно подробнее? Что можно забыть в лиспе?

Да вообще все!

Опять я вопроса не понимаю. Наверное, у лисперов обыденная логика сильно отличается от моей...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>> Такое чувство, что 1, 2, 4 пункты написаны некомпетентным маркетологом... Что-то я там аргументов не вижу.

>Ну вот что ты ждешь в ответ на столь убийственную логику... Чтобы я стал возражать: "Нет, там много сильных аргументов!"?

>Попробуй понять, что я имел в виду, или сформулируй претензии поконкретнее.

Я не утверждал, что лисп маргинален (и что он немаргинален - тоже), так что мне вроде и формулировать нечего.

Ладно, попробую

Ссылки на историю в IT-сфере режут слух. И вообще, что значит "Лисп постоянно "имел потенциал""? Можно на нём писать или нет? Грэм смог, у меня иногда получается, что ещё от языка нужно?
"талантливый новеллист и мошенник Грэм" - зачем опускаться до оскорблений? Он-то что не так сделал?

В общем, можете не отвечать, видимо, опять всё дело в скобках

Fedor ★★★
()
Ответ на: комментарий от Fedor

2Fedor: > Ссылки на историю в IT-сфере режут слух.

Ну, тогда тяжело, конечно...

> И вообще, что значит "Лисп постоянно "имел потенциал""? Можно на нём писать или нет?

Можно. Мастику, оказывается, тоже можно кушать...

> Грэм смог, у меня иногда получается, что ещё от языка нужно?

Дык, и у меня получается. Неудобно, правда...

> "талантливый новеллист и мошенник Грэм" - зачем опускаться до оскорблений?

А че, "талантливый" -- оскорбление?

На самом деле, прошу прощения, я отвечал Teak'у. Я ему в привате обосновывал, почему считаю Грэма мошенником. Забудте этот эпитет, все остальное -- в силе.

Собственно, извиняюсь, мне недосуг дискутировать с лисперами, которым упоминание про историю режет слух. Вроде, я все сформулировал, добавить нечего...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Объясню про "режет слух"
Какая разница, сколько лет лиспу? Вы ещё про искусственный интеллект вспомните и как он всех разочаровал.
В IT-сфере актуальным считается текущее положение дел.
Кстати, на rsdn аргументы против лиспа действительно приводили.
Так что мне просто было интересно чужое мнение, подкреплённое КОНКРЕТНЫМИ примерами.

Fedor ★★★
()
Ответ на: комментарий от Fedor

Ну, у контингента на rsdn может быть один аргумент: на LISP нельзя писать в VS 2005 и в MSDN по нему нет документации

anonymous
()
Ответ на: комментарий от Die-Hard

Мне просто кажется, что мнение о Грэме тут нерелевантно несколько. Я не хочу сказать, что Грэм мошенник или, наоборот, не мошенник, даже если он и мошенник в том смысле, как ты сказал, то и это ИМХО ничего в самом языке не меняет. Я не лиспер, я на нём пару сотен строк написал максимум, но мне тоже упоминание об истории режет слух. Опять же, я верю, что чисто статистически можно полагать, что если за такое время язык так и не стал популярен, то наверное что-то в самом языке не так, но это всё смутные догадки, а мне хотелось чего-то более конкретного.

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

Что до скобок, то и для них вроде есть оправдание - более простая и мощная система макросов.

Ты пойми, у меня тут нет пока своего мнения, я просто с интересом слушаю чужие.

Teak ★★★★★
()
Ответ на: комментарий от Lockywolf

> Идите нафиг, что удобнее - то и выживет. И BASIC в этом намного лучше и паскаля, и еще много чего

> А Паскаль... Зачем нужен паскаль, если все, что можно сделать на паскале можно написать на бейсике - проще или на С++ - быстрее работающим

Мдя, мне паскакаль не нравится по сравнению с cи и сипэпэ. Тяжеловесен он, удалбывает бягин эндь расписывать даже через автокомплит, с указателями арифметика неудобная, там где на си пара символов на паскакале надо городить конструкции вида cardinal(pointer(p))+sizeof(integer), вместо unsigned int какой-то cardinal и всякое прочее. Не стандартизирован и с переносимостью проблемы.

Но на паскакале можно стать нормальным программистом, варианты FreePascal и Delphi по синтаксису не намного хуже c++, кое-что даже лучше сделано, например, конструкторы и деструкторы.

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

Хуже Бейсика только язык в 1C - это угребище жуткое мутантное порождение воспаленного мозга.

anonymous
()
Ответ на: комментарий от Die-Hard

> За почти 40 (!) лет своего развития Лисп постоянно "имел потенциал", но ни разу его не реализовал. Единственный из ранних языков, который никогда не был популярным. Пик его развития пришелся на времена, когда программирование было еще наукой, разделом математики; когда попсы и Виндуза еще не было. Что сейчас-то изменилось? Скажу: попсы стало больше. Как результат, (п.2:)

Просто люди до лиспа ещё не доросли, вот к 100 лет истории подойдёт, тогда может быть:)

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

С этим согласен, а Грэм не мошенник а продуманный такой капиталист. С такой логикой - 99% капиталистов мошенники. Ну и где мы сейчас без этих мошенников сидели?

> Изредка мне нужно кое-что сделать на Лиспе: Емакс на нем, Редьюс на нем, некоторые алгоритмы на нем реализованы. Каждый раз мне приходится учить его заново. Единственный язык, который я забываю после полугода релаксации! Либо я дурак, либо язык не очень логичный. Я подразумеваю второе, вы вольны принять первое, есснно.

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

> Вся история развития Лиспа представляет собой иллюстрацию к Искусству Пришивания Рукава к -- ну, вы поняли... Постоянно чего-нибудь не хватало, и ЭТО добавляли. Постоянно не хватало императивщины, и ее добавляли. Недаром он развалился на столь огромное число диалектов!

ЭЭЭ ну это да, если говорить про развитие до Common Lisp, но уже давно стандарт есть - и там есть всё императивщина, функциональщина, ооп и прочее. Да и вообще добавление в лисп чего-угодно, в отличае от подовляющего большинства других языков не заставляет измеять транслятор - достаточно написать пару макросов.

> Нахрена ЭТИ скобки? Это ж надо было тонко извратиться, придумать писать s-выражения в Польской (т.е. БЕССКОБОЧНОЙ!) нотации, но со столь чудовищным злоупотреблением скобками!!

Вот здесь я уже приводил очень весомый аргумент: Чем эти скобки хуже обычной записи вызова функций - ничем, кроме математических вычислений, в остальновм ВСЁ ИДЕНТИЧНО, только первый параметр на перед открвыающейся скобкой а после. Это может быть аргументом только если в программе много мат.-вычислений. Да и то для этого есть спец макрос, который включает общепринятый порядок.

CrazyPit ★★★
()
Ответ на: комментарий от Die-Hard

> Угу, все диалекты -- прямо в ELF.

Большинство трансялторов CommonLisp именно компилируют в маш.код, 
правда не все в ELF но это не суть (Из основых CLISP, SBCL, CMUCL, 
Allegro, LispWorks - только CLISP bytecode-only - ). Приведу в 10 раз:

CL-USER> (defun a (a b) (- a b (* a b)))
A
CL-USER> (compile 'a)
; Compiling LAMBDA (A B): 
; Compiling Top-Level Form: 
A
NIL
NIL
CL-USER> (disassemble 'a)
5913EB80:       .ENTRY A(a b)                ; (FUNCTION (T T) NUMBER)
      98:       POP     DWORD PTR [EBP-8]
      9B:       LEA     ESP, [EBP-32]

      9E:       CMP     ECX, 8               ; [:NON-LOCAL-ENTRY]
      A1:       JNE     L0
      A3:       MOV     [EBP-12], EDX
      A6:       MOV     [EBP-16], EDI

      A9:       MOV     EDX, [EBP-12]        ; No-arg-parsing entry point
                                             ; [:NON-LOCAL-ENTRY]
      AC:       MOV     EDI, [EBP-16]

;;; [4] (- A B (* A B))

      AF:       CALL    #x1000024F           ; #x1000024F: GENERIC--
                                             ; [:CALL-SITE]
      B4:       MOV     ESP, EBX             ; [:SINGLE-VALUE-RETURN]
      B6:       MOV     [EBP-20], EDX
      B9:       MOV     EDX, [EBP-12]
      BC:       MOV     EDI, [EBP-16]

;;; [5] (* A B)

      BF:       CALL    #x100002D0           ; #x100002D0: GENERIC-*
                                             ; [:CALL-SITE]
      C4:       MOV     ESP, EBX             ; [:SINGLE-VALUE-RETURN]
      C6:       MOV     EDI, EDX
      C8:       MOV     EDX, [EBP-20]

;;; [4] (- A B (* A B))

      CB:       CALL    #x1000024F           ; #x1000024F: GENERIC--
                                             ; [:CALL-SITE]
      D0:       MOV     ESP, EBX             ; [:SINGLE-VALUE-RETURN]

      D2:       MOV     ECX, [EBP-8]         ; [:BLOCK-START]
      D5:       MOV     EAX, [EBP-4]
      D8:       ADD     ECX, 2
      DB:       MOV     ESP, EBP
      DD:       MOV     EBP, EAX
      DF:       JMP     ECX
      E1:       NOP
      E2:       NOP
      E3:       NOP
      E4:       NOP
      E5:       NOP
      E6:       NOP
      E7:       NOP
      E8: L0:   BREAK   10                   ; Error trap
      EA:       BYTE    #x02
      EB:       BYTE    #x19                 ; INVALID-ARGUMENT-COUNT-ERROR
      EC:       BYTE    #x4D                 ; ECX
; No value

 А диалектов (если рассматривать универсальные ЯП) осталось 2 - CL и Схема. 

> Вот и Лисп -- тоже DSL! 

Не лисп - это система для создания DSL:)

> Но синтаксис _весьма_ необычен. Мы ж про привычность синаксиса говорим?

Чем? Перл был моим 4 языком после Pascal, C, Basic - основил базу за 
несколько часов, и всё восторгался на сколько это легче того что я 
знал раньше, к тому же похоже на с (это мои мысли на то время). 

Кстати насичёт девушек. Я свою подругу учил основам программирования 
(до этого она даже басик не знала) так вот она просекла схему намного 
лучше и быстрее чем Питон(!!!!) вот так то.

CrazyPit ★★★
()
Ответ на: комментарий от Die-Hard

> 1. За почти 40 (!) лет своего развития Лисп...

Не 40, а 50. С 1958 года, смотри http://www.levenez.com/lang/ из ныне используемых языков старше только фортран.

> 2. Нынешний всплеск популярности произошел стараниями талантливого новеллиста и мошенника Грэма,

Про Луговского забыл.

> Постоянно чего-нибудь не хватало, и ЭТО добавляли.

Странно, я читал наоборот, что из лиспа все время брали концепции в другие языки.

anonymous
()
Ответ на: комментарий от CrazyPit

>Кстати насичёт девушек. Я свою подругу учил основам программирования
(до этого она даже басик не знала) так вот она просекла схему намного
лучше и быстрее чем Питон(!!!!) вот так то.

Я об этом пытался сказать )))
Если начать с лиспа - он не кажется сложным

Fedor ★★★
()
Ответ на: комментарий от Teak

Teak :

> ... даже если он и мошенник в том смысле, как ты сказал, то и это ИМХО ничего в самом языке не меняет.

Разумеется!

Но это объясняет _текущий_ всплеск популярности.

> ... но мне тоже упоминание об истории режет слух ...

Не понимаю...

Я утверждаю, что маргинальность/мейнстимность доказывается не парой фокуснических фраз, а фактами. Почему вы признаете только маловыдержанные факты и отказываетесь признавать факты двадцатилетней, скажем, выдержки, я понимать отказываюсь.

Или вы с порога отвергаете эргодичность? :)

> Опять же, я верю, что чисто статистически можно полагать, что если за такое время язык так и не стал популярен, то наверное что-то в самом языке не так, ...

Это ПОЧТИ все, что я хотел сказать.

Второе -- это ПЕРВЫЙ в истории пример раннего языка, так и не ставшего популярным. Перед ним был Фортран -- наверное, до сих пор один из самых популярных. Из ранних язков (Фортран, Кобол, Алгол, Лисп) Лисп был самым претензиозным, но и (единственный) так никогда и не бывший популярным.

Подытоживая, формулирую (в очередной раз) аргумент:

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

>... но ведь это может быть и твоя личная несовместимость с языком.

Разумеется!

Однако, моя личная несовместимость релевантна лишь тезисам 3 и 5, а я приводил тезисы в порядке убывания доказательности, BTW!

> Что до скобок, то и для них вроде есть оправдание - более простая и мощная система макросов.

1. Как кол-во скобок связано с мощностью макросов?

Посмотри на ТеХ. Система макросов ничуть не уступает в мощности, но скобки (они там {}) конечного программиста совершенно не напрягают!

2. Мощная система макросов появилась в языке через 20 лет после мощной системы глупых скобок...

Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous

2anonymous (*) (15.06.2006 13:28:36):

> Не 40, а 50.

А что, чукча -- не читатель?:

Die-Hard (*) (15.06.2006 3:02:39):

"Извиняюсь, обсчитался: ... Почти 50 лет!!!"

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Ну, если так... Но это не объяснение, а просто констатация. В общем, я не удовлетворён. :)

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

С техом знаком шапочно, жене маленько помогал... Взгляну поподробнее.

Teak ★★★★★
()
Ответ на: комментарий от CrazyPit

CrazyPit (15.06.2006 12:22:37):

> ...а Грэм не мошенник а продуманный такой капиталист.

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

> ...базовые основы Лиспа во много раз проще почти любого языка. ...

Но очень специфичны, и специфика эта совершенно не востребована в прочих областях интеллектуальной деятельности...

Впрочем, конечно, основную роль, скорее всего, играют личные особенности интеллекта.

> Чем эти скобки хуже обычной записи вызова функций

Хуже, ибо:

1. Хотя бы потому, что уравнивают в "мгновенном" восприятии имя функции и аргументы.

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

Die-Hard ★★★★★
()
Ответ на: комментарий от Teak

2Teak:

> Но это не объяснение, а просто констатация.

Ну, типа, да... На то и факты, чтобы их констатировать!

Ок, резюме:

1. Мне лично Лисп не нравится.

2. Поскольку за 50 лет он не понравился большинству потенциальных юзеров, я делаю вывод, что дело не столько во мне, сколько в особенностях этого языка.

3. Нынешний всплеск популярности я объясняю для себя влиянием Грэма.

Собственно, наверное, я все высказал что мог по этому вопросу...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

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

Что-то я не очень чётко понял, можно пример такого "группирования произовольного кол-ва тождественных символов"?

CrazyPit ★★★
()
Ответ на: комментарий от Die-Hard

> 1. Мне лично Лисп не нравится.

На вкус, на цвет, как говорится. Я его тоже толком так и не изучил.

> 2. Поскольку за 50 лет он не понравился большинству потенциальных юзеров, я делаю вывод, что дело не столько во мне, сколько в особенностях этого языка.

А вот такая позиция вызывает, всё-таки, лёгкое недоумение. Во первых, не секрет, что "большинство потенциальных юзеров" дальше бейсика/фортрана/дельфи/java/C# в принципе не продвигается, толи им не нужно, толи ещё чего. Быть может, по аналогии с математикой, если школьную освоили очень многие, интегральное и дифференциальное исчисление -- тоже немало, то например что такое Абелева категория и чем отличается категория Гротендика расскажет явно меньшее число людей.

Во вторых, язык лисп или его диалекты находят применение не только для "академических паззлов", Scheme успешно используется для обучения, а также есть lisp в Emacs, в AutoCAD, поиск по словосочетанию "lisp+scheme" на sourceforge.net выдаёт результат из 433 проектов и далеко не все из них трансляторы лиспа. Кстати, советую взглянуть на них -- довольно любопытные проекты бывают. Да и тот же Луговский помнится в полемике кидал ссылки на серьёзные вакансии для знающих лисп.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

> Да и тот же Луговский помнится в полемике кидал ссылки на серьёзные вакансии для знающих лисп.

Не случяйно помниш в каком треде?

ЗЫ Поиск на ЛОР по слову "лисп" даёт 666 резалтов ^_^

bugmaker ★★★★☆
()
Ответ на: комментарий от anonymous_incognito

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

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

anonymous_incognito (*) (15.06.2006 22:48:23):

>> 2. Поскольку за 50 лет он не понравился большинству потенциальных юзеров, я делаю вывод, что дело не столько во мне, сколько в особенностях этого языка.

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

Толи я совсем уж дурак, толи крыша поехала...

Ок, в еще раз повторяю. Последний раз, больше не буду, сколько можно...

Пик развития Лиспа пришелся на те времена, когда программирование не изучали в школе. Это было горячее направление математики, а понятия юзера в современном смысле не существовало. Почему-то ВСЕ языки бывали в те времена востребованы. Кроме Лиспа...

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

> Кстати, советую взглянуть на них -- довольно любопытные проекты бывают.

Уй, а я не глядел...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Толи я совсем уж дурак, толи крыша поехала...

:) Ладно, и вправду закругляйся, ИМХО тема исчерпала себя...

> Единственная моя версия -- уж очень он неудачен...

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

> Уй, а я не глядел...

Это я так, извини, если я на неуместный менторский тон перешёл.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Кстати, вспомнил. Есть сходство в плане распространённости с языком Forth. Он тоже имеет свою нишу, даже довольно широкую, если считать PostScript диалектом, оригинальную концепцию, но никогда особо популярным не был.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

2anonymous_incognito:

> Есть сходство в плане распространённости с языком Forth. Он тоже имеет свою нишу, даже довольно широкую, если считать PostScript диалектом, ...

А я об чем! Как сейчас принято говорить, DSL!!

Хотя, кстати, пример с Постскриптом показывает, что именно удачный диалект много значит. Кто сейчас вспоминает про Форт? А про Постскрипт, думаю, все слышали.

Я к чему: если не нравится трактовка "Грэм -- мошенник", возможна трактовка "Грэм показал мощь Лиспа как DSL для фильтрации спама". Кстати, а Дядька Столлман заюзал сий DSL вообще как доктор прописал, для обработки списков...

Die-Hard ★★★★★
()
Ответ на: комментарий от CrazyPit

2CrazyPit:

>> ...группирование в начале комплексного выражения произвольного...

Пардон, в конце.

Ладно, вот пример.

Функциональная запись, вычисляемая в 7:
Plus(
     2, 
     Multiply(
               Plus(0,1),
               Plus(2,3)
     )  
)

(типа ранних Лисповских М-выражений)

Аналогично без лесенки, для иллюстрации проблемы:

Plus(2,Multiply(Plus(0,1),Plus(2,3)))
Семантика прозрачна, но скобки    ^^^ достают.

Лисперы предпочли им S-выражения, в духе Лямбды, понимаю. В высшей
степени научно! Но, что интересно, Лямбды-то не получилось!!

От скобок избавиться легко в прямой Польской записи:

+ 2 * + 0 1 + 2 3
    ^^^
Операции иногда группируются, _немного_ анноит. Но операции-то хоть
по-разному обозначаются (в отличие от скобок!) (кстати, в обратной
Польской нотации все вообще совершенно читабельно: 2 3 + 0 1 + * 2 +:
хотя операции и группируются, но _порядок_ группировки естественнен).

Но это ненаучно (ибо в Лямбде мы валентность не фиксируем). В 
результате получаем:
(Plus 2 (Multiply (Plus 0 1)(Plus 2 3)))
                                     ^^^ это -- удобно?

В чем сермяжная истина S-выражений (versus M-выражений)? В отсутствии
запятых?
 
И сравним это с чисто императивной инфиксной  конструкцией cо
скобками:
2+((0+1)*(2+3))

Вот, только честно, предположим, мы не знаем ни Лямбды, ни Польской
записи, -- какой вариант наиболее читабелен? Я ставлю на инфиксную
нотация со скобками. Даже без приоритетов (привычных со школы!) оно
как-то читабельнее.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Для арифметического всё правильно, но... в большинстве моих прог арифметического, по сложности превышающего (+ 1 x) не больше полпроцента. Форт конешно хорош, очень хорош, да. Только вот, при ошибках в записи, например при пропуске оператора, стек перекосит и найти ашыпку весьма проблематично. Также, не очень прикольно в такой записи генерить 1st class functions, вместо простого '(+ 1 x).

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

2bugmaker:

> Форт конешно хорош, очень хорош, да. Только вот, при ошибках в записи, например при пропуске оператора, стек перекосит и найти ашыпку весьма проблематично.

Да, в обратной Польской нотации есть такая беда: программы легко пишутся и _сравнительно_ легко читаются, но вот при малейшем сбое весьма затруднительно локализовать этот сбой, за исключением констатации факта этого сбоя...

Однако, ИМХО не так уж сложно это решить на стадии компиляции. Более того, Форт -- не шедевр. Можно было сделать все гораздо лучше, наверное...

> Для арифметического всё правильно, но... в большинстве моих прог арифметического, по сложности превышающего (+ 1 x) не больше полпроцента.

Это ж просто пример! Замени арифметические операции на любые другие операторы...

> Также, не очень прикольно в такой записи генерить 1st class functions, вместо простого '(+ 1 x).

Ну, в Постскрипте это так звучит: {1 x add}

ИМХО проще...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Можно было сделать все гораздо лучше, наверное...

Нельзя, принципиально. Можно только в лучшем случае определить дисбаланс. Например я делаю PUSH(v1) PUSH(v2) PUSH(v3) CALL(2) CALL(3), где PUSH - поместить одно в стек, а CALL(n) - извлечь n параметров из стека, выполнив некоторую функцию и поместить 1 результат в стек. Видиш, для последнего вызова не хватает аргументов. Кто может угодать, где я забыл аргумент, в начале функции, перед самым последним вызовом или где-то в середине? CALL(2) вызывается с правильными аргументами или уже на этом этапе стек перекошен? А такие цепочки операций могут быть очень длинными...

> Замени арифметические операции на любые другие операторы...

Заменил... Одна мелкая задачка, случайно увиденная недавно на одном из форумов: http://lib.mexmat.ru/forum/viewtopic.php?t=3322

> Данные целые числа p,q, {a_i} i in [0..N), p>=q. В последовательности {a_i} заменить нулями члены,модуль которых при делении на p дает в остатке q.

На лиспе всё просто и изящно (mapcar (lambda (x) (if (eq q (mod (abs x) p)) 0 x)) a). Попорбуй на чём-нибудь другом? В том то и дело, что арифметические операции имеют исторически сложившиеся неудачные записи, а лисп не пытаецо следовать неудачным традициям просто в целях "совместимости".

> Ну, в Постскрипте это так звучит: {1 x add}

те же яйтсы, токо в профиль. Недостаток такогй записи очевиден: при большом количестве аргументов сразу не видно, какая функция с ними вызывается, и вызывается ли вообще. Да и одни и те же аргументы откусить от функции и присобачить к другой нетривиально, ведь откусывается не кончик хвоста а бошка...

(setq z '(* 2 3 4))

(eval z)

(eval (cons '+ (rest z)))

в последнем умножение * заменяется на сложение +.

bugmaker ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.