LINUX.ORG.RU

Хаскелль - барахло


0

0

Наткнулся на обсуждение Хаскелля на хабре http://mikhanoid.habrahabr.ru/blog/38938.html

Оказалось, Хаскеллю для запуска программ необходима некислая виртуальная машина с некислым футпринтом, так какого хрена противники жабы так превозносят свой Хаскелль, ведь их рантайм ничуть не меньше того же JRE? И при том не имеет версии для Windows, в отличие от жабы

Перемещено cavia_porcellus из General

anonymous

1) Тут скорее вопрос красоты и чистоты языка :)
2) Как это не имеет версии для Windows?

Deleted
()

Нашли что сравнивать.

smh ★★★
()

>Хаскеллю для запуска программ необходима некислая виртуальная машина

это интерпретируемый язык, кретин ;)

amoralyrr ★☆
()

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

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

>1) Тут скорее вопрос красоты и чистоты языка :)

Вроде в жабе 22 ключевых слова, неужели в Хаскеле меньше?

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

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

Во-вторых, реквестирую полноценный компилятор питона.

В-третьих, для си тоже есть интерпретаторы, но считается компилируемым...

Прежде чем развести демагогию, давайте определимся по какому признаку делить будем? Например, если по самой распространенной реализации, то и си и хаскелл (ghc) нужно отнести к компилируемым.

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

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

А что, бывают _языки_ интерпретируемыми? Я всегда думал, что только реализации :D

Кстати, не скажу про абстрактный лисп, но банальный Питон от Гвидо - компилятор.

Сегодня интерпретируемых реализаций языков вообще с трудом найти можно. Я навскидку кроме bash'а и javascript'а и не назову ничего.

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

> Вроде в жабе 22 ключевых слова, неужели в Хаскеле меньше?

Откройте для себя языки без ключевых слов. Для вас джава пример красоты языка?

Если верить официальным сайтам, то в джаве 50 слов (http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html), а в хаскелле 29, включая ряд символов (http://www.haskell.org/haskellwiki/Keywords)

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

> Кстати, не скажу про абстрактный лисп, но банальный Питон от Гвидо - компилятор

Не хочу повторять недавний флейм на ЛОРе про интерпретируемость (вы вроде тоже участвовали?). Но ИМХО CPython -- интерпретатор, с промежуточной трансляцией в байткод для более компактного представления и возможностью использовать JIT компиляцию (psyco).

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

>Не хочу повторять недавний флейм на ЛОРе про интерпретируемость (вы вроде тоже участвовали?)

Этот флейм всплывает раз в месяц. В каких-то я участвую, в каких-то - нет.

>Но ИМХО CPython -- интерпретатор, с промежуточной трансляцией в байткод

Дайте Ваше определение компилируемости и интерпретируемости. Что-то мне подсказывает, что оно не будет иметь ничего общего с академическим :D

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

Язык Питон - компилируемый.

Виртуальная машина Питона - интерпретируемая (естественно, без JIT-ухищрений).

Вот только если мы до уровня вирт. машины спустимся, то тут ждут интересные сюрпризы. Ибо современный x86-машинный код является тоже интерпретируемым :D

И если Питон (язык) пытаться записать в интерпретаторы из-за реализации виртуальной машины, то получится, что на x86 сегодня компиляторов нет _вообще_. Ибо в конечном итоге всё интерпретируется :D

...

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

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

> Язык Питон - компилируемый.

Цитирую: А что, бывают _языки_ интерпретируемыми? Я всегда думал, что только реализации :D

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

Можно поспорить насчет точности формулировки (определение исполнимой формы?), на педивикии более строгое определение. Чтобы не развивать флейм: .py -> компиляция -> .pyc -> интерпретация вирт. машиной. Так, думаю, верно.

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

>Цитирую

В контексте читай, речь о CPython :) Просто он пишется у нас же просто Python, by default.

>на педивикии более строгое определение

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

Мозги у народа интенсивно отравлены отождествлением компиляции вообще и компиляции в нативный код x86 в частности.

> .py -> компиляция -> .pyc -> интерпретация вирт. машиной. Так, думаю, верно.

Да, так.

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

>Если верить официальным сайтам, то в джаве 50 слов (http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html), а в хаскелле 29, включая ряд символов (http://www.haskell.org/haskellwiki/Keywords)

А да, точно, спутал с элегантным языком mono, это в нем 22 ключевых слова.

>Можно поспорить насчет точности формулировки (определение исполнимой формы?), на педивикии более строгое определение. Чтобы не развивать флейм: .py -> компиляция -> .pyc -> интерпретация вирт. машиной. Так, думаю, верно.

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

>2) Как это не имеет версии для Windows?

>Chaoser (*) (05.04.2008 13:22:11)

А так, читаем:

>Конечно, естественно, когда у вас есть ядро Linux, Apache, runtime и монада IO, наполовину написанная на Си, то web-приложение на Haskell можно написать в три строчки.

То есть нужен линукс

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

>А здесь обсудим, является ли Хаскелль барахлом.

Разве хоть один язык в здравом уме назвать барахлом можно? Таким образом, для людей здравомслящих, Хаскел - не барахло. Мнение остальных веса за собой не имеет.

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

> А да, точно, спутал с элегантным языком mono, это в нем 22 ключевых слова.

Вообще, моно не язык, а платформа. Если рассматривать моно как реализацию c#, то и тут мимо: по официальным докам в c# 67 слов (http://msdn2.microsoft.com/en-us/library/x53a06bb.aspx).

> А здесь обсудим, является ли Хаскелль барахлом.

А что тут обсуждать? На хабре развели "гавноспор ниачем", да еще и без знания предмета, а вы хотите понос еще и здесь развести. Хаскелл (как и любой другой язык) не барахло; это весьма интересный язык, который никогда не станет распространенным из-за своих отличий от императивных и объектно-ориентированных собратьев. У него (как и любого другого языка) есть своя ниша (хотя бы развить кругозор, мозги и вырваться из императивного затворничества).

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

> который никогда не станет распространенным из-за своих отличий от императивных и объектно-ориентированных собратьев

А может причины не только в этом?

> вырваться из императивного затворничества

Чтобы ворваться в функциональное затворничество?

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

>и то с жабаскриптом ты ошибся. %-)

Вполне может быть, Х.З., как он сейчас работает :) Но я, всё же, полагал, что он «с листа» код исполняет.

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

ну, может в офтопике разве что. %-) все остальные давно или компиляют в VM, или выполняют распарзеное дерево (что тоже VM, в принципе).

mirage
()

Только мнение хабры о Хаскеле не хватало обсуждать на ЛОРе o_O

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

> Вроде в жабе 22 ключевых слова, неужели в Хаскеле меньше?

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

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

> Может всем нужно срочно учить абсолютно элегантный PROLOG

Всем - не надо. Тем, кто не знает - полезно было бы ознакомиться ;)

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

> Обьясните, как красота языка зависит от количества ключевых слов?

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

Хаскелл, ОКамль, Лисп и Тикль хорошо подходят для создания DSL-ей. Для них чем меньше ключевых слов, тем лучше.

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

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

Если автор топега хочет, он может даже запустить ghc -keep-hc-files при компиляции, и увидеть промежуточный код на C. Если речь о HUGS, то да, там машина.

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

> Но это больше касается тех языков, где есть возможность создавать DSL-и. Ява к ним не относится.

При известном желании :) Смотри JMock.

Legioner ★★★★★
()

>Оказалось...

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

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

>Чем меньше ключевых слов, тем проще реализовать хороший DSL

это корректно только для embedded DSL (eDSL, DSeL) - сложность написания парсера/кодогенератора от количества ключевых слов в языке мало зависит

>Пост на быдлохабре писал имбецил

а вот тут возражений никаких

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

> это корректно только для embedded DSL (eDSL, DSeL) - сложность написания парсера/кодогенератора от количества ключевых слов в языке мало зависит

Так а про их родимых речь и шла :).

anonymous
()

Дык а что сейчс за собой не тащит рантайм? И что такое "некислый футпринт"? Прошли те славные времена, когда программы были "сами по себе", уж лет 50 как прошли.

А сравнивать хаскель и яву просто некорректно. Разные у них весовые категории.

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

>Дык а что сейчс за собой не тащит рантайм? И что такое "некислый футпринт"? Прошли те славные времена, когда программы были "сами по себе", уж лет 50 как прошли.

Гм, дельфи вестимо, можно сделать экзешник в 20кбайт, keygen.exe какой-нибудь. И "сам по себе"

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

Угу, и стандартные виндовые библиотеки не грузит и сам с жестким диском работает и с видеокартой...

Насколько я помню, в дельфи эдак 6-м 7-м экзешники весили кил. 200-300 и тащили с собой такую штуку как VCL... Если брать С++ , так программы за собой тащат стандартную библиотеку.

У хаскеля под виндой екзешник типа Hello world получается где-то кил на 500 в нем крутятся несколько нитей и т.п. Не гут, конечно. Но с другой стороны какая нафиг разница?

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

У тебя в реальном проекте ограничение на екзешник? Или ты просто теоретизируешь?

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

Ну и рантайм должно сократить. Сделать "легкую" версию для "продуктовых" программ. Только на данном этапе развития это не нужно...

>jhc is a haskell compiler which aims to produce the most efficient programs possible via whole program analysis and other optimizations

Если это кому-то нужно.

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

>jhc is a haskell compiler...

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

jtootf ★★★★★
()

> Оказалось, Хаскеллю для запуска программ необходима некислая виртуальная машина

Чушь. Рантайм так нехилый, но это не VM.

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

Есть и легковесные (и при этом тормозные) варианты.

Но хаскелль конечно же барахло. Только вовсе не по этой причине. Только клинический даун или маниакальный демосценщик станет сравнивать технологии по размерам рантайм-библиотеки или VM.

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

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

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

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

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

> Вроде в жабе 22 ключевых слова, неужели в Хаскеле меньше?

Хаскелль можно свести к двум, если очень хочется повыёживаться - S и K.

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

> А что, бывают _языки_ интерпретируемыми? Я всегда думал, что только реализации :D

Бывают. Если, например, семантика языка формулируется через очень явный процесс интерпретации, например - через текстовые подстановки, как tcl, то любой компилятор этого языка будет по сути интерпретатором с некоторыми незначительными оптимизациями для особо предсказуемых участков кода.

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

Или даже BCEL, при известной сноровке DSLы с ним лепить не хуже чем на лиспе можно.

anonymous
()

> так какого хрена противники жабы так превозносят свой Хаскелль

ну надо же чем то меряться, если пиписька не выросла :D

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

>Хаскелль можно свести к двум, если очень хочется повыёживаться - S и K.

Только это будет не хаскель а unlambda

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