LINUX.ORG.RU

питонизируем си, js и иже с ними

 , ,


0

3

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

function showTableStructure() {
  if (name.length == 0) {
    alert("Please select a table!");
    return;  }

  getTableStructure(name, { type: getCurrentObject().type }, 
   function(data) {
    buildTable(data);
    $("#results").addClass("no-crop");});}

Налицо питонячья компактность и при этом сишная надёжность. Но стало опять похоже на лисп...

★★★★★

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

Классно же сделано

Херня, надо как в colorForth делать блоки разным цветом.

no-such-file ★★★★★
()

и получится вот что

Уродство получится.

EXL ★★★★★
()

Все старые шизофреники в сборе)

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

Haskell для людей. А Лисп для рептилоидов

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

Ничё, прорвёмся как нибудь :) Жаль, что такой зарплаты больше не будет.

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

Основная ошибка - все эти визуальные средства не упрощают, не уменьшают ни один из _визуальных_ метрик: ни размер картинки, ни количество символов (термов). (Пиксель - это тоже единица информации.) Создают больше бесполезного шума на единицу информации. А в первой твоей картинке эта попытка упрощения/минимизации есть.

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

А в первой твоей картинке эта попытка упрощения/минимизации есть.

Ой, ошибся, не в твоей.

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

Есть ли вакансии по D? Голанг уже нашёл, чем меня расстроить. Я понял, что обработка ошибок через коды возврата лишает работоспособности такой простой инструмент, как «упади в отладчик при любом исключении». Поскольку возврат err - это не исключение, и получается, что невозможно «поставить брекпойнт на любой ненулевой err в программе». Вчера я немало потратил времени, выискивая, почему не работал мой тест. А не работал он потому, что не была подключена база данных.

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

Есть ли вакансии по D?

Не вижу нигде. (Возможно хреново ищу)

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

Я понял, что обработка ошибок через коды возврата лишает работоспособности такой простой инструмент, как «упади в отладчик при любом исключении».

А в чём разница, пробрасывать исключение или err? Если err ненулевой, он всё равно поднимется до самого верха.

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

В отладчике можно поставить галочку «break on exception» и получить удобство как в лиспе. Когда ошибка поднялась, особенно в условиях тестового фреймворка (с удалением сообщения), от неё уже мало что осталось и найти место, где она возникла - это уже целое исследование. Особенно классно в вебе, когда прописан массив из эн обработчиков.

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

Питон вкорячить в гроб и взять вместо него D.

У меня стойкое ощущение, что D еще хуже питона. Не в реализации, а в подходе «добавляем все крутые фичи о которых узнали».

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

У меня стойкое ощущение, что те у кого стойкое ощущение, что D *что-то там*, D видели пару раз на картинке.

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

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

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

Ставь точку останова на создание объекта ошибки. Разве IDE это не умеет? А конструктор отредактировать тоже нельзя? Если свой фреймворк, то в голанге даже стектрейс с отладочными данными можно в err утрамбовать

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

Хотя согласен, голанг напоминает ассемблер. Из коробки малопригоден.

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

Ошибка - это в принципе интерфейс, а при подходе голанга никто не обязывает соблюдать даже его. Ошибка - это просто второе возвращаемое значение в тех функциях, в которых принято возвращать ошибку во втором аргументе. Хотя, не исключено, что имеет смысл проверить, можно ли поставить брекпойнт на создание инстанса, имеющего интерфейс error. Думаю, что это сделать нельзя, на посмотрю при случае. В моём случае (код написан не мной) многие ошибки превращаются в «bad request» с потерей исходного сообщения об ошибке, это происходит в одном из обработчиков, записанных в массив, а в каком именно - это пришлось выискивать.

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

Просто используй IDE. Текстовые исходники - пережиток. Будет бинарный формат для исходников, в котором просто не будет хватать избыточности для неправильного форматирования.

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

Избыточность есть в любой передаче данных. Бит чётности, md5 сумма, помощник машиниста, который говорит «вижу зелёный», вторичный DNS, согласование окончаний между существительным и прилагательным. Чтение и печатание исходного текста - это тоже процесс передачи данных.

Впрочем, я уже давно сталкиваюсь с тем, что на ЛОРе вещи такого уровня абстракции почти никто не способен понять. Высказывая их, скорее прослывёшь упоротым. Это касается и оптимизаций на уровне эргономики, и разных там соображений на тему системы типов. Вот и эта тема ЛОРчику оказалась не по зубам. Забавно, что я боролся с собой, перед тем как выкладывать такой подарочек, потому что это важная культурная вещь, которая сильно повышает производительность труда. Жаба душила. Решил вот сделать доброе дело, потому что ЛОР мне много раз помогал. Но оказалось мимо. Лорчик, конечно, хороший, но некоторые вещи тут можно сразу не писать - никто не поймёт. Но я не думал, что всё запущено до такой степени :)

Так что можешь дизрегарднуть то, что я тут элаборировал .

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

Поставлю-ка я с досады галочку.

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

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

В английском и китайском нету. В математической нотации тем более. И прочитать и осознать текст на этих языках можно быстрее, чем на русском или немецком.

Так что можешь дизрегарднуть то, что я тут элаборировал .

:-)

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

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

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

В английском и китайском нету. В математической нотации тем более. И прочитать и осознать текст на этих языках можно быстрее, чем на русском или немецком.

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

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

Или кейсы разные. Т.е. можно, наверное, предположить что знакомый текст («повторение») несколько быстрее должен читаться на английском. В то время как малознакомый текст («обучение») будет быстрее читаться на русском.

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

Ладно, тогда ещё напишу при случае.

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

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

Именно. Это называется «теория информации». Вещь достаточно простая и постижимая. Совсем коротко та часть её сути, которую я понял: возможна надёжная передача информации по ненадёжному каналу, и для этого нужна избыточность.

Соответственно, любой процесс (такой, как написание программы по ТЗ, или правку баги) можно воспринимать как процесс передачи информации (смысла программы) по ненадёжному каналу (надёжного ничего вообще нет). Аналогия не такая уж притянутая за уши, т.к. чего общего между звуком голоса и циферками в mp3 файле? Не меньше общего, чем между ТЗ в формате md и программой, написанной по этому ТЗ.

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

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

Т.е. речь не о лёгкости осознавания, а о корректности.

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

Питон вообще не нужен.

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

Т.е. речь не о лёгкости осознавания, а о корректности.

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

Но это конечно лишь идея.

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

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

С этим соглашусь.

Т.е. прочитать, вероятно, быстрее. Но вот осознать - не факт, кмк.

Ну попробуй сравнить «сумма произведения a и b и частного от деления c на d» и «a*b+c/d». Неужели первый вариант осознаётся быстрее?

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

Китайский компактней русского примерно в два-три раза. Можно смотреть по двуязычным сообщениям: http://russian.people.com.cn/n3/2018/0508/c95460-9457398.html

Или кейсы разные. Т.е. можно, наверное, предположить что знакомый текст («повторение») несколько быстрее должен читаться на английском. В то время как малознакомый текст («обучение») будет быстрее читаться на русском.

Только если под малознакомым текстом понимать текст, в котором известны не все слова. Например «the mome raths outgrabe» сложнее понять, чем «в мове зелюки хрюкотали», потому что в английской фразе неясно, какое слово подлежащее, а какое — глагол.

Если же известными словами про неизвестный факт, то китайский и английский воспринимается быстрее по той же причине, по которой математическое выражение или дорожный знак воспринимается быстрее, чем аналогичное текстовое описание.

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

Именно. Это называется «теория информации». Вещь достаточно простая и постижимая. Совсем коротко та часть её сути, которую я понял: возможна надёжная передача информации по ненадёжному каналу, и для этого нужна избыточность.

Можно пойти дальше: указывать номера строк, как в BASIC, чтобы не пропустить случайно важную строку :-). Почему избыточность важна именно в указании окончания блока кода?

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

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

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

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

Ну попробуй сравнить «сумма произведения a и b и частного от деления c на d» и «a*b+c/d». Неужели первый вариант осознаётся быстрее?

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

Я разделил в своём сообщении «новый контекст» и «знакомый контекст». В знакомом контексте удобнее компактная нотация. А в незнакомом - более помехозащищенная. А иначе зачем писать учебники по математике словами русского (или любого другого) языка? Обходились бы только формулами, ведь компактнее и быстрее воспринимается. Но момент в том что без объяснения можно и год потратить на формулу да не понять её, если понятия заложенные в ней незнакомы.

Если же известными словами про неизвестный факт, то китайский и английский воспринимается быстрее по той же причине, по которой математическое выражение или дорожный знак воспринимается быстрее, чем аналогичное текстовое описание.

Рискну предположить что только для бесед типа «Сходил за чаем? - Да, уже сходил». Но для таких бесед люди часто используют просто «сходил?» - «да». Или вполне себе обходятся смайликами и пунткуацией вроде "?" - «тут поднятый вверх большой палец на кулаке». Для более сложных вещей думаю что этот тезис под вопросом.

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

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

monk

Если же известными словами про неизвестный факт, то китайский и английский воспринимается быстрее по той же причине, по которой математическое выражение или дорожный знак воспринимается быстрее, чем аналогичное текстовое описание.

Рискну предположить что только для бесед типа «Сходил за чаем? - Да, уже сходил». Но для таких бесед люди часто используют просто «сходил?» - «да». Или вполне себе обходятся смайликами и пунткуацией вроде "?" - «тут поднятый вверх большой палец на кулаке». Для более сложных вещей думаю что этот тезис под вопросом.

Ну да, не весь конечно тезис а тезис только о неизвестном факте из широкого контекста. Поскольку пример с чаем подтверждает твой тезис в узком контексте. Факт вроде как неизвестный, а хватает всего ничего.

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

Кмк, в моей постановке вопроса это очень связанные вещи, если не одно и то же.

Тогда ок.

Китайский компактней русского примерно в два-три раза.

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

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

Почему избыточность важна именно в указании окончания блока кода?

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

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

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

тексты разного смысла не отличались только одним пробелом (табом)

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

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

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

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

А иначе зачем писать учебники по математике словами русского (или любого другого) языка? Обходились бы только формулами, ведь компактнее и быстрее воспринимается.

Потому что не для всех слов придумали математическую нотацию.

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

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

Рискну предположить что только для бесед типа «Сходил за чаем? - Да, уже сходил»

Я же привёл пример статьи на русском и китайском. Китайская читается и понимается в два раза быстрее.

Ещё есть соображение что восприятие информации мозгом ограничено по скорости. И его можно только ухудшить, а улучшить - вряд ли.

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

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

Это опять же как с мат. формулами выражающими что то более-менее нетривиальное - пойди её разбери. Хотя написано от силы с десяток символов.

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

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

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

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

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

Потому что не для всех слов придумали математическую нотацию.

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

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

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

Я же привёл пример статьи на русском и китайском. Китайская читается и понимается в два раза быстрее.

Я, конечно, не пошёл по ссылке :). Но вот сейчас сходил, классный пример, спасибо. Однако, с чего мы берём что оно понимается вдвое быстрее? Есть замеры?

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

Это зависит от формулы. Помниться, была история что кто то подсчитал что в определение нуля и единицы у Бурбаки что то очень много символов. Аж больше миллиона кажется, если спуститься к их исходным символам. Т.е. нет, никаких пол часа не хватит.

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

В живом же языке контекст всегда сложен широк и неоднозначен.

Кажется, пример с китайским текстом опроверг бы то что я говорю, но ещё раз, почему мы считаем что он быстрее воспринимается?

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

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

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

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

Нет. Тебе ведь не нужен контекст, чтобы понять символы +, %, $, &, №. Сужение контекста происходит только за счёт ограниченного словарного запаса. Но если слов не хватает, то неважно каких, устных или письменных.

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

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

Однако, с чего мы берём что оно понимается вдвое быстрее? Есть замеры?

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

Фактически, можно замерять время чтения и понимания чисел, сделанных цифрами и текстом. Будут примерно те же результаты.

определение нуля и единицы у Бурбаки что то очень много символов

При представлении в виде графа полная запись обыкновенной единицы состоит из 2 409 875 496 393 137 472 149 767 527 877 436 912 979 508 338 752 092 897 знаков и 871 880 233 733 949 069 946 182 804 910 912 227 472 430 953 034 182 177 связей.

В виде формулы уже не так страшно: {\displaystyle \tau _{Z}((\exists u)(\exists U)(u=(U,\{\varnothing \},Z)\land U\subset \{\varnothing \}\times Z\land (\forall x)((x\in \{\varnothing \})\Rightarrow } {\displaystyle (\exists y)((x,y)\in U)\land (\forall x)(\forall y)(\forall y')} {\displaystyle (\exists y)((x,y)\in U)\land (\forall x)(\forall y)(\forall y')} {\displaystyle (((x,y)\in U\land (x,y')\in U)\Rightarrow (y=y'))\land (\forall y)((y\in Z)\Rightarrow (\exists x)((x,y)\in U))))} {\displaystyle (((x,y)\in U\land (x,y')\in U)\Rightarrow (y=y'))\land (\forall y)((y\in Z)\Rightarrow (\exists x)((x,y)\in U))))}

В живом же языке контекст всегда сложен широк и неоднозначен.

В китайском как в языке программирования контекст задаётся в начале параграфа. А неоднозначен он и в фонетических языках: «в замке лежал лук». Более того, в фонетических он часто более неоднозначен (к иероглифам/пиктограмма можно добавлять непроизносимые флажки, а в звуковой речи приходится всё произносить).

Кажется, пример с китайским текстом опроверг бы то что я говорю, но ещё раз, почему мы считаем что он быстрее воспринимается?

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

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

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

Избыточность синтаксиса — единственное, что позволяет проверить его правильность. В формате без избыточности любая последовательность данных — синтаксически правильна.

PS: Относительно языков... Отсутствие «избыточности» не означает временную «компактность». Например, азбука Морзе имеет очень низкую избыточность, но передавать что-либо азбукой морзе дольше, чем любым другим языком.

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

Не единственное. Система типов ещё.

Это тоже избыточность. Компилятор мог бы вывести тип переменной из того, что в неё записывается. Указание всех типов явно — это лишняя, избыточная информация.

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

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

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

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

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

Отсутствие «избыточности» не означает временную «компактность».

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

И в этом смысле, группы отступами — частичный переход к двумерной записи от линейной.

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

Типа такого (это реально можно скомпилировать!)

#lang 2d racket
(require 2d/match)

(define (subtype? a b)
  #2dmatch
  ╔══════════╦══════════╦═══════╦══════════╗
  ║   a  b  ║ 'Integer ║ 'Real ║ 'Complex ║
  ╠══════════╬══════════╩═══════╩══════════╣
  ║ 'Integer║             #t              ║
  ╠══════════╬══════════╗                  ║
  ║ 'Real   ║          ║                  ║
  ╠══════════╣          ╚═══════╗          ║
  ║ 'Complex║        #f        ║          ║
  ╚══════════╩══════════════════╩══════════╝)

Шрифт не моноширинный, чуть некрасиво получилось

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