LINUX.ORG.RU

Языковый базис


5

3

Интересно, какие ЯП могут составить наименьшее множество наиболее простых языков, хорошо реализующих все существующие концепции программирования. Так, чтобы любой другой язык являлся комбинацией этих языков, а сами базисные языки имели бы как можно меньше пересечений.

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

Какие языки вы бы предложили?

★★★★

Ответ на: комментарий от anonymous

Да, легко и быстро. При хоть немного прямых руках. Не умеешь? Ну, ламер, стало быть. Для не-ламера реализовать практически любой язык поверх Лиспа - легко и быстро.

Ну давай, давай не-ламер, покажи нам пример «легкой и простой» реализации хоть сколь-нибудь сложного языка поверх CL. На макрах. Мы все хотим посмотреть)

Запиливал. Не проблема. У меня есть и GLR, и PEG. Оба с C++ отлично справляются, не надо никаких уродливых извращений а ля GCC или Clang.

Кода ессно не будет?)

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

Осиль пожалуйста термин «транслятор».

Опиши денотационную семантику русского языка, для начала, сучка пионерская. Транслировать в строгую семантику можно только язык со строгой семантикой, сучка. Правда, я подозреваю, ты и слова-то такого не знаешь, как «семантика».

Ты говорил про HDL, а потом уже съюлил на HDL. Прочитай своё первоё сообщение про HDL - там нет даже упоминания про Verilog.

Чего-чего, сучка? У тябе вообще какое-то говно в голове, и оно все время выплескивается и воняет. Я с самого начала говорил про Hardware Definition Languages.

Слился? Так и запишем.

Нет, слился ты, предложив РАСШИРИТЬ синтаксис Си (а произвольные аттрибуты - это как раз механизм разсширения).

Я тебе описал синтаксис. always @ - меняешь на трибуты, ущербные бегин/енд на скобочки и т.д. Всё, синтаксис в твоём Verilog приметивен.

Сучка, ты так и будешь путать синтаксис и семантику?

Например, в Verilog есть два разных оператора присвоения (блокирующий и неблокирующий). Опиши их на Си. В Verilog есть модули, которые ты не заменишь никакими из конструкций языка Си. Банально, попробуй в синтакисие Си (чистом, без выдуманных тобой расширений) описать структуру D-флипфлопа на уровне логических элементов (которые, естественно, module instances).

anonymous
()
Ответ на: комментарий от Sectoid

Ну давай, давай не-ламер, покажи нам пример «легкой и простой» реализации хоть сколь-нибудь сложного языка поверх CL. На макрах. Мы все хотим посмотреть)

Свой код показывать не буду, потому как я, все таки, аноним.

Покажу чужой. Не CL, правда, а другие языки с такими же макросами:

https://github.com/plt/racket/tree/master/collects/algol60

Кода ессно не будет?)

Не будет, по вышеизложенным причинам. Смотри на Elsa, там очень простое (хоть и несколько раздутое, можно еще проще) декларативное описание синтакиса C++.

anonymous
()
Ответ на: комментарий от vertexua

Было бы прикольно, если бы учили. Они хоть бы разбирались со стеками да памятью, и не было бы мартышек по типу пхп-быдлокодеров.

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

Мы его очень подробно изучали, драйверы писали, многопоточность с нуля с переключением контекстов, загрузчик ОС, просто алгоритмы разные. Но как один предмет. И этого ВООБЩЕ не достаточно

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

А что, ценность мнения зависит от того, кто его высказывает?

Я привел примеры кода. Чужого. Но это не важно, до тех пор, пока эти примеры подтверждают мою точку зрения.

anonymous
()
Ответ на: комментарий от post-factum

В таком случае, ты сказал чушь, если не способен развернуто аргументировать свою точку зрения.

anonymous
()

Форт, ЛNCП и HDL в треде? Да у вас же ЛУГОВСКИЙ!

anonymous
()

Таких яп единицы, из которых вменяемый только СИ. Поэтому связка Си/асм - это основа всех остальных ЯП и основа всех «концепций».

otnnte (15.02.2013 15:23:56)

Признавайтесь, чей виртуал?

linuxnewb
()

java, php, javascript, python

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

Опиши денотационную семантику русского языка, для начала, сучка пионерская. Транслировать в строгую семантику можно только язык со строгой семантикой, сучка. Правда, я подозреваю, ты и слова-то такого не знаешь, как «семантика».

И не такая уж в русском языке и нестрогая семантика. Твои бла-бла про «сделай мне» уже надоели. Ты объясни почему это невозможно, либо слейся. Сложно != невозможно. И да, я там говорил про качество.

Чего-чего, сучка? У тябе вообще какое-то говно в голове, и оно все время выплескивается и воняет. Я с самого начала говорил про Hardware Definition Languages.

Вот, вот. В этом всё твоё балаболство. Сел в лужу и начал вопить. Ты начал говорить о HDL, но потом съехал на конкретно Verilog. То, что там для Verilog есть какой-то транслятор - это мне не интересно. HDL не исполняемые языки - поэтому слейся.

Сучка, ты так и будешь путать синтаксис и семантику?

Семантику определяет уже обработчик, а не синтаксис.

Например, в Verilog есть два разных оператора присвоения (блокирующий и неблокирующий). Опиши их на Си. В Verilog есть модули, которые ты не заменишь никакими из конструкций языка Си. Банально, попробуй в синтакисие Си (чистом, без выдуманных тобой расширений) описать структуру D-флипфлопа на уровне логических элементов (которые, естественно, module instances).

Ты мне пиши код, а не балаболь. Ой ты о5 так сел в лужу. Расширения гцц - это дефакто часть Си. О5 балаболишь.

Я тебе открою секрет - в синтаксисе Си есть и = и <=. Инклюды осиль. Я уже говорил, синтаксис твоего хдл приметивен.

Я тебе писал уже - пиши мне код - я напишу его синтаксисом Си.

otnnte
()
Ответ на: комментарий от post-factum

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

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

фу как грубо.

Все равно, каждай раз надеюсь, что это чьи-то забавы.

linuxnewb
()
Ответ на: комментарий от otnnte

И не такая уж в русском языке и нестрогая семантика.

Херасе, наш школоляка уже на Нобелевскую премию претендует, как минимум. Обнаружил строгую формальную семантику у естественного языка! Прелестно, просто прелестно. Я и не ожидал такого количества еды!

Ты объясни почему это невозможно, либо слейся. Сложно != невозможно.

У русского языка НЕТ строгой семантики. Вообще.

Ты начал говорить о HDL, но потом съехал на конкретно Verilog.

Если бы я съехал на VHDL или Bluespec, тебе легче не стало бы. А на этом список HDL-ей в общем-то исчерпывается.

То, что там для Verilog есть какой-то транслятор - это мне не интересно.

Трансляторы есть для всех HDL-ей, ламо-школоло.

HDL не исполняемые языки - поэтому слейся.

HDL - исполняемые языки. Так что ты дебил.

Семантику определяет уже обработчик, а не синтаксис.

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

Ты мне пиши код, а не балаболь. Ой ты о5 так сел в лужу. Расширения гцц - это дефакто часть Си. О5 балаболишь.

Какого такого gcc? Ты свои расширения предлагаешь, которыми event list в конструкции always заменить. В gcc таких расширений нет, ламер.

Я тебе открою секрет - в синтаксисе Си есть и = и <=

При этом одно из них - операция присвоения, а другое - бинарный оператор.

Я тебе писал уже - пиши мне код - я напишу его синтаксисом Си.

Переписывай. С module instances, с задержками и прочим.

module dff_from_nand();
   wire Q,Q_BAR;
   reg D,CLK;
   
   nand U1 (X,D,CLK) ;
   nand U2 (Y,X,CLK) ;
   nand U3 (Q,Q_BAR,X);
   nand U4 (Q_BAR,Q,Y);
   
  // Testbench of above code
  initial begin
    $monitor("CLK = %b D = %b Q = %b Q_BAR = %b",CLK, D, Q, Q_BAR);
    CLK = 0;
    D = 0;
     #3  D = 1;
     #3  D = 0;
     #3  $finish;
  end	
  
  always  #2  CLK = ~CLK;
  
 endmodule
anonymous
()

Вброшу пожалуй:

  • Verilog или VHDL
  • asm x86 или mips
  • c, fortran, oberon, forth
  • ЛNSP, лучше racket и smalltalk
  • haskell или еще лучше coq
x4DA ★★★★★
()
Последнее исправление: x4DA (всего исправлений: 1)

Реймонд в свое время предложил такой: C, perl, lisp и .. html :D

Думаю в новіх реалиях и более полно: C, smalltalk, lisp, haskell

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

Думаю в новіх реалиях и более полно: C, smalltalk, lisp, haskell

Smalltalk и lisp? В «новых реалиях»? /0

Новые реалии - это JavaScript, C++11 и ObjectiveC.

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

Ну, это до сих пор языки доноры, так что такое.

JS, C++, ObjC не являются родоначальниками или яркими представителями каких либо фундаментальных решений. Это просто языки для продуктовой разработки.

vasily_pupkin ★★★★★
()

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

chegeware
()
Ответ на: комментарий от anonymous

https://github.com/plt/racket/tree/master/collects/algol60

Спасибо, занимательно. Только вот не могу взять в толк, как там выделить именно реализацию algol'а, дабы оценить сложность. Если просто считать строки в этой директории — весьма неплохо. Но что-то мне подсказывает, что там используется немалый объем кода, лежащего вне ее.

Смотри на Elsa, там очень простое (хоть и несколько раздутое, можно еще проще) декларативное описание синтакиса C++.

Что есть Elsa? Линк, пожалуйста, гугл херню какую-то показывает.

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

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

Это что-то пишется один раз и годится потом для всех языков. Это всякая магия для написания парсеров и визиторов.

Что есть Elsa? Линк, пожалуйста, гугл херню какую-то показывает.

http://scottmcpeak.com/elkhound/sources/elsa/index.html

Я свой парсер делал тупым переписыванием Elsa, получилось в пять раз короче (только за счет другого синтаксиса).

anonymous
()

для изучения рефлексии - пайтон для ооп - смолток

kyz
()

какова метрика простоты языка?

имена и индексы на них. т.е наличие нумирации на именах.

есть много моделей по сути тождественных и отличаемых описанием

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

или любой конкатенирующий язык ( тот же форт)

или базовый класических списковый язык ( лисп)

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

или язык марковых цепей( тысячи их)

или ...

рой

qulinxao ★★☆
()
Ответ на: комментарий от post-factum

интенсивно бы пользовались бы инструментами экивалентного преобразования программ из специализированного синтаксиса и затем скриптованая доводка полученного полуфабриката до сверхоптимизированого( в пространстве скорость исполнения/обьём при исполнении/обьём при хранении бинаря/обьём при хранении исходного мнемогода(асма) и ещё вагон осей). асемблерного рулона.

т.е было бы тоже самое почти во всём - только одно существенное отличие - все квалифицированные программисты пониманиют что синтаксис пластичен .

qulinxao ★★☆
()

Потомки Оберона + хаскель. ещё можно Рефал.

anonymous
()
Ответ на: комментарий от unsigned

язык резолюций

язык переписывания(марковские )

а если учебно. то лучше под каждую концепцию свой язык

что бы например запись числа как 12334 можно было бы интерпретировать не как десятичное а как .1.2.3.3.4 т.е обращение к обьекту в глобальном пространстве имен с постепеным уточнением.

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

Херасе, наш школоляка уже на Нобелевскую премию претендует, как минимум. Обнаружил строгую формальную семантику у естественного языка! Прелестно, просто прелестно. Я и не ожидал такого количества еды!

И о5 балаболишь. Конкретное что-то есть?

У русского языка НЕТ строгой семантики. Вообще.

Реально? А что в твоём понимании не строгая семантика?

Если бы я съехал на VHDL или Bluespec, тебе легче не стало бы. А на этом список HDL-ей в общем-то исчерпывается.

Реально? Ну и? В чем суть балаболства про HDL?

Трансляторы есть для всех HDL-ей, ламо-школоло.

Реально? Трансляторы есть у всех ЯП, особенно у недоописательных Я типа твоих hdl.

HDL - исполняемые языки. Так что ты дебил.

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

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

Какой нахрен синтаксис? Синтаксис - это синтаксис, который к семантике не имеет никакого отношения.

Синтаксис, глупышка, это набёр символов и их примерная компоновка. А уж что значит эта компоновка - уже решает тот, кто это анализирует.

Ты мне ещё поболоболь, что я набором бит представляемые симоволы ascii представляю числа и т.п. Ты несёшь такой бред, что просто пичаль.

Какого такого gcc? Ты свои расширения предлагаешь, которыми event list в конструкции always заменить. В gcc таких расширений нет, ламер.

Чё несёшь? какая конструкция always, какой гцц? Ты настолько туп, что не понимаешь - твоя always - это атрибуты для блока кода, аналогичное есть в Си, только называется подругому. Но ты же тупой - тебе не понять.

При этом одно из них - операция присвоения, а другое - бинарный оператор.

И этот дурачек ещё писал, что я путаю семантику и синтаксис. Это уже семантика, а не синтаксис.

Переписывай. С module instances, с задержками и прочим.

Что тебе тут не ясно? Замени бегинаенд на нормальные скобки, ендмудел и модуль на нормальные скобки - выпили $, замени # на что хочешь. Всё - валидный Си синтаксис.

otnnte
()
Ответ на: комментарий от unsigned

Как можно откладывать на потом _базовые_ концепции?

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

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

кстати зря.

ибо схема была лучшим фильтром чем питон сейчас.

мит (в связи с общей экономической ситуацией) сейчас имеет меньше права на отчисления(смену направления) студентов чем раньше.

для полноценного использования схемы требуется большее усилие чем для полноценного использования питона ( ибо это язык подобный дартмутскому интерактивному предназначен для практического получения результата здесь и сейчас) в отличии от схемы которая предназначена для показа красоты концепций.

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

«Он приучает писать плохой код» - сдается мне, у вас какие-то особенные, студенческие, представления о плохом коде. Плохой код - это тот, который плохо работает или плохо читается. Все. Никакое отсутсвие сообщений не может сделать код апроиори плохим. Турбо Паскаль, к примеру, имеет все необходимые языковые концепции, что бы писать продакшен код самого высокого качества. Инфрастуктура у него дохлая, поэтому все равно как инструмент он бесполезен, но это уже совсем другой разговор.

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

Как раз таки схема гораздо проще в изучении. Проблема в том, что ни на что кроме демонстрации концепций она не годится. Да и вообще, по-хорошему нужно выбивать из головы эту дурь про «красоту концепций». Хочешь красоты - ищи ее в математике или еще где, а программирование - это инженерное дело.

dizza ★★★★★
()
Последнее исправление: dizza (всего исправлений: 1)
Ответ на: Всё просто. от otnnte

ты реальне максималист.

ты понимаеш , что если у языка есть GC то для его раскрутки(бутстрапинга) GC можно реализовывать как write-once , а после подьёма языка до целевого уровня заменять GC на полноценный.

тебе ДОЛЖНО быть известно что repl лиспа( lisp 1.5 макарти и его сырец eval-apply как его там исполнителя)со всем его GC помещается в считаное число килобайт (если не в полторы килобайта) в отличии от специально заточенного для уменьшения обьёма кода компилятора с (tcc).

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

в том и фишка схемы как фильтра - для синтаксиса 1 пара = всё остальное реально гимнастика для мозга .

в питоне куча полезного вынесено на уровень синтаксиса и следовательно можно уменьшить гимнастику и 2/3 курса( в лучших, в более заборостроительных в пределе к 1) занимают ознакомлением с синтаксисом и учебными примерами на закрипления его понимания.

т.е вместо фильтра стали использовать вот вам лобзик им пользуются вот так.

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

Реально? А что в твоём понимании не строгая семантика?

Иди, грязное школоло, читать про denotational semantics и operational semantics. Может тогда лучше начнешь понимать, что такое языки программирования.

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

Школоло, cycle accurate model - это обычный нативный бинарник.

Ты настолько туп, что не понимаешь - твоя always - это атрибуты для блока кода,

Ты не воняй, сучка, ты код переписывай.

замени # на что хочешь

Подробнее, сучка, подробнее. На что ты заменишь оператор задержки?

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