Убедите меня что я прав
Jun. 15th, 2009 07:49 pmимхо, универсальный язык - это всего лишь язык, на котором можно написать свой собственный рантайм. С, С++, ассемблер - универсальные языки, а Ява или Хаскель - нет.
http://kika.livejournal.com/84936.html?thread=880072#t880072
truъ or false?
http://kika.livejournal.com/84936.html?thread=880072#t880072
truъ or false?
no subject
Date: 2009-06-15 03:54 pm (UTC)no subject
Date: 2009-06-15 03:59 pm (UTC)no subject
Date: 2009-06-15 04:10 pm (UTC)Но тут целых два вопроса: являются ли некоторые функции эрланга частью эрланга - т.е. останется ли эрланг эрлангом, если их выкинуть, а второй вопрос - если мы реализуем рантайм эрланга на эрланге - то что мешает эти функции в реализуемом языке реализовать уже реализованными вызовами.
Впрочем, лично я эрланг считаю DSL-ем.
Я бы предположил, что универсальным является язык, который позволяет напрямую манипулировать памятью и отображать ее на свои примитивы. Вроде бы имея это и эффективный компилятор, все остальное можно сделать.
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-06-15 04:17 pm (UTC)no subject
Date: 2009-06-15 04:21 pm (UTC)И очень похоже на старый анекдот, если не ошибаюсь от Кернигана: ML - очень интересный язык, но, к сожалению, он пригоден только для написания компиляторов самого же ML.
no subject
Date: 2009-06-15 04:37 pm (UTC)Так что Керниган слил в этом отношении.
no subject
Date: 2009-06-15 09:56 pm (UTC)no subject
Date: 2009-06-16 03:33 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2009-06-15 04:35 pm (UTC)То, способен ли "выжить" язык, если все другие убрать — да, "универсальность" в твоём определении позволяет взять и быстро ввести таксономию языков, разбив их на те, которые умрут, и те, которые останутся. Haskell останется, ибо хаскель так и сделан, в отличие от явы.
А в рамках того обсуждения-то это что даёт? В рамках обсуждения нужно о терминологии [предварительно] соглашаться, а не пытаться строить предположения о том, какая семантика термина является наиболее адекватной.
Вот ещё один момент: Javu можно считать DSL'ем над С. Либо пролог - DSL'ем над C. Мы же не говорим о необходимости наличия свойства универсальности для DSL'я прежде чем его использовать?
Кстати, у C нет "рантайма" (спорю о терминологии). Поэтому C - не универсальный.
no subject
Date: 2009-06-16 03:43 pm (UTC)Если ты заранее четко знаешь границы решаемой задачи (посчитать налоги в ТурбоТаксе или написать вебмагазин с интерфейсом к пейпалу), то взять для тебя DSL будет абсолютно правильным и оправданным решением. Чем меньше ты представляешь себе куда тебя заведет разработка, тем выше вероятность что с универсальным языком тебе будет проще. При прочих (почти) равных конечно, то есть не С против Ерланга, а скажем С++ против Явы.
В рамках того обсуждения это ничего не дает, поэтому я вынес это в отдельный пост, ты не заметил? :-) А ссылку дал для контекста.
У С есть рантайм. Ибо на языке С невозможно написать программу _и_ узнать результаты ее работы, даже если все необходимые данные она выдумывает сама :-)
no subject
Date: 2009-06-16 03:54 pm (UTC)В мире мало чего есть бинарного, DSL — не исключение. COBOL — это более DSL, чем C, а Haskell — менее DSL, чем XQuery. В этой связи любой язык действительно является DSL'ем над процессором. Но очень разным: C — это императивный DSL, Haskell — функциональный DSL.
Какой именно лучше? Тот, который позволяет решить задачу (по ТЗ) с привлечением минимума как можно более простых концепций (желательно, очень близких к области и уровню абстракции самого ТЗ). При этом DSL не обязан пользоваться минимум возможностей, предоставляемых платформой (компилятор LISP не обязан компилировать под минимальный сабсет процессорных опкодов).
У С есть рантайм. Ибо на языке С невозможно написать программу _и_ узнать результаты ее работы, даже если все необходимые данные она выдумывает сама :-)
Этого я не понял: куда делся -ffreestanding? Между прочим, стандартная вещь.
(no subject)
From:no subject
Date: 2009-06-15 04:45 pm (UTC)srsly, though -- мне правда интересно. вот лисп метациркулярный -- это рантайм? если да, то чем ява хуже, если нет, то чем нет?
no subject
Date: 2009-06-16 04:15 pm (UTC)no subject
Date: 2009-06-16 04:20 pm (UTC)(no subject)
From:no subject
Date: 2009-06-16 04:33 pm (UTC)Потом, опять же, это точно не вопрос про бутстрап? Потому что если представить себе написанный на яве очень хилый java vm, в котором нет GC [а есть только e.g. permalloc], то приделать к нему garbage collected allocation на яве, мне кажется, не то чтобы концептуально невозможно.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-06-15 05:27 pm (UTC)no subject
Date: 2009-06-15 05:30 pm (UTC)> ls -l /usr/src/lib/libc/i386/sys/
total 90
-rw-r--r-- 1 root wheel 1009 Jul 5 2007 Makefile.inc
-rw-r--r-- 1 root wheel 2205 Jan 14 15:36 Ovfork.S
-rw-r--r-- 1 root wheel 2665 Jan 14 15:36 brk.S
-rw-r--r-- 1 root wheel 2475 Jan 9 2007 cerror.S
-rw-r--r-- 1 root wheel 2154 Jan 14 15:36 exect.S
-rw-r--r-- 1 root wheel 2111 Jan 14 15:36 getcontext.S
-rw-r--r-- 1 root wheel 1768 Oct 21 2002 i386_clr_watch.c
-rw-r--r-- 1 root wheel 1588 Apr 14 2005 i386_get_fsbase.c
-rw-r--r-- 1 root wheel 1588 Apr 14 2005 i386_get_gsbase.c
-rw-r--r-- 1 root wheel 2655 Jul 3 2004 i386_get_ioperm.2
-rw-r--r-- 1 root wheel 1794 Jan 9 2004 i386_get_ioperm.c
-rw-r--r-- 1 root wheel 4101 Jan 9 2007 i386_get_ldt.2
-rw-r--r-- 1 root wheel 1870 Jan 9 2004 i386_get_ldt.c
-rw-r--r-- 1 root wheel 1588 Apr 14 2005 i386_set_fsbase.c
-rw-r--r-- 1 root wheel 1588 Apr 14 2005 i386_set_gsbase.c
-rw-r--r-- 1 root wheel 1718 Jan 9 2004 i386_set_ioperm.c
-rw-r--r-- 1 root wheel 1870 Jan 9 2004 i386_set_ldt.c
-rw-r--r-- 1 root wheel 3790 Sep 18 2006 i386_set_watch.3
-rw-r--r-- 1 root wheel 2613 Oct 21 2002 i386_set_watch.c
-rw-r--r-- 1 root wheel 4143 May 22 2003 i386_vm86.2
-rw-r--r-- 1 root wheel 1653 Jan 9 2004 i386_vm86.c
-rw-r--r-- 1 root wheel 2047 Jan 14 15:36 pipe.S
-rw-r--r-- 1 root wheel 2254 Jan 14 15:36 ptrace.S
-rw-r--r-- 1 root wheel 1985 Jan 14 15:36 reboot.S
-rw-r--r-- 1 root wheel 2742 Jan 14 15:36 sbrk.S
-rw-r--r-- 1 root wheel 2227 Jan 14 15:36 setlogin.S
-rw-r--r-- 1 root wheel 2101 Jan 9 2007 sigreturn.S
-rw-r--r-- 1 root wheel 2227 Jan 14 15:36 syscall.S
no subject
Date: 2009-06-16 03:33 pm (UTC)no subject
Date: 2009-06-18 06:25 pm (UTC)no subject
Date: 2009-06-15 06:23 pm (UTC)В принципе, если сделать процессор не под ассемблер, а под язык, то эта проблема отпадёт.
no subject
Date: 2009-06-15 07:53 pm (UTC)no subject
Date: 2009-06-16 03:35 pm (UTC)А универсальность языка - это очень полезное свойство.
no subject
Date: 2009-06-16 07:45 pm (UTC)А с универсальностью всегда флейм. Вот какой-нибудь obj-c в твоем определении универсальный язык. А по факту применения - DSL DSL'ем
Никто не мешает писать на нем веб-приложения поверх linux'а и gnustep - но не пишут
(no subject)
From:no subject
Date: 2009-06-18 06:28 pm (UTC)В этом смысле Ерланг вообще, как язык - не DSL. Но методика Ериксона, заключавшаяся в том, что для написания АТС они изобрели язык
вместо того, чтобы нанять 1000 индусов и написать все на яве- это DSL.no subject
Date: 2009-06-18 03:54 pm (UTC)Или вот C++. Язык тоже универсальный. Вроде. И что? Язык нигде не реализован полностью, с трудом понятно даже, что такое для него это полностью. И его много где нет, а где есть - никогда не знаешь, в каком объеме он есть, так что проще забить на него совсем. С моей точки зрения - это не универсально.