LINUX.ORG.RU

отнять и поделить

 , ,


0

3

Я вот понял, что операция деления используется довольно редко. Вот и думаю, не отобрать ли у неё букву и не заменить ли её словом «поделить»?

И ещё. Минус у меня получается перегружен, это унарный минус, бинарный минус и операция «это», которая отделяет имя сущности от объявления её типа:

переменная А - целое = 5

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

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

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

★★★★★

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

Записал итог данной темы в репозиторий.

https://bitbucket.org/budden/l2/src/default/doc/обсуждения/лор-отнять-и-подел...

Интересно, появился новый вид документа в проекте «обсуждение».

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

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

В C это плохо кончилось.

Хоспаде, ты и сишку даже не знаешь. И такая дубина лезет проектировать языки. Неудивительно, что у тебя получается только народ смешить. После твоих испражнений я даже зауважал создателей 1С. Там люди действительно старались выжать максимум из дебильного ТЗ. А ты просто неграмотный генератор лулзов.

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

Да твое дело. Я выше описал одну конкретную причину по которой считаю Русский плохим выбором. Если ты не собираешься выпускать свой ЯП за пределы родины матушки, то причина пропадает. К Русскому языку как к базе для ЯП претензий не имею.

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

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

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

А есть ли в Линукс типографская раскладка Ильи Бирмана?

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

Вообще в GNU/Linux раскладки очень легко делаются, даже если бы не было. Смотри /etc/X11/kbd/

И вообще, помнить 4 цифры - это мрак.

Там тема про винду, в линуксах никаких кодов помнить не надо и можно добавить в раскладку по два дополнительных символа на AltGr-клавиша и AltGr-shift-клавиша. Не говоря уже об XCompose, если хочется Alt оставить альтом.

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

Можно не париться, конечно, и считать, что а:б - это всегда пакет:имя, а:б:в - это всегда полное имя, а библиотка:пакет писать как пакет(библиотека,пакет).

В Tcl "::argv" — глобальный неймспейс, а если путь начинается не с "::", то путь относительный, можно так же сделать. Зачем ограничиваться всего трёмя уровнями иерархии?

Как разделитель кстати можно было бы взять пробел, как предложено в Cloverfield.

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

Аббревиатура, кстати, известная - культурно-досуговый центр :)

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

Там тема про винду, в линуксах никаких кодов помнить не надо

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

Зачем ограничиваться всего трёмя уровнями иерархии?

Это не три уровня иерархии, это три вида сущностей. Библиотека - аналог «пути поиска». Например, где-то в настройках написано, qt=/src/local/qt4. Пр-во имён, порождённое модулем, скорее относится к модулям в системном смысле, а не к файлам. Ну и дальше внутри пр-ва имён идут идентификаторы.

Т.е. если написано qt/lists:QList, то значит мы ищем модуль lists в библиотеке qt, а в нём уже идентификатор QList. Ничто пока не мешает сделать идентификатор вида qt.extensions/lists.super:mylist.myfield

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

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

Угу, и с самими функциями такая же беда. Вот в Паскале я натыкаюсь на function или procedure, и понятно, что это. А в Си ещё пока круглую скобку найдёшь...

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

Как-то мутит меня с этого КнцЕсли. Выглядит как издевательство над языком.

Уж 2 гласные можно вернуть на место...

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

Прочитал уже как он 1С код «сократил»? Чел реально под веществами постоянно.

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

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

Фейспалм. Опять...

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

А есть ли в Линукс типографская раскладка Ильи Бирмана?

искаропки есть адаптированный вариант typo, делал, кстати, один из бывших местных

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

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

Кто-кто кого нанял? С этого места подробнее, плиз.

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

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

конкатенация

минус

плнпц

lazyklimm ★★★★★
()

Мн дв мшк тг ж чт крл ТС, КнцПрдлжн.

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

дык ведь принципиальной разницы между переменными и функциями нет

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

20 или сколько там лет назад, когда они начинали.

А у тебя есть машина времени?

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

Нет ничего страшного в ЯП на русском (хотя инглишь удобнее, да). Но вот язык ТОЛЬКО на русском - действительно упорот.

Афтар, пиши локализуемый язык ;)

Сделай ключевые слова какиминибудь такими #4154#, а в проекте подключай файл локализации - что нибудь вроде lang.en с содержимым:

 #4154# = print
#2143# = for
...
Ну или lang.ru и так далее. Ну и первым делом естественно на своем языке напиши редактор для своего языка который будет открывать язык в системной локали или в английской, если системной нет.

К тебе потянуться все любители локализованных ЯП со всего мира. Сразу человек 5 в проект наберешь!

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

Кто-кто кого нанял?

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

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

К тебе потянуться все любители локализованных ЯП со всего мира.

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

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

Ну а на кой он тогда тут пишет?

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

Афтар, гляди, клюичивые слова можно сделать вообще такими #f - for, #F - foreach (ну я для английской локали замены привожу, не уверен что понял твой русский и не знаю как правильно будет длявсех или длвсех) и т.д.

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

Ой, это же нацпол.

Не льсти себе, это обычное 5.2.

(Впрочем, разницы нет, мне сейчас, чую тоже скор порежут за ответ на удалённые.)

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

Нет, брейнфак совершенно не лаконичен. Да слова коротки но он очень многословен - много их надо.

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

прикинь какие тексты бы компактные исходные получались

А с идентификаторами что прикажешь делать? Забабахать мега-словарь? А как же сокращения, так любимые поциентом?

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

не знаю как правильно будет длявсех или длвсех

блянах

anonymous
()

как воспримут это адекватные, неупоротые надёжные профессионалы?

Пошлют. Может даже далеко.

rupert ★★★★★
()

плиз освой пжл вот эту полочку книжек с разными умными мыслями Айверсона(его тьюрингова так и называлась язык как инстремент мЫшленья)

так и последующих участников разработки апл и j

http://code.jsoftware.com/wiki/Books/Beginners

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

А с идентификаторами что прикажешь делать? Забабахать мега-словарь? А как же сокращения, так любимые поциентом?

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

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

Вот это действительно хорошая идея

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

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

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

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

Зачем? APL разве успешен?

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

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

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

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

У тебя негодный синтаксис если это так.

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

сейчас в языке уже зарезервированы все слова

Упоролся наотличненько. Хотя я уже перестал удивляться. Что ни решение, то фееричный пздц. Это особый талант.

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

Зачем?

Действительно, зачем? Ведь ты не умеешь читать.

anonymous
()
Ответ на: комментарий от den73
> tclsh8.5
% set set [set puts [set {} [set {просто какая-нибудь переменная} 5]]]
5
% puts ${set}
5
% puts ${puts}
5
% puts ${}
5
% puts ${просто какая-нибудь переменная}
5
Suntechnic ★★★★★
()
Последнее исправление: Suntechnic (всего исправлений: 1)
Ответ на: комментарий от Suntechnic

Пожалуй, я был неправ и это действительно неочевидно.

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

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

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

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

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

Ну это и есть лисп под веществами.

set set [set puts [set {} [set {просто какая-нибудь переменная} 5]]]
set присваевает переменной значение и возвращает его. По сути здесь в одну строку присваевается значение 5 нескольким переменным с именами set, puts, пустая строка и «просто какая-нибудь переменная», соответственно. В одну строку потому что ленивый я. puts выводит значение переменной в stdout.

И еще нюанс - здесь нет перегрузки.

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

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

В одну строку потому что ленивый я.

Я немного знаю tcl и правил код на нём 3 дня назад.

Но я не знал/забыл, что переменные могут быть одноимённы процедурам. Поэтому я не понял set set, а дальше не читал уже.

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

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

прменя ч;
от
имя_функци ч;
и придётся поменять синтаксис вызова функции на
имя_функци(ч);
Хотя я и не собираюсь пока делать вызов функции без скобок, пример показывает, какого рода проблемы возникают.

Поскольку синтаксис «л2/кодицы» ещё не устоялся, я хочу оставить достаточно свободы для реализации нужного синтаксиса, в т.ч. для пользовательских конструкций, которые аналогичны макросам лиспа. Запрет на перегрузку идентификаторов понятен и привычен всем программистам на обычных языках, а идентификаторы с пробелами из массово применяемых языков есть только в SQL.

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

Кроме того, захочется вызвать этот код из С - тогда наплачешься.

Тем не менее, я рассматриваю такую возможность, но это не вещь первой необходимости и пока предполагается как-то так: чтать_симвл(«произвольное не зарезервированное имя, оформленное по \» правилам строки"). Здесь «чтать_симвл» будет макросом чтения. Если нужен символ, одноимённый ключевому слову, его можно определить в другом пакете.

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

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

Синтаксис есть всегда. Вопрос лишь в том, какую часть работы, связанной с синтаксисом, можно переложить на инфраструктуру языка, а какую придётся писать руками. Например, в лиспе есть поддержка для аргументов-ключей на уровне языка, а в tcl код разбора ключей приходится писать руками. Разница в удобстве написания функций - в пользу лиспа, и она хорошо ощутима.

den73 ★★★★★
() автор топика
6 октября 2016 г.
Ответ на: комментарий от den73

Речь идёт пока только о идентификаторах типа каталог/пакет:имя . Если требовать отделять деление с помощью пробела, то можно сохранить деление значком.

Какое-то странное решение [вводить такое требование]...

В boost (C++) вообще пишут так: dir/file и ничего (и это даже планируют включить в стандарт С++17). Это я к тому, что в разных контекстах символ / может иметь разные значения (как перегрузка оператора / в С++). А в IDE можно его подкрашивать также по-разному [и рисовать `каталог/пакет` вообще одним цветом], чтобы проще было отличить операцию деления от разделителя уровней модулей.

(Ну а ещё можно использовать обратный слэш \ вместо прямого /)

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