kika: (Default)
[personal profile] kika
имхо, универсальный язык - это всего лишь язык, на котором можно написать свой собственный рантайм. С, С++, ассемблер - универсальные языки, а Ява или Хаскель - нет.
http://kika.livejournal.com/84936.html?thread=880072#t880072

truъ or false?
Page 1 of 3 << [1] [2] [3] >>

Date: 2009-06-15 03:54 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Ну написать-то рантайм языка на нем самом врядли что-то может помешать. Пишут же питон на питоне. Вот эффективность - то другое дело.

Date: 2009-06-15 03:59 pm (UTC)
From: [identity profile] kika.livejournal.com
В книжке про Ерланг авторы пишут что некоторые функции стандартной библиотеки на Ерланге невыразимы. Я, правда, забыл какие :-)

Date: 2009-06-15 04:10 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Ну если не подсматривать в книжку, то рискну предположить, что это какие-нибудь функции, которые манипулируют внутренним представлением структур эрланга, типа list_to_atom.

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

Впрочем, лично я эрланг считаю DSL-ем.

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

Date: 2009-06-15 04:17 pm (UTC)
From: [identity profile] alexott.livejournal.com
Haskell, SML и еще пачка языков написана на самих себе и требует наличие runtime для bootstrap

Date: 2009-06-15 04:21 pm (UTC)
From: [identity profile] krotoff.livejournal.com
Очень похоже на true.

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

Date: 2009-06-15 04:35 pm (UTC)
From: [identity profile] lionet.livejournal.com
А это неважно. Вопрос — для чего ты вводишь термин "универсальность"? Что от этого меняется.

То, способен ли "выжить" язык, если все другие убрать — да, "универсальность" в твоём определении позволяет взять и быстро ввести таксономию языков, разбив их на те, которые умрут, и те, которые останутся. Haskell останется, ибо хаскель так и сделан, в отличие от явы.

А в рамках того обсуждения-то это что даёт? В рамках обсуждения нужно о терминологии [предварительно] соглашаться, а не пытаться строить предположения о том, какая семантика термина является наиболее адекватной.

Вот ещё один момент: Javu можно считать DSL'ем над С. Либо пролог - DSL'ем над C. Мы же не говорим о необходимости наличия свойства универсальности для DSL'я прежде чем его использовать?

Кстати, у C нет "рантайма" (спорю о терминологии). Поэтому C - не универсальный.

Date: 2009-06-15 04:37 pm (UTC)
From: [identity profile] lionet.livejournal.com
Язык Кернигана уже не входит в девелопмент-среду майкрософта, а диалект ML - входит.

Так что Керниган слил в этом отношении.

Date: 2009-06-15 04:37 pm (UTC)
From: [identity profile] lionet.livejournal.com
Впрочем, лично я эрланг считаю DSL-ем.

Браво! Мысли сходятся: http://kika.livejournal.com/85033.html?thread=881705#t881705

Date: 2009-06-15 04:45 pm (UTC)
From: [identity profile] jsn.livejournal.com
ээ, на любом тьюринговски полном языке можно написать какой угодно рантайм? или ты таки про бутстрап говоришь? [если про бутстрап, то на любом языке, в котором можно записать байты в буфер так, чтобы их потом позвать, можно написать любой бутстрап?]

srsly, though -- мне правда интересно. вот лисп метациркулярный -- это рантайм? если да, то чем ява хуже, если нет, то чем нет?

Date: 2009-06-15 05:27 pm (UTC)
From: [identity profile] migmit.vox.com (from livejournal.com)
Был какой-то язык, забыл, как назывался, где было всего, если не ошибаюсь, четыре возможных программы. Одна из них была компилятором этого языка.

Date: 2009-06-15 05:30 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
рантайм C/C++ на них самих полностью не выражается. требует ассемблерных модулей

> 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

Date: 2009-06-15 06:23 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Последствия Оброна?

В принципе, если сделать процессор не под ассемблер, а под язык, то эта проблема отпадёт.

Date: 2009-06-15 07:53 pm (UTC)
From: [identity profile] motto.livejournal.com
вообще все обсуждение наводит на мысль, что "универсальный язык" - это плохой и бессмысленный термин ни о чем

Date: 2009-06-15 09:56 pm (UTC)
From: [identity profile] krotoff.livejournal.com
Ошибся старик, не угадал, что будет входить в девелопмент-среду майкрософт.

Date: 2009-06-16 03:32 pm (UTC)
From: [identity profile] kika.livejournal.com
DSLем какого D? Я говорю про ерланг, а не про OTP, если че. Сам по себе ерланг вполне себе язык общего назначения, довольно удобный, простой и изящный. Как лисп, типа, только со встроенной многозадачностью :-)

Date: 2009-06-16 03:33 pm (UTC)
From: [identity profile] kika.livejournal.com
Visual Studio сняли с производства? Since exactly when?

Date: 2009-06-16 03:33 pm (UTC)
From: [identity profile] kika.livejournal.com
что из этого нельзя написать на самом С с ассемблерными вставками? Слово asm, имхо, давно часть стандарта языка.

Date: 2009-06-16 03:35 pm (UTC)
From: [identity profile] kika.livejournal.com
Это плохой, негодный вывод. Хороший, годный вывод - что плохой и бессмысленный термин это DSL.

А универсальность языка - это очень полезное свойство.

Date: 2009-06-16 03:38 pm (UTC)
From: [identity profile] lionet.livejournal.com
C++ != K&R C
F# входит в поставку Visual Studio.

Date: 2009-06-16 03:43 pm (UTC)
From: [identity profile] kika.livejournal.com
Я не очень понимаю термин DSL. Любой язык есть DSL над архитектурой процессора, даже опкоды инструкций являются DSL для управления разными запчастями в процессоре.

Если ты заранее четко знаешь границы решаемой задачи (посчитать налоги в ТурбоТаксе или написать вебмагазин с интерфейсом к пейпалу), то взять для тебя DSL будет абсолютно правильным и оправданным решением. Чем меньше ты представляешь себе куда тебя заведет разработка, тем выше вероятность что с универсальным языком тебе будет проще. При прочих (почти) равных конечно, то есть не С против Ерланга, а скажем С++ против Явы.

В рамках того обсуждения это ничего не дает, поэтому я вынес это в отдельный пост, ты не заметил? :-) А ссылку дал для контекста.

У С есть рантайм. Ибо на языке С невозможно написать программу _и_ узнать результаты ее работы, даже если все необходимые данные она выдумывает сама :-)

Date: 2009-06-16 03:54 pm (UTC)
From: [identity profile] lionet.livejournal.com
DSL — это такая сущность, которая ориентирована на специфичную область деятельности и сознательного отказа от какой-то степени универсальности (от тьюринг-полноты, например).

В мире мало чего есть бинарного, DSL — не исключение. COBOL — это более DSL, чем C, а Haskell — менее DSL, чем XQuery. В этой связи любой язык действительно является DSL'ем над процессором. Но очень разным: C — это императивный DSL, Haskell — функциональный DSL.

Какой именно лучше? Тот, который позволяет решить задачу (по ТЗ) с привлечением минимума как можно более простых концепций (желательно, очень близких к области и уровню абстракции самого ТЗ). При этом DSL не обязан пользоваться минимум возможностей, предоставляемых платформой (компилятор LISP не обязан компилировать под минимальный сабсет процессорных опкодов).

У С есть рантайм. Ибо на языке С невозможно написать программу _и_ узнать результаты ее работы, даже если все необходимые данные она выдумывает сама :-)

Этого я не понял: куда делся -ffreestanding? Между прочим, стандартная вещь.

Date: 2009-06-16 04:02 pm (UTC)
From: [identity profile] kika.livejournal.com
VS отлично компилирует ANSI C. Можно конечно придраться и сказать что ANSI C не является изобретением Кернигана, но имхо, F# не ближе к ML чем K&R C к ANSI C.

Date: 2009-06-16 04:15 pm (UTC)
From: [identity profile] kika.livejournal.com
Можно ли на яве написать сборщик мусора этой самой явы?

Date: 2009-06-16 04:15 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Трудно сказать, какого. Но писать на нем что-то, кроме серверов, способны только отдельные любители. По правде сказать, даже http серверы я бы лучше писал на чем-то другом.

Date: 2009-06-16 04:20 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Вот тут целые компьютеры на жаве эмулируют, почему бы на ней не написать сборщик мусора? Память эмулировать массивом, указатели - индексами внутри массива, смысл сборщика мусора не поменяется. Все это только вопрос эффективности, т.е. скорее количественный, чем качественный.
Page 1 of 3 << [1] [2] [3] >>

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 16th, 2026 03:20 pm
Powered by Dreamwidth Studios