LINUX.ORG.RU

KISS языки


1

1

Кроме ближайших родственников Оберона. С тривиальным синтаксисом, интуитивной и формально определенной семантикой. Есть такие?

PS Брейнфак не предлагать.

PPS Желающие предложить СИ отправляются учить стандарт в целом, и лютое количество таких выкрутасов в частности.

★★★★★

На kiss языке тоже можно будет сотворить генитальные конструкции, поэтому твои замечания на счёт СИ не принимаются.

Учи СИ.

PolarFox ★★★★★
()

Неистово плюсую. Такое впечатление что синтаксис всех популярных сейчас языков разрабатывался гуманитариями. Куча кривых исключений, синтаксического сахару. Хочется чего-то простого как мычание.

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

Еще раз, с языком Си - в сад, учить его до просветления. Ты просто не знаешь этого языка в степени достаточной для того, чтобы понять суть моих «замечаний».

Manhunt ★★★★★
() автор топика

> С тривиальным синтаксисом, интуитивной и формально определенной семантикой. Есть такие?

Prolog, не ?

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

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

Утипути. Что, долго искал баг с переполнением? Бывает. Просто надо помнить ширину регистров процессора.

tailgunner ★★★★★
()

почему бы не python?

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

>>SML

А может ли он пригодится ли он в быту инженера?

Хочется вооружиться простым универсальным инструментом, чтобы с его помощью и интерфейсик накидать (допустим зная tkinter тот же), и параллельные библиотеки фортрановские подключить, в то же время задействуя всю мощь прототипирования, шаблонов, literate programming и прочих прибамбасов, облегчающих жизнь на крупных одиночных проектах. Или я требую невозможного?

mclaudt
()

Smalltalk, очевидно же.

Из тех языков, на которых мне приходилось писать (в этом списке ещё C, C++, CL) - Smalltalk самый очевидный и естественный.

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

>>SML

А может ли он пригодится ли он в быту инженера?

Нет. Академическая игрушка без библиотек. Но именно как язык мне нравится (в теории - я на нем не писал) - мощный и относительно простой.

Хочется вооружиться простым универсальным инструментом, чтобы с его помощью и интерфейсик накидать (допустим зная tkinter тот же), и параллельные библиотеки фортрановские подключить

Python

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

> Просто надо помнить ширину регистров процессора.

Просто надо знать стандарт как библию наизусть, т.к. нет другого способа догадаться, что:
* переполнение unsigned - это арифметика по модулю 2
* но при том (!!!!), переполнение int - это undefined behavior

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

>> SML

Тот же вопрос :) Где взять BNF и формальную семантику?

Таким вопросом не задавался, но в книге Милнера наверняка есть.

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

>> Просто надо помнить ширину регистров процессора.

Просто надо знать стандарт как библию наизусть

Вовсе нет. Надо просто проявлять осторожность при работе с данными, которые могут вызвать переполнение разрядной сетки, знаковое или беззнаковое.

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

А может ли он пригодится ли он в быту инженера?

насколько я могу судить, именно там он и применяется. к сожалению, насчёт Tk и фортрановских библиотек сходу не скажу, надо искать

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

>> А может ли он пригодится ли он в быту инженера?

насколько я могу судить, именно там он и применяется

Фигасе. Какой именно SML и в быту каких именно инженеров применяется?

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

>> Scheme, Tcl, *Basic

SML

Тот же вопрос :) Где взять BNF и формальную семантику?

внезапно: у Tcl по определению нет BNF :)

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

Какой именно SML

SMLNJ, SML.Net (последний, правда, как-то захерел последнее время)

в быту каких именно инженеров применяется?

явок-паролей не знаю, но могу поискать. на малой родине политехники на нём расчёты ваяли

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

Я что-то пропустил, или намек на формальную семантику есть только для Scheme?

набор ссылок выше я получил, воспользовавшись поисковиком; это не сложно и не больно, я в тебя верю

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

> Я что-то пропустил, или намек на формальную семантику есть только для Scheme?

Wikipedia о SML: It is distinctive among widely used languages in that it has a formal specification, given as typing rules and operational semantics in The Definition of Standard ML (1990, revised and simplified as The Definition of Standard ML (Revised) in 1997)

Milner, R.; M. Tofte, R. Harper and D. MacQueen. (1997). The Definition of Standard ML (Revised). MIT Press. ISBN 0-262-63181-4.

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

> это не сложно и не больно, я в тебя верю

Это еще успею. Просто хочется выудить максимум знаний из тех, кто что-то советует :)

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

а что в J нетривиального? хуки, форки, наречия. этого хватает. писать на J сложно, а синтаксис тривиален.

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

максимум знаний из тех, кто что-то советует :)

для Tcl и BASIC (и Perl6) есть учебные реализации на Haskell. надо? :)

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

а что в J нетривиального?

для среднестатистического программиста - всё. «J for C Programmers» это, конечно, очень хорошее введение,- но сколько времени в реальной жизни требуется на его усвоение?

jtootf ★★★★★
()

Да вы все тут на отличненько!


С тривиальным синтаксисом, интуитивной и формально определенной семантикой.


1. Интуитивная семантика бывает только у сиськи.

2. Lua, ECMAScript.

K.O.

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

> > учебные реализации на Haskell. надо? :)

Это уже совсем-совсем не KISS :)

Ну тогда Clean, он ближе к KISS, чем Haskell. Ну, а если под KISS внезапно имель ввиду комбинаторы(которые SKI), то Unlambda.

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

Фактор.

Программа - последовательность слов, разделенных пробелами. Выполнение происходит слева направо по следующей схеме: «объекты» (числа, массивы, кортежи) запихиваются в стек как есть, «слова» (читай функции) выполняют какие-то действия над этим стеком + побочные эффекты. Это, вобщем-то, всё, что нужно по минимуму.

Дополнительно есть один единственный механизм добавления сахара: программируемый парсер. Т.н. «parsing words» позволяют читать токены из потока и делать с ними нечто отличное от дефолтного механизма выполнения, описанного выше.

Покажу пример:

{ 1 2 3 4 5 } [ dup * . ] each

1. фигурная скобка - парсящее слово - читает входной поток вплоть до соответствующей закрывающей скобки и собирает считанные элементы в один объект-массив. Кусок программы «{ 1 2 3 4 5 }» - оставит после себя один объект на стеке, а не пять или семь.

2. Аналогично, [ - парсящее слово - читает входной поток вплоть до соответствующей закрывающей скобки и оставляется после себя один объект - quotation («заквоченную» программу или анонимную функцию).

3. each - «комбинатор» (или ФВП) принимает на входе два объекта: последовательность и заквоченную программу, в процессе работы применяет программу к каждому элементу последовательности. В данном случае число дублируется на стеке, умножается само на себя и результат печатается (точка - это prettyprinter).

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

( scratchpad ) FUNCTION: double pow ( double x, double y ) ; 
( scratchpad ) 2 3 pow .
8.0
А, во-вторых, сильно помогает интерактивность. Даже если вдруг не ясно, что делает какой-нибудь «HS{», можно набрать «\ HS{ help» в репле и увидеть: http://docs.factorcode.org/content/word-HS%7B,syntax.html

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