LINUX.ORG.RU

Серия статей «По языку в день» от Андрея Шитова

 ,


5

3

Андрей Шитов, известый Perl-разработчик, решил в этом году попробовать как можно больше языков программирования и поделиться опытом с читателями.

Языки программирования восхитительны! Ты влюбляешься в какой-либо язык как только напишешь несколько тестовых программ. Чем больше изучаешь, тем лучше чувствуешь сам язык и идеи положенные в его фундамент.

В рождественском календаре этого года (с 1 по 24 декабря), я буду ежедневно публиковать статьи повествующие об основах различных языков программирования: один день - один язык. Чтобы сделать обзоры более полезными, я постараюсь придерживаться единого формата и разобрать аспекты языка, необходимые для написания следующих мини-проектов:

  • Hello, World!
  • Функция, вычисляющая факториал рекурсивно или в функциональном стиле
  • Программу, создающую массив объектов и выполняющую полиморфный вызов методов на них
  • Реализацию сонной сортировки (sleep sort). Данный алгоритм не применяется в боевых условиях, но замечательно демонстрирует возможности языка в разрезе конкурентности

Список языков:

  • День 1. TypeScript
  • День 2. Rust
  • День 3. Julia
  • День 4. Kotlin
  • День 5. Современный C++
  • День 6. Crystal
  • День 7. Scala
  • День 8. Dart
  • День 9. Hack
  • День 10. Lua
  • День 11. Raku
  • День 12. Elixir
  • День 13. OCaml
  • День 14. Clojure
  • День 15. Nim
  • День 16. V
  • День 17. Go
  • День 18. Hy
  • День 19. Red
  • День 20. Mercury
  • День 21. Elm

>>> Подробности

★★★

Проверено: cetjs2 ()

Ответ на: Re: когнитивные способности от anc

Re: когнитивные способности

Сколько мультях спалили?

какое там «спалили». в то время комп стоил как кооперативная квартира. его спалить - в страшном сне не приснилось бы :) lpt, кстати, тоже неплох был. при прямом управлении так вообще милое дело. я уж сто лет lpt не видела. а старые принтеры именно через него подключались.

Прямая работа с видяхой. Так интересно было.

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

Iron_Bug ★★★★ ()
Ответ на: Re: когнитивные способности от Iron_Bug

какое там «спалили». в то время комп стоил как кооперативная квартира. его спалить - в страшном сне не приснилось бы :)

Я почему так написал. На домашних мы тоже не палили. Ибо вариантов купить новую из разряда «невозможно». А вот позже на работе, охх, кучка молодежи дорвавшиеся до кучи железа, думаю вы представляете как это выглядело. Не одну мультяху спалили «на радостях» исключительно в процессе ыкперементов :)

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

слух слуха слух.

девочки троллили «мужа подруги» - взывая к его интересу к адюльтеру с каждой но не с ней - и да и не факт что жена(знакомого) будет не первой в случае если «он сам пришёл»

у девочек социалочка эволюционнеей по дефолту.

qulinxao3 ()
Ответ на: Re: когнитивные способности от Iron_Bug

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

и да микрокомпьютерная заточка на выжимания каждого бита - когда каждый параграф байтов это доллар -

через это понятней становится когда смотришь первый мануал к Тurbo Pacsal от 1983 года -

и отсутствие тех мануалов как и (отсутствие)использования на проф уровне TP7.0 в системе образования 1/6 (1/8) начиная с середины 80ых и по сию ( местами) пору.

адекватность понуждает не везде пипхолить - нес па?

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

Пришел к крестному на день рождения.
На нем было три подруги его жены /молодые девчата, все замужем/.
И не стесняясь «наперебой» рассказывают как хорошо быть встретить

какой-то вольный пересказ сказки о царе салтане

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

тут первейшее затруднение

найти(т.е установить для себя) где проходит тонкая грань промеж

сделать здесь и сейчас и забыть.

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

. . .

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

. . .

делать только то для чего есть инструменты.

зы. спектр очень … и очевидно коррелирует с модой разделения труда в данном обществе ибо есть и возможность субпотряда на «мужской труд»

qulinxao3 ()
Ответ на: Re: когнитивные способности от anonymous

Re: когнитивные способности

ну вон пацаны с пещер десятки тысяч лет назад создавали искусство

Это сейчас обозвали искусством, а пацаны тупо чертили инструкции как правильно убить мамонта.

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

В кой то веке согласен с тобой. Бред какой-то инфантильный.

rumgot ★★★★★ ()

Так, а где питоныч то? Что-то я не заметил при первом прочтении.

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

сейчас изучаю гаэльский

ирландский или шотландский?

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

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

строго говоря ЯП - это не синтаксис. это нечто большее. это общая логика конструкций и возможностей этого языка

+1, язык – это нечто что фиксирует знания, и возможные способы их композиции. например, аналитические языки (английский) или синтетические (немецкий, турецкий), где можно создавать свои слова (см. Марк Твен «Почему немецкий не мой любимый язык»).

если про лингвистику, то есть теория речевых коммуникативных актов, например. или витгенштейн тот же.

парадигма реализации логики в данном конкретном языке.

но большинство языков мультипарадигменные, отсюда – забивают гвозди микроскопом (не той парадигмой = моделью мышления).

знание библиотек из нужной области применения существенно помогает при планировании реализации каких-то задач. а синтаксис - это как раз мелочи.

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

например, язык Inform7. Если коротко, то это текстовые игры – сначала были адвентюры типа Zork, Colosal Cave и т.п. (+400 игрушек от Infocom в 80-90х). потом Грэм Нельсон в 90х отреверсил формат вирутальной машины Zork’а (ZVM) и сделал язык Inform 6 (похожий на Objective C, но другой). потом сетевые развились в MUD, MUCK, MUSH, MOO – где можно телнетом зайти поиграться, но удобнее специальный клиент. в MUD обычное RPG action, в MUCK и MUSH уже что-то можно программировать самими игроками, в MOO – MUCK object-oriented. серверные процессы базы данных объектно-ориентированной (например, LambdaMOO и stunt.io мануал, вот такое про векторный гипертекстовый фидонет: improvise )

собственно, начнём с Inform. Inform6 был предназначен чтобы отреверсить Zork VM, в которую компилировались игрушки из MDL (диалекта лиспа). потом добавили ещё формат Glulx, и .blorb/.gblorb для упаковки ресурсов в 1 файл.

уже там были объекты (things), значения(values) и отношения. и какой-то движок правил над ними.

парсер разбирал командную строку внутри игрушки в части речи: > ACTOR, VERB SUBJECT OBJECT ADJECTIVE. и потом корректно распознавал «объекты» игры и их методы.

затем в Inform7 Грэм Нельсон, начитавшись Literate Programming запилил на основе своего форка CWEB (inweb) «Natural Inform», *.ni. то есть, Natural Language Inform. теперь Inform7 компилируется в Inform6 который компилируется в .z5, .z8 ZVM или Glulx VM .ulx или .gblorb.

anonymous ()
Ответ на: программирование на естественном языке от anonymous

Re: программирование на естественном языке

вот пример обычного кода на Inform7, из стандартной библиотеки:

 "Galileo, Galileo"

Include Metric Units by Graham Nelson.

The acceleration due to gravity is an acceleration that varies.

Laboratory is a room. "An elegant Pisan room, with fine Renaissance panels, except for the teleport corridor to the east." A cannon ball and a feather are in the Laboratory.

Martian Outpost is east of the Laboratory. "A reddish-lit room with steel walls, whose only exit is the teleport corridor to west."

A room has an acceleration called gravitational field. The gravitational field of a room is usually 9.807 m/ss. The gravitational field of the Martian Outpost is 3.69 m/ss.

A thing has a mass. The mass of a thing is usually 10g. The mass of the cannon ball is 2kg.

Dropping it from is an action applying to one thing and one length.

Understand "drop [thing] from [length]" as dropping it from.

Check dropping it from:
     if the player is not holding the noun:
         say "You would need to be holding that first." instead.

Check dropping it from:
     if the length understood is greater than 3m:
         say "Just how tall are you, exactly?" instead.

Check dropping it from:
     if the length understood is 0m:
         try dropping the noun instead.

Equation - Newton's Second Law
         F=ma
where F is a force, m is a mass, a is an acceleration.

Equation - Principle of Conservation of Energy
         mgh = mv^2/2
where m is a mass, h is a length, v is a velocity, and g is the acceleration due to gravity.

Equation - Galilean Equation for a Falling Body
         v = gt
where g is the acceleration due to gravity, v is a velocity, and t is an elapsed time.

Carry out dropping something (called the falling body) from:
     now the acceleration due to gravity is the gravitational field of the location;
     let m be the mass of the falling body;
     let h be the length understood;
     let F be given by Newton's Second Law where a is the acceleration due to gravity;
     say "You let go [the falling body] from a height of [the length understood], and, subject to a downward force of [F], it falls. ";
     now the noun is in the location;
     let v be given by the Principle of Conservation of Energy;
     let t be given by the Galilean Equation for a Falling Body;
     let KE be given by KE = mv^2/2 where KE is an energy;
     say "[t to the nearest 0.01s] later, this mass of [m] hits the floor at [v] with a kinetic energy of [KE].";
     if the KE is greater than 50J:
         say "[line break]This is not doing either the floor or your ears any favours."

Test me with "get ball / drop it from 1m / get ball / drop it from 2m / get ball / drop it from 3m / get ball / drop it from 3.2m / get ball / drop it from 0m / get all / east / drop ball from 3m / drop feather from 3m".

да, именно это:

определили формулы: закон сохранения энергии, закон движения падающего тела, гравитационную постоянную. объекты, правила, процедуры вычисляющие правила. потом протестировали, проиграли это всё. воспроизвели эксперимент Галлилея. прелесть чисто текстовых игр в том, что у них очень гибкая модель мира. определены объекты, их текстовые описания и отношения (на этом уровне это выглядит уже как некая база данных, и действительно, Infocom пока не разорился пытался сделать такую, с интерфейсом на естественном языке).

anonymous ()

Re: программирование на естественном языке

  1. особенность Информ 7 в том, что это rulebook-based язык. (из Inform 7 for Programmers.pdf)

то есть, есть правила, из которых состоят библиотеки правил. правила вычисляются, перебирая процедуры (похоже на мультиметоды в коммон лиспе). пока не вычислится правило в конкретное значение (если нет, то перебираются остальные подходящие для вычисления правила процедуры – как call-next-method в CLOS).

  1. особенность в том, что идентификаторы – переменные, названия процедур, правил могут содержать пробелы.

  2. особенность в том, что распознаются синонимы, множественное число, причастия и прилагательные (adjectives). например: repeat with antagonist running through unhappy resourceful people – здесь unhappy AND resourceful AND people прилагательные автоматически распознаются в предикаты отбора, итератор по контейнеру (отобранному). можно использовать и отношения: repeat with ally running through resourceful people which are friends with the player

Inform7:

  • Domain-specific language для написания текстовых адвентюр

  • event-based

  • object-based (но не совсем object-oriented): есть одиночное наследование и полиморфизм, нет абстрагирования, модульности, пространств имён и инкапсуляции by design.

  • макроязык

  • strongly typed

  • statically allocated

  • pronounceable, type-able

  • eschews one true construct

  • easy to read, hard to write (некоторые конструкции компилятор не понимает, их нужно переформулировать)

  • semantic concision vs. readability

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

тем не менее, под это авторы уже написали примерно 4800 расширений, различных rulebooks. которые учитывают почти все аспекты виртуальной текстовой реальности.

из них любопытны про лингвистику: поддержка немецкого и прочих языков.

то есть, команды английские распознаются в части речи, которые через ООСУБД с ЕЯ интерфейсом переводятся в аналоги на другом языке. это всё реализовано расширениями. русского языка нет, разумеется. есть «русский информ», но это – допиленный Inform6, не естественно-язычный. хотя допилить в принципе возможно – по аналогии с немецким.

anonymous ()

Re: программирование на естественном языке

Грем Нельсон на оффсайте Inform7 писал презентации, про то что собирался в августе 2019 выложить и открыть исходники (лет 20 для Информ7 он выкладывал только бинарники, Inform6 вроде есть с исходниками). на текущий момент пока не выложил, либо выложил в приватные закрытые репозитории. ждём в 2020, очень любопытные должны быть исходники – пример разработки достаточно крупной програмы в Literate Programming стиле.

MOO в виде сервера LambdaMOO, расширений ООСУБД core: JHCore и/или, того же stunt.io выглядит даже ещё более интересно.

здесь есть язык типа Lua/MUMPS/Inform6/внезапно, JavaScript объектно-ориентированный, в котором есть хранимые в базе объекты и анонимные. объекты запускают серверные процессы, практически акторная модель. объекты соотвествуют VERB SUBJECT OBJECT и содержимому игрушки. комнаты, пользователи, отношения, вещи, значения – всё объекты. объекты состоят из чисел, строк, списков, хешмапов. объекты умеют храниться в ООСУБД, запускать процессы, внешние программы через pipe, читать/писать по HTTP, JSON, вебсокеты и т.п.

в отличие от ХТТП протокол принципиально с сохранением состояния – всё вычисляется на сервере и его ООСУБД, сессии встроены нативно. юзер-игрок с флагом «программер» может программировать поведение объектов. юзер-игрок с флагом «визард» может создавать объекты, программировать, настраивать поведение, бекапить и загружать базу.

есть расширение текстового протокола (исходно, telnet) для поддержки гиперссылок, картинок и прочего: MCCP, MCP. (Mud Control Protocol, Compression Control protocol)

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

в библиотеках, например JHCore под LambdaMOO сервер есть к примеру веб-сервер. или тот же stunt.io где встроенный веб-сервер.

играться во всё это можно хоть простым телнетом. есть примеры обучающих курсов, где в MOO среде учат чему угодно в виртуальной аудитории.

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

из клиентов любопытны реализации на Tcl/tk: Trebuchet и tkMOO

на них можно запилить свой GUI в полпинка. есть стандартные модули writeboard на которой можно рисовать (коллаборативно, совместно, всеми игроками по сети) и например, играть в шахматы либо читать почту (из внутриигровой BBS)

в общем, на этом можно запилить векторный гипертекстовый фидонет, сделанный правильно.

в отличие от того же JavaScript здесь более легковесный текстовый интерфейс, сразу готовые БД, библиотеки и правила.

есть поддержка сессий.

в общем, на базе MOO можно запилить серверный веб, сделанный правильно. и более легковесный клиентский.

на гитхабе есть множество реализаций MOO серверов, в том числе и на Haskell Go Erlang Elixir JavaScript Node.js.

здесь любопытны реализации на Go, Erlang или на чём-то вроде языка Pony, с акторной моделью для лучшей асинхронности.

вот такое бывает «программирование на естественном языке»

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

вообще не понимаю, при чём тут какие-то журналы и какой-то паскаль где-то в школах (в 80-е в школах компов-то почти не было) и при чём тут программирование под «микрокомпьютеры». в тех же 80-х даже у самых мощных персональных компов было не так уж много ресурсов.

Iron_Bug ★★★★ ()
Ответ на: программирование на естественном языке от anonymous

Re: программирование на естественном языке

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

Iron_Bug ★★★★ ()

Re: программирование на естественном языке

tkMOO, Trebuchet на Tcl/Tk

язык Red выглядит даже более интересно для реализации подобного MOO-клиента, чем Tcl/Tk:

  • там тоже есть встроенный GUI, который пишется на RED/REBOL не сложнее, чем на tcl/tk ** layout manager в tcl/tk лучше, в RED/REBOL стандартные не допилены. нужно смотреть новый GUI библиотеками в REBOL3, в RED тоже нужно проверить ** в RED (и в REBOL3 да, в REBOL2 нет) есть акторы и паттерн реактор, из-за которого можно реализовать например ексель в 17 строчек, или livecoding IDE ** встраиваемый LibRED как библиотека в/из Си приложения

  • язык гомоиконный. всё является списком. всё интерпретируется как fexps.

  • язык RED – высокоуровневая надстройка над низкоуровневым RED/System, который семантически эквивалентен Си, с точностью до синтаксиса. ** сам тулчейн RED написан на REBOL. например, кросскомпилятор и линкер – написаны на REBOL, Red, Red/System.

в общем, нечто эквивалентное tkMOO/Trebuchet сейчас имело бы больший смысл написать на RED (и кодогенерировать в си-подобный Red/System), чем на Tcl/Tk.

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

речь о вашем культе сверх оптимальности.

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

т.е вы застряли.

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

qulinxao3 ()

Re: программирование на естественном языке

была такая текстовая игра-приключение, Zork – культовая вещь, положившая начало целому жанру…

гиперчтиво описалово – это интерактивная литература.

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

>ATTACK DRAGON
KILL WITH WHAT, BARE HANDS?

и когда игрок перебрал уже весь возможный инвентарь, и отчаялся пройти дальше – нужно было просто СКАЗАТЬ «ДА»

>ATTACK DRAGON
KILL WITH WHAT, BARE HANDS?
>YES
OK. YOU DID IT  -- JUST KILLED A DRAGON WITH BARE HANDS.

:))))

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

но при желании перепрограммировать можно всё что угодно, как угодно – см. расширение Natural Conversation или похожее из Информ7.

описаны боты, NPC и движок правил на прологе. боты могут убеждать друг друга в ходе разговора, при этом движок правил на прологе определяет влияние/степень влияния и убеждения, темы, осведомлённость, знания о мире.

или про детектива: если NPC видел …. и знает что … — убедить его в алиби будет непросто, практически невозможно.

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

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

я сама лучше выберу, как тратить моё время. лучше быть программистом, чем макакой.

Iron_Bug ★★★★ ()

Re: программирование на естественном языке

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

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

сольём ветви.

Вы утверждает что «в математике всё точно»

есть вопрос к вам о термах.

терм математика вами определён как?


Волга впадает в Каспийское Море == Программист лучше макаки.

Программист Пишущий как Iron_Bug лучше Программиста Пишущего иначе(Iron_Bug)?

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

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

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

сперва_добейся.

лол.

сколько лет нужно было ken|bwk| ну ты понял что бы уметь в Си?

qulinxao3 ()

Re: программирование на естественном языке

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

эта оптимизация в этой нише может оказаться и не нужной.

ну вот например, жанр текстовых адвентюр и их потомков. в начале 80х, в конце 70х выходцы из MIT, лаборатории динамического моделирования сделали диалект лиспа MDL (Muddle). и написали на нём текстовую игру Zork 1 (ещё )(которая изначально была ЕМНИП на фортране, как конечный автомат с вычисляемым GOTO). получился eDSL. одно плохо: лисп тогда был пригоден к исполнению на мейнфрейме, а железо (все эти спектрумы, коммодоры, амиги, атари и прочие BBC micro) – c малыми очень ресурсами. поэтому написали VM и её проигрыватель – по сути ОС (загружалось с дискетки, оверлеями подгружало текстовые ресурсы игры в 200 кб в память 64кб по кускам, почти как своппинг и пейждинг).

write once – run everywhere. Zork I вышел под 20+ операционных систем, ещё штук под 20 был портирован. потом отверверсили в 90х и портировали саму VM (в том числе, переписали Zork I под Infom7). исторические сорцы были утеряны, потом найдены и восстановлены

в общем, целая история: ещё

и исходники переписывали на тот язык, на котором было удобнее и полезнее.

например, реализация на лиспе MDL позволила отладить парсер естественного английского языка и частей речи. и транспилировать в более оптимизированную под конкретное железо VM. сейчас уже и лиспа того толком нет, разве что где-то в виртуальной машине можно найти реализацию MDL. ещё была такая статья в журнале Байт 87 года про AdvSys, более простой диалект лиспа.

сравнивая исходники на фортране, MDL, Inform7 нетрудно заметить, что последние гораздо более понятны. inweb опять же, отсюда про «литературное программирование» (подробнее на оффсайте Inform 7 в презентациях Грэма Нельсона)

в том числе и не программистам. множество авторов текстовых адвентюр на базе Inform 7 и не были никогда программистами – это писатели, которые хорошо умеют писать, интересные истории, насыщенное повествование либо любопытную модель интересного мира.

это главнее для успеха текстовой адвентюры – чем то, насколько быстро парсер парсит текстовый ввод или насколько полноценным языком программирования является язык авторинга :))

anonymous ()

Re: программирование на естественном языке

что характерно, что адвентюры на Информ7 как правило содержат интересную историю и реалистичную модель мира.

на QSP, URW либо RenPy :) – простые менюшные предопределённые выборы. не так интересно.

на TADS и прочих которые почти полноценные языки программирования – модель мира и парсер тоже попроще.

на многочисленных попытках на гитхабе на питоне, node.js написать MUD или текстовую адвентюру – всё закончилось на самом движке.

это вообще проблема жанра, что многие пишут свой движок на очередном, полноценном :) языке программирования.

а удивительные истории – написать не успевают.

здесь как-то особняком стоит linear logic и реализация движка на ocaml/haskell/прологе (linear logic как оптимизация backtracking в прологе). вот здесь у этой девушки Cris Martens в кандидатской – подробнее.

в общем, для прототипирования какой-то игры, повествования, механики взаимодействия – подобные средства разработки и языки – как раз то, что надо.

и чем высокоуровневее, тем более пригодное к оптимизации. то же linear logic представление – где-то у неё на сайте была презентация про 2-3 игрушки в таком стиле. главное то, что можно проверить все эти нелинейные диалоги и повествования на трассировку и прослеживаемость, формально верифицировать (у неё в диссере был пример, ЕМНИП про model checking на linear temporal logic про Ромео и Джульетту, про логику повествования и его согласованность, которые можно проверить формально, и формально синтезировать)

просто там критерии оптимизации другие.

anonymous ()

Re: программирование на естественном языке

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

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)

Re: программирование на естественном языке

я тоже был таким когда-то давно :) а потом понял что всё это предварительная оптимизация, которая корень всех зол :)

anonymous ()

Re: программирование на естественном языке

я лично никогда не любила художественную литературу - за излишек несущественных слов, которые мешают изложению сути.

когда лет 25 назад изучал С++ по стандарту Страуструпа, я подготовился: почитал худла погромоздче, повитееватее, типа «Нейромантика» Гибсона, Ле Гуин «Волшебника Земноморья», «Сильмариллион» Толкина и «Замок Горменгаст» Мервина Пика. последнее вообще эпично, ну просто кафкианский процесс какой-то: 2/3 книги ничего не происходит, идёт глубокая внутренняя жизнь. и потом наконец ГГ сбежал таки из этого дурдома (говорят, это 1-я часть трилогии, но дальше я ниасилил).

после вот такой вот в лучшем смысле этого слова графомании (когда описывают колонну в соборе парижской богоматери на двух страницах одним сложноподчинённым предложением) – стандарт С++ отлично зашёл, на разгоне.

как у Алисы в Стране Чудес: «бывает такая чушь, по сравнению с которой эта ещё проста и понятна, как букварь».

в общем, изучать ЯП по стандарту – дело неблагодарное.

anonymous ()

Re: программирование на естественном языке

  • за излишек несущественных слов, которые мешают изложению сути

они не мешают, в том-то и дело. при нормальном изложении даже помогают.

лео каганов про идеи в литературе, а также про то, как писать фантастику.

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

а собственно голая идея не самый главный фактор успеха книги как истории. например, на samizdat дофига откровенной графомании. у которых неплохие идеи, но аффтар ничтоже сумнящеся думает, что огорошить читателя своей идеей – этого достаточно. он проникнется, и решит «понять и простить» – и корявый текст, и картонных персонажей, и выдуманные конфликты.

с другой стороны, если подать идею правильно – через историю, характеры и динамику. то далее читатель сам начнёт копать, собирать куски текста у себя в голове, метапрограммировать свою интересную историю :)) и гадать, чего же хотел сказать автор. это успех, я считаю – когда история живёт своей жизнью далее сама по себе. значит, основные приёмы были выбраны верно и далее жизнеспособный сюжетец для подачи идеи, как гарнир – и сама идея.

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

с ЯП и их инфраструктурой и «идеологией» (если она вообще есть) так тоже бывает.

anonymous ()

главное свойство ЯП - краткость изложения

APL J K

шах и мат Илон Маск.

зы. в пространстве где только С++(оки оки С ящо когда железо соусем) язык достойный внимания все вами указанные достоинства синонимичны плюсам (ну с сяшкой для совсем чЁрной машинерии) Коузма Прутков - что то о флюсе.

qulinxao3 ()

Re: программирование на естественном языке

когда описывают колонну в соборе парижской богоматери на двух страницах одним сложноподчинённым предложением

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

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

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)

Re: программирование на естественном языке

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

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

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

Как то сегодня «пасмурно» на форуме:

  • одна делится опытом орального секса;
  • Тревожные времена. (iGotNewsForYou);
  • Settis нездорового человека (Princesska)

Владимир

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

а что на нём такое написано, ради чего стоит учить?

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

ничего особого. просто мне он нравится. красивый.

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

произношение не такое чёткое, как в ирландском :)

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

во многих языках нечёткое. это меня как-то мало волнует.

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

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

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

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