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

truъ or false?

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-ем.

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

(no subject)

From: [identity profile] lionet.livejournal.com - Date: 2009-06-15 04:37 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-16 03:32 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-06-16 04:15 pm (UTC) - Expand

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:37 pm (UTC)
From: [identity profile] lionet.livejournal.com
Язык Кернигана уже не входит в девелопмент-среду майкрософта, а диалект ML - входит.

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

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

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

(no subject)

From: [identity profile] lionet.livejournal.com - Date: 2009-06-16 03:38 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-16 04:02 pm (UTC) - Expand

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-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? Между прочим, стандартная вещь.

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:14 pm (UTC) - Expand

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

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

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

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

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:15 pm (UTC) - Expand

Date: 2009-06-16 04:33 pm (UTC)
From: [identity profile] jsn.livejournal.com
Тут уже ответили формально -- да, почему нет. Это ответ, вытекающий из тьюринговской полноты.
Потом, опять же, это точно не вопрос про бутстрап? Потому что если представить себе написанный на яве очень хилый java vm, в котором нет GC [а есть только e.g. permalloc], то приделать к нему garbage collected allocation на яве, мне кажется, не то чтобы концептуально невозможно.

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:20 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-06-18 03:23 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:28 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-06-18 03:39 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:43 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2009-06-18 03:48 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 04:22 pm (UTC) - Expand

(no subject)

From: [identity profile] jsn.livejournal.com - Date: 2009-06-18 03:33 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:40 pm (UTC) - Expand

(no subject)

From: [identity profile] jsn.livejournal.com - Date: 2009-06-18 03:54 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 04:23 pm (UTC) - Expand

(no subject)

From: [identity profile] jsn.livejournal.com - Date: 2009-06-18 04:29 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 04:35 pm (UTC) - Expand

(no subject)

From: [identity profile] pzz.livejournal.com - Date: 2009-06-18 06:21 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 04:37 pm (UTC) - Expand

(no subject)

From: [identity profile] jsn.livejournal.com - Date: 2009-06-18 06:09 pm (UTC) - Expand

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-18 03:47 pm (UTC) - Expand

(no subject)

From: [identity profile] jsn.livejournal.com - Date: 2009-06-18 04:05 pm (UTC) - Expand

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

Date: 2009-06-18 06:25 pm (UTC)
From: [identity profile] pzz.livejournal.com
А знаешь, что в 64-битном виндовом Си ассемблерные вставки отменили?

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

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

Date: 2009-06-16 07:45 pm (UTC)
From: [identity profile] motto.livejournal.com
DSL, как термин, как раз хороший, если это самоназвание. Назвался ДСЛем и полезай куда-нибудь.

А с универсальностью всегда флейм. Вот какой-нибудь obj-c в твоем определении универсальный язык. А по факту применения - DSL DSL'ем
Никто не мешает писать на нем веб-приложения поверх linux'а и gnustep - но не пишут

(no subject)

From: [identity profile] kika.livejournal.com - Date: 2009-06-16 08:10 pm (UTC) - Expand

Date: 2009-06-18 06:28 pm (UTC)
From: [identity profile] pzz.livejournal.com
DSL, вообще-то, это термин не из мира языкознания, а из мира методологии разработки софтвария. Заключается в том, что для решения такой-то задачи создается специализированный язык, а на нем уже решается задача.

В этом смысле Ерланг вообще, как язык - не DSL. Но методика Ериксона, заключавшаяся в том, что для написания АТС они изобрели язык вместо того, чтобы нанять 1000 индусов и написать все на яве - это DSL.

Date: 2009-06-18 03:54 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Ну вот допустим, Си язык универсальный. И что это знание о языке нам дает?

Или вот C++. Язык тоже универсальный. Вроде. И что? Язык нигде не реализован полностью, с трудом понятно даже, что такое для него это полностью. И его много где нет, а где есть - никогда не знаешь, в каком объеме он есть, так что проще забить на него совсем. С моей точки зрения - это не универсально.

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 01:52 pm
Powered by Dreamwidth Studios