Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Pzz, Вы писали:
Pzz>>Рассуждая с практической точки зрения, для SML'я, по-моему, проще найти Pzz>>компилятор под какой-нибудь не совсем обычный процессор, чем для Pzz>>Ocaml'а. Если не ошибаюсь, Ocaml поддерживает только x86, ARM, и, может Pzz>>быть, MIPS.
Д>и еще есть SML.NET Д>хотя это конечно на любителя
и F# — который на самом деле окамл
впрочем, у самого окамла бэкенд под .NET тоже есть
Здравствуйте, alexeiz, Вы писали:
A>Здравствуйте, zip_, Вы писали:
_>>Здравствуйте, reductor, Вы писали:
R>>>И кстати-кстати. по поводу Си и низкого уровня — рекомендую обратить внимание: http://www.research.att.com/projects/cyclone/ R>>>И система типов там похожа на окамловскую. Да и много что (кроме синтаксиса и управления памятью). Правда QNX там официально вроде пока не поддерживается, но попробовать можно. В любом случае, всяко лучше чем просто си.
_>>Интересно. Но сейчас реально нужен язык для высокого уровня. Два языка изучать параллельно — это слишком
A>А чем C++ не язык высокого уровня?
Ничем.
Это ассемблер.
Который к тому же медленный и многословный.
A>>А чем C++ не язык высокого уровня?
R>Ничем. R>Это ассемблер. R>Который к тому же медленный и многословный.
Хм. Я обратил внимание, что многие функциональные языки называют языками очень высокого уровня. Видимо, в противовес "просто" языкам высокого уровня, таким как С++ и прочие
Здравствуйте, Mamut, Вы писали:
M>Хм. Я обратил внимание, что многие функциональные языки называют языками очень высокого уровня. Видимо, в противовес "просто" языкам высокого уровня, таким как С++ и прочие
Ага, я тоже встречал термин "гипервысокого" уровня.
Здравствуйте, reductor,
A>>А чем C++ не язык высокого уровня?
R>Ничем.
Почему? В dragonbook сказано, что это HLL.
R>Это ассемблер.
Совершенно верно, и даже в некоторых аспектах более низкоуровневый, чем С.
R>Который к тому же медленный
Это распространённое (?) заблуждение. Грамотно написанный код будет в большенстве случаев очень мало отличаться по эффективности от написанного вручную на ассемблере. Особенно, на макроассемблере. Это я могу сказать, поскольку приходится видеть исходники на последнем, для которых хороший С++ компилятор мог бы сгенерировать лучший вариант. А хороший С++ компилятор найти гораздо проще, чем для того же Pascal & Co. Сколько компиляторов других HLL используют С++ как back-end?
R>и многословный.
Да, для ряда задач на нём придётся написать порядком больше, чем на других языках. Это цена универсальности. На C++ можно написать ОС с нуля не используя _других_ языков (как там в Oberon делали bootloader?), можно и компилятор Scheme. И конечно же, будут существовать и языки, более эффективные для специализированных задач.
И даже, компилятор не способен понять некоторые слова:
switch( "string" )
{
case"foo":
case"boo":
}
Почему бы не добавить в него несколько строчек кода
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, ie, Вы писали:
R>>А еще, если сделать поиск в яндексе по стандартному mlю, то найдется pdf с книжкой по-русски по SML
ie>Вот по этой ссылке русская версия лекций Харпера, о которых уже кто-то упоминал в этой ветке: http://iu9.mstu.ru/5sem/fil/harper.pdf
Да, только стоит предупредить, что там описана устаревшая версия языка (SML'90). Но книжка для начинающих — отличная, особенно если выпонять все упражнения. А на сайте Харпера лежит черновик новой версии (понятно, по-английски), там описан SML'97 (скачивать можно абсолютно легально http://www.cs.cmu.edu/~rwh/smlbook/online.pdf).
Здравствуйте, Mamut, Вы писали:
M>Хм. Я обратил внимание, что многие функциональные языки называют языками очень высокого уровня. Видимо, в противовес "просто" языкам высокого уровня, таким как С++ и прочие
reductor wrote: > > A>А чем C++ не язык высокого уровня? > > Ничем. > Это ассемблер. > Который к тому же медленный и многословный.
Не согласен.
C (не C++) это язык, который выражает абстрактным образом архитектуру
современного компутерного железа (современного в смысле повседневного).
В этом плане он исключительно хорош. Прошло уже 20 лет, а на C
по-прежнему можно писать железноориентированные программы, не опускаясь
при этом до уровня особенностей работы ALU на данном конкретном процессоре.
Конечно, C не идеален. Например, для полноценной работы хотелось бы
уметь описывать раскладку данных на биты, не прибегая при этом к
трюкачеству. Хотелось бы так же, чтобы идея endian'а была как-то
отражена в языке. И хоть какие-то примитивы синхронизации, типа
read_and_set, или atomic_increment. В общем, как раз тех вещей, которые
иначе приходится писать на ассемблере безо всякой осмысленной причины.
Мда. Так вот, будучи языком, предназначенным для абстрактного
представления современного компутера, C, безусловно является языком
высокого уровня. Просто он не универсален, а domain-specific, но domain
у него при этом весьма специфический
C++ же, это не язык, а какой-то кошмар. Что он отражает, не очень
понятно. Скорее всего, "все на свете" с весьма переменным успехом...
R>>Это ассемблер.
GN>Совершенно верно, и даже в некоторых аспектах более низкоуровневый, чем С.
R>>Который к тому же медленный
GN>Это распространённое (?) заблуждение. Грамотно написанный код будет в большенстве случаев очень мало отличаться по эффективности от написанного вручную на ассемблере. Особенно, на макроассемблере. Это я могу сказать, поскольку приходится видеть исходники на последнем, для которых хороший С++ компилятор мог бы сгенерировать лучший вариант. А хороший С++ компилятор найти гораздо проще, чем для того же Pascal & Co. Сколько компиляторов других HLL используют С++ как back-end?
Ха.
Он медленный не по сравнению с ассемблером. Он медленный по сравнению с более высокоуровневыми языками, но у которых лучше дизайн и нет всего этого легаси от Си.
R>>и многословный.
GN>Да, для ряда задач на нём придётся написать порядком больше, чем на других языках. Это цена универсальности. На C++ можно написать ОС с нуля не используя _других_ языков (как там в Oberon делали bootloader?), можно и компилятор Scheme. И конечно же, будут существовать и языки, более эффективные для специализированных задач.
На любом языке можно написать ОС с нуля.
А насчет использования других языков — это исключительно в голове. Поскольку на любом языке можно написать компилятор Scheme, то и операционную систему с нуля тоже можно.
Но вообще странное рассуждение и достоинство. На конкретном ассемблере тоже можно все написать и что?
зачем это делать?
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, reductor, Вы писали:
R>>и F# — который на самом деле окамл R>>впрочем, у самого окамла бэкенд под .NET тоже есть
Д>кстати, а какой из них ты бы посоветовал для новичка?
обычный окамл с caml.inria.fr
даже без бекенда под .NET
чтобы не создавать путаницу лишную. потом уже конечно что душа пожелает
Здравствуйте, reductor, Вы писали:
Д>>кстати, а какой из них ты бы посоветовал для новичка?
R>обычный окамл с caml.inria.fr R>даже без бекенда под .NET R>чтобы не создавать путаницу лишную. потом уже конечно что душа пожелает
Здравствуйте, alexeiz, Вы писали:
A>Здравствуйте, c-smile, Вы писали:
CS>>D как язык для UI лучше чем C++ скажем в разы. Это я со всей отвественностью CS>>могу сказать.
A>А причины не трудно описать? По пунктам и конкретно. А то не очень-то верится.
(this caffe has no russian keyboard installed yet, so msg is in english)
1) GC. GC helps a lot managing DOM/windows/elements structure. This is huge in fact. Simplifies significantly code. Makes it clean and compact thus more robust.
2) Closures/Delegates. This in fact is not so critical as I am using sinking/bubbling. Let's say it is nice to have feature — allows to simplify code and make it more understandable an regular.
3) Properties (getters/setters). Ideally reduces twice methods you need to remember. Again, it is about simplification.
4) There are more features in D helping UI development e.g. mixins and templates parametrized by character strings, etc., I'll skip them here.
Use of Java for massive UI development has one and big benefit — isolation between logic and system low level and critical functions. This is sort of critical for development in teams.
And again Java has good set of design tools. Intellisense is a real tool increasing productivity.
(I am not speaking here about .NET because of intitial requirement to use C and platforms)
_>>Haskell мне не кажется практичным и готовым к применению в промышленных проектах. Считаю, что это до сих пор академический язык.
R>Интересно по каким критериям На самом деле уже довольно давно нет. То есть язык сам вообще очень давно, а тот же GHC какое-то время. R>Его сейчас двигают как раз в массы. Но правда стоит отметить, что по вылизанности GHC от окамла пока отстает.
Нет компилятора для ARM, существующие компиляторы генерируют недостаточно качественный код (нет доверия инструменту). Плюс еще ленивость сильно затрудняет отладку и делает поведение программы недетерминированным.
Здравствуйте, Pzz, Вы писали:
Pzz>zip_ wrote: >> >> SML — принципиально ничем от OCaml не отличается (или я ошибаюсь?), но у >> второго более серьезный компилятор и ОО-расширение (впрочем пока не >> уверен, что оно вообще нужно).
Pzz>Рассуждая с практической точки зрения, для SML'я, по-моему, проще найти Pzz>компилятор под какой-нибудь не совсем обычный процессор, чем для Pzz>Ocaml'а. Если не ошибаюсь, Ocaml поддерживает только x86, ARM, и, может Pzz>быть, MIPS.
Лично мне кроме как под x86 и ARM ничего больше и не надо. Поэтому OCaml проходит.
Также не забываем про байт-код и VM (которая написана на C и скомпилируется где угодно).