Как стать автором
Обновить

Комментарии 525

Язык с какой целью создавался? Хобби и прокачка навыков? Я просто не увидел ни упоминание о назначении языка, ни что вообще на нём можно писать (только консольные приложения под Linux?).
НЛО прилетело и опубликовало эту надпись здесь
Не знаю что там в советсвом мультике, но TempleOS создал очевидно душевнобольшой человек — и она же, в кенечном счёте, его и погубила.

Если человек создаёт себе язык программирования и что-то там ещё «чисто по фану» не ожидая, что этим кто-то будет пользоваться — это нормально, так можно многим вещам научиться…

Но вот это вот:
И вот наконец, я готов представить вашему взору: язык программирования cine, компилятор с таким же именем, сборщик и установщик проектов fei.
Это просто пугает. Кому это нужно, зачем?

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

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

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

Вот чем.
Какие потенциальные области применения.

Мне не извесны такие области, в которых его нельзя было бы применить.
Вам не кажется, что это очень пахнет BolgeOs?

Отсюда и реакция.

А областей, где он не применим — навалом.

Можно ли применить его в игре "Ну погоди"? Там сотня байт ОЗУ и пара килобайт ПЗУ. Влезет?

Можно ли применить ваш язык для запросов к СУБД, то есть вместо SQL?

Можно ли заменить им язык ?

Можно ли им заменить Ladder?

И так далее, и так далее, ниш очень много.
Вам не кажется, что это очень пахнет BolgeOs?

Вообще не уместное сравнение, BolgenOS — Ubuntu с измененными обоями, а Cine написал и придуман с нуля.
Можно ли применить его в игре «Ну погоди»? Там сотня байт ОЗУ и пара килобайт ПЗУ. Влезет?

Это не область, с таким успехом можно написать «А можно ли на Си написать для стакана воды? У него 0 байт ОЗУ.» Область называется — программирование микроконтроллеров и я не вижу препятствий для моего языка в этой области, но разумеется есть минимальные системные требования для контроллеров. Тот же JS тоже используется в этой области, но не на всех контроллерах с ним можно работать.
Можно ли применить ваш язык для запросов к СУБД, то есть вместо SQL?

Можно, если какая либо СУБД введет поддержку Cine в качестве языка запросов.(Спойлер — этого никогда не будет)
Можно ли заменить им язык 1С?

А можно ли в Qt Creator заменить С++ и Qt на Vala и GTK?
Можно ли им заменить Ladder?

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

Мне до этого не была известна эта область.
И так далее, и так далее, ниш очень много.

Если рассуждать как вы, то ни один язык не может занять даже 1/1000000 ниш.

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

Если рассуждать как вы, то ни один язык не может занять даже 1/1000000 ниш
Конечно. Или язык общего назначения и гигантская конкуренция с С++ и т.д. Или — нишевой язык с возможностью занять свою нишу.

Ну и чем лучше вы понимаете конкурентов своего языка и его плюсы по сравнению с конкурентами — тем больше у языка шансов. Например, язык Котлин взлетел потому, что его создатели хорошо понимали нишу — такой же, как Ява, но некоторые вещи писать удобней.

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

Как пример описания
Нам нужен был калькулятор, выражения для которого могли бы выполнять как в контроллерах под MS-DOS (16 бит), так и в нашей среде разработки на персоналке. Подумали, что можно встроить — не устроило по размеру ОЗУ и ПЗУ на контроллере. Написал свой калькулятор. Потому туда приделал условные операторы и циклы. Получился язык, у которого два достоинства: тесная связь с нашей SCADA (нативно обращаемся к поля ФБ) и возможность откомпилить куда хочется, ибо код компилятора собственный и понятный.
В малых микроконтроллерах нужно статическое распределение памяти, чтобы избежать фрагментации кучи. Ваш язык может не использовать кучу?

но разумеется есть минимальные системные требования для контроллеров

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

Цитаты из статьи.
вместо begin end используются фигурные скобки. Но не нужно думать, что Pascal был для меня идеальным языком, со временем многие вещи в языке стали меня раздражать(помимо begin end). Например мне хотелось, чтобы строки и массивы были структурами со следующими полями: указатель на область памяти с данными, количество элементов, максимальное количество элементов которое может вместить область памяти на которую указывает указатель, чтобы несколько массивов или строк могли указывать на одну и туже область памяти и можно было создавать массив из куска другого массива не копируя элементы. Как позже выяснилось, такие массивы как я хотел, называются слайсами. Мне тогда захотелось написать транслятор который переводит из такого изменённого паскаля в обычный, но я отказался от этой идеи.

Со временем я понял, что самые мои частые ошибки связаны с ссылками и указателями. И я от них избавился, сохранив все мне необходимые функции.
Например мне хотелось, чтобы строки и массивы были структурами со следующими полями:

На C++ Builder посмотрите. Это С++ со строками из Delphi. То, что вы хотите — там есть.

Со временем я понял, что самые мои частые ошибки связаны с ссылками и указателями. И я от них избавился, сохранив все мне необходимые функции.
А вот это хотелось бы подробнее.
На C++ Builder посмотрите. Это С++ со строками из Delphi. То, что вы хотите — там есть.

Во первых я не люблю C++, а во вторых точно такие строки и массивы как я хотел есть в go, но когда я начинал, go не было.
В третьих мне мой итоговый язык очень понравился, и я в ближайшее время не собираюсь его ни на что менять.
А вот это хотелось бы подробнее.

Подробнее в этом комментарии.
Вам не кажется, что это очень пахнет BolgeOs?

Оскорбили на пустом месте.

В ситуации с BolgenOS тот чел взял полностью готовые проекты. Рабочие совершенно.
И перебил в тех готовых проектах копирайты на свои — всего лишь вся его работа.

Здесь же человек что-то делает. Сам делает.
Компилятор сам, а язык? Паскаль с фигурными скобочками — это сам? Я в школе тоже операционку писал. И инкрементальный компилятор. :-)) На Минск-22. Недописал, разумеется. Дальше пары процедур не ушло.

P.S. Но свой BolgeOs у меня был. Планов громадье, реализован пшик.
Компилятор сам, а язык? Паскаль с фигурными скобочками — это сам?


Тут же главное, что логику работы с переменными у языка меняет. В этом и есть суть.
А синтаксис — зачем менять, если он устраивает.

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

P.S.:
Впрочем:
Кроме begin/end -> на {} он еще строки и массивы меняет на слайсы.

Мне кажется, вы додумываете за автора.

«Логику работы с переменными» меняет Котлин. Но в Котлине понятно, что хотели сделать (Яву с меньшими ошибками) и на основе какого опыта.

Синтаксис Паскаля вполне отражает его семантику. Будет иная семантика — нужен несколько иной синтаксис.

В любом случае — нужно описание от автора. Пока что мне это RATFOR напоминает. И (если вы правы) компилировать его лучше, как ратфор — препроцессором в паскаль.
Синтаксис Паскаля вполне отражает его семантику. Будет иная семантика — нужен несколько иной синтаксис.


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

Есть такой вполне существующий язык Go, где синтаксис прячет от вас — используете вы обращение по ссылке или нет.

type Object struct {
   Field int
}

var a Object
var b *Object
b = new(Object)


Оба варианта будут работать без вопросов:


a.Field = 2
b.Field = 3

Вторая строка это — неявное:
*b.Field = 3

Так это в Object Pascal (ака Deplhi) есть. Но очень ограничено — для наследников TObject. И не ограниченно — для передачи параметров по ссылке (const и var).

Но если человек отказывает от ссылок — я это понимаю как передачу RW-параметров копированием на входе и выходе. Тогда намного понятней не const/var, а in/out/inout

Короче, пусть автор сам напишет.
копированием на входе и выходе

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

Можно. Переменные хранятся на стэке для них счётчик не нужен.
Вот у меня массив из тысячи целых. Это тысяча объектов с тысячей счетчиков?
Счётчик есть только у массива.
Паскаль с фигурными скобочками — это сам?

Может в начале статью стоит почитать? Это первый дизайн языка был похож на Паскаль, окончательный не похож ни на один язык. Посмотрите исходники.
Зачем? Я подожду, если язык хорош — то будет к нему описание. А если плох — так и вообще незачем в сорцы лезть.

Невнимательно читали статью, в ней есть ответы на все ваши вопросы. Создал потому, что меня не до конца устраивали те языки которые я видел, а также я не видел решения проблемы с sse2(что за проблема, тоже написано в статье). Название так же указано — cine.

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


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

Дело не в том, что есть -msse2. Объясню на современном примере, поскольку sse2 сейчас активно используется. У меня зарплата 200$ / месяц и даже с такой зарплатой я смог позволить себе компьютер с процессором Ryzen 2200G. У этого процессора есть поддержка инструкций AVX2, а теперь вопрос: «В каком количестве программ, распространяемых автором через бинарники, есть поддержка AVX2?». Недавно была новость о том, что какой-то человек предложил в Fedora компилировать программы в репозитории с поддержкой AVX2, ему быстро объяснили что к чему. Я хотел создать язык, котрой похож на паскаль, но у которого слайсы вместо массивов и строк, кавычки вместо begin end и который компилируется в какое-то промежуточное представление, которое на машине конечного пользователя скомпилируется до конца с учетом того, есть ли у него поддержка тех или иных технологий. И вы меня не огорчите, потому такой подход всё ещё актуален(хотя и не так сильно как в те времена), а так же потому, что за 12 лет язык оброс такими фишками, сочетания которых я не вижу не в одном языке до сих пор. Самые основные я перечислил в этом комментарии.
Я хотел создать язык, котрой похож на паскаль, но у которого слайсы вместо массивов и строк, кавычки вместо begin end и который компилируется в какое-то промежуточное представление, которое на машине конечного пользователя скомпилируется до конца с учетом того, есть ли у него поддержка тех или иных технологий.
Вот только проблема в том, что не факт, что сможете даже используя всё это обогнать какой-нибудь банальный ICC.

Если вы всё это делаете «для души»… ну ради бога: всё лучше, чем водку бухать.

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

Хотя сам он её считает, разумеется, «гениальной» и «идеальной»…
Но если вы хотите это «продать»…

Я не пытаюсь никому ничего продать, я даю людям выбор, которого у меня не было.
ну был у меня один знакомый, который носился с идеей «идеальной клавиатуры». У меня даже где-то его драйвер и наклейки на клавиши есть… разумеется удалось его убедить в том, чтобы эту его клавиатуру использовать новно нуль человек за 20 лет.

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

Если бы не такие люди, которые придумывают и воплощают идеи, то мы бы до сих пор в лесу с копьями на лосей охотились.
Люди, которые «воплощают идеи» сильно отличаются от людей, которые могут в одиночку автомобиль создать…

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

Если вы судите людей, по тому, заметили ли они кавычки будучи уставшим после работы, то это крайне печально. Надеюсь жизнь вас научит, что это не тот критерий по которому надо людей судить.
Люди, которые «воплощают идеи» сильно отличаются от людей, которые могут в одиночку автомобиль создать…

А разве нельзя в одиночку создать автомобиль, в котором будут воплощены новые идеи?
А разве нельзя в одиночку создать автомобиль, в котором будут воплощены новые идеи?
Можно. И это даже делалось. Aurora, к примеру.

Проблема в том, что на развитие автоиндустрии ваш автомобиль повлияет ровно… никак.

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

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

Огромное количество изобреталей (самых разных) этого не понимают… что несколько странно: они же вроде неглупые люди — иначе не смогли бы ничего изобрести…
Можно на клавиатуру глянуть?

переизобретатель русской раскладки
переизобретатель русской раскладки

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


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

dz60 гуглите, пробел должен быть разделен на две или три части

а самое страшное в русской раскладке — так это как враги из IBM после захвата Союза поместили запятую в верхний регистр — ну бред же

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

А что до раскладки, их множество на klava.org/delta/#rus_basic

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

поэтому я и сделал идеальную раскладку, жду пока детали придут для кастомной механики, там уже с прошивкой на сях можно будет эксперементировать с раскладками на полную
Боюсь, что идеальной раскладки не существует.
Что хорошо для набора текста — плохо для написания кода.
Кстати да, совершенно верно, даже более того — лейаут под питон и жс будет так же разным — решение — подгружаемые/подключаемые профили/слои

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

вот ключевые моменты:
  • запятая на месте твердого знака (дико удобно, привыкаешь за полчаса и потом половину недели отвыкаешь на работе)
  • твердый знак в верхнем регистре мягкого
  • в английской же все открытые скобочки доступны в нижнем регистре
  • закрытие же происходит в верхнем
Я примерно знаю всех переизобретателей клавиатур, и очень интересно было бы узнать, про кого именно идет речь. Причудливые клавиатуры сейчас на взлете, и для них есть рынок — своеобразный, но еще не сильно перегретый. Первые 50 сетов Corne продались за полчаса fstn.hateblo.jp

Upd: если только это не thornik.livejournal.com/472554.html
ортолинейная клава — мусор, имхо

тов. Кхим имел в виду mi.anihost.ru/fonisoft.htm

есть тред на реддите с гораздо более ясным ангельским ;)
www.reddit.com/r/MechanicalKeyboards

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

типа ergodox'a с отрицательным углом наклона

Ирония в том, что вы ссылаетесь "на возможно быстрый" ICC, который намеренно исполняет медленный код на процессорах отличных от Intel, хотя автор как раз в том комментарии написал, что накопил на AMD Ryzen 2200G.

Есть такое дело. Но фишка в том, что, во-первых, эту проверку можно убрать, а во-вторых даже с ней многие вещи на AMD Ryzen работают быстрее, чем с clang'ом (хотя и медленнее, чем на Intel).
ну был у меня один знакомый, который носился с идеей «идеальной клавиатуры».

Присоединяюсь к вопросу про клавиатуру!

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


Вы не правы. Бывает, что и получается.

Возьмем очень специфическую клавиатуру, которую создали подобные вашему знакомому желающие создать «идеальную клавиатуру».
ergodox-ez.com
Получилось крайне необычно, явно это нишевый продукт. Думаете, только через 20 лет будут использовать?

Отнюдь.
Ребята, используя краудфаундинг, собрали достаточно денег от желающих столь необычную клавиатуру приобрести. И основали настоящее произодство.

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

И 20 лет не понадобилось.

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

Те же кто не сумели раздобыть бабло на произодство (или им это не интересно) — публикуют документацию. По которой кто-то делает для себя. А особо понравившиеся модели — и в произодство запускают.

Кто-то — налаживает производство компонентов необычных клавиатур, для самостоятельной сборки предназначенных.
keeb.io/products/iris-keyboard-split-ergonomic-keyboard?variant=29480467267678
Это значительно проще и по силам одиночке. И таких комплектов для самостоятельной сборки довольно много продается очень не похожих друг на друга вариантов.

Это нынче вполне себе хобби, способное воплотиться в реальность.

Сдается, что вы зря отговорили человека.

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

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

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

Ни экспериментов, ни тестов, ничего.

Чуть ранее тот же Мальтрон или Кинесис и обычными инвестициями, на свой страх и риск, запустили производство тоже необычных (и довольно дорогих) моделей. Клавиатуры крайне необычные — но спрос есть.
И какая из этих клавиатур была создана «сумрачным гением» с подходом «если я не вижу зачем это мне — значит оно не нужно и никому»?

Сдается, что вы зря отговорили человека.
Кто сказал, что я отговорил? Насколько я знаю он всё ещё носится с идеями свою «гениально идеальную клавиатуру», «результат 12 лет разработки» куда-то внедрить.
Возьмем очень специфическую клавиатуру, которую создали подобные вашему знакомому желающие создать «идеальную клавиатуру».


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


Один — Dominic Beauchamp.

Насчет исследований — вы не в курсе их отсутствия:
Есть куча жалоб на блок для больших пальцев. Явно автор имел длинные большие пальцы, а статистическими исследованиями не закомочился. Эту проблему решают уже другие проекты Redox, например. Или Dactyl Manuform. Там специально переработана идея блока под большие пальцы.

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

У них другой подход — «я набираю вслепую десятью пальцами и сделаю идеальную клавиатуру для этого». Упомянутый Ergodox именно под это и заточен.

Что, как вам известно наверняка, даже в среде ИТ-шников не самый распространенный навык.

Набирать зрячим методом (вертеть головой то влево то вправо) или набирать двумя пальцами (получается, что напрасно ужали клавиатуру специально под десятипальцевый набор, в частности это привело к нестандартному расположению []'~, сиречь Х, Ъ, Э, Ё).

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


Вполне себе здравая идея, реализованная в других языках (или в определенных способах программирования). Скажем, в функциональных во главе угла.
Скажем, в функциональных во главе угла.
Не знаю что там у кого «во главе угла» но во всех популярных — ссылки есть (даже если они ссылками и не называются).
Не знаю что там у кого «во главе угла» но во всех популярных — ссылки есть (даже если они ссылками и не называются).

Не мутабельность.
Когда она есть — дело десятое есть ссылки или нет.
Ну а при эмуляции функциональщины на мейнстримовых языках — делается через копирование переменных.
Не мутабельность.
Мутабельность обычно тоже есть. Да, как в Rust с его unsafe-блоками: с пометками и прочим — но есть. Ибо теория — это хорошо, а программы-то как-то писать надо.
НЛО прилетело и опубликовало эту надпись здесь
И какая из этих клавиатур была создана «сумрачным гением» с подходом «если я не вижу зачем это мне — значит оно не нужно и никому»?


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

и попытайтесь нажать что то типа Alt+F1 хотя бы (не говоря уже про Ctrl+Shift+F6).
Кто сказал, что я отговорил? Насколько я знаю он всё ещё носится с идеями свою «гениально идеальную клавиатуру», «результат 12 лет разработки» куда-то внедрить.


В настоящее время расцветает самодеятельное клавиатуростроение.
Компоненты доступны.
Платы можно заказать индивидуально.
Корпуса сделать на 3D принтере.
И даже наладить массовое производство можно, не выезжая из дома. Небольшими партиями это вполне доступно обычному человеку, без инвестиций.
Разумеется, если его идея настолько интересна, что он найдет покупателей на свою клавиатуру за 15-40 тыс. рублей — а именно столько выходит стоимость кастомной клавиатуры.
Судя по тому, как цветет и пахнет нынче этот рынок, какое большое число разнообразных наборов для самостоятельной сборки и готовых необычных клавиатур можно купить — число покупаетлей интересующихся подобными вещами достаточно велико.
Небольшими партиями это вполне доступно обычному человеку, без инвестиций.
Не путайте «сумрачного гения» с доходом в 100 долларов в месяц, потому что он занят своими «гениальными идеями» и озабачивается тем, чтобы хоть что-то заработать когда становится нечего жрать и «обычного человека», для которого это хобби.
Небольшими партиями это вполне доступно обычному человеку, без инвестиций.


хоть что-то заработать когда становится нечего жрать и «обычного человека», для которого это хобби.


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

байт-код и jit, чтоли?

Байт-код — да, jit — нет. Ближе всего AOT, но компиляция производится перед установкой программы. При установке у пользователя также спрашиваются вопросы, ответы на которые влияют на то, в какой бинарник собирётся программа. Подробнее вот здесь.
Ближе всего AOT, но компиляция производится перед установкой программы.
Это то, что делает ART на миллиардах телефонов.

И главное заключается не в том, что Google смогл это сделать — а в том, что они смогли сделать платформу, куда это можно было бы внедрить…
Ближе всего AOT, но компиляция производится перед установкой программы

Вы сейчас придумали ngen, который существует с 2001-го года.

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

А если вопрос поставить так: в каком количестве программ теоретический выигрыш от использования SIMD выше 5%? Если брать всякие видеокодеки, криптографию и прочие числодробилки, то SIMD там давно есть, а вот в условной 1C вряд ли найдётся применение векторным инструкциям.

А если вопрос поставить так: в каком количестве программ теоретический выигрыш от использования SIMD выше 5%?

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

Банальный поиск символа в строке, можно ускорить с помощью SIMD, а также некоторые алгоритмы сортировки, поиск элемента в массиве(в некоторых случаях), а выше перечисленные действия, встречаются часто. И вот в этих случаях — SIMD используется редко.
а вот в условной 1C вряд ли найдётся применение векторным инструкциям.
Боюсь мы этого никогда не узнаем.
НЛО прилетело и опубликовало эту надпись здесь
Плюсую… человек абсолютно точно болен, это раз. У человека не настолько высокая квалификация как он думает. Отсюда и на работу не берут нормальную. Нет, я не говорю что он дурак. Напротив. Но его компилятор его же и губит. А ему тут подливают еще, про Илона Маска… Срочно, срочно к психиатру.
У человека не настолько высокая квалификация как он думает.
А как я думаю? Я не упомянул в статье о том, что я думаю на счёт своей квалификации. Не надо придумывать и гадать.
Отсюда и на работу не берут нормальную.
Одного работодателя не устроило то, что нет высшего образования, другой работодатель даже не стал проверять мою квалификацию. Повторюсь, не надо придумывать и гадать.

За 12 лет уж можно было вышку заочно получить.

Искренне не понимаю этой погони за ачивкой в виде диплома. Никто в него даже не заглядывает, да и что там можно увидеть. Вот на тестовом задании что-то можно увидеть, а в дипломе… Ну разве что «осилил досидеть 5 лет». У меня есть ВО, но если бы его сейчас не было, не потратил бы ни минуты на его получение.

Тут вопрос в том, что первоначальный отсев ведут совсем не IT-специалисты. И отсутствие диплома существенно снижает шансы кандидата.


Да и "осилил досидеть 5 лет" тоже о чём-то говорит. Наличие ВО хотя бы гарантирует минимальную обучаемость и способность достигать цели. И профильное образование — не совсем ерунда, оно даёт системность в изучении хотя бы базовых вещей. Сколько раз встречал людей, строящих, как говорится, здание на песке (например, сетевой администратор, не понимающий что означают цифры в маске сети).

Отсутвие высшего образования сильно ограничивает выбор работы и страны.
Например, ОЧЕНЬ трудно получить ПМЖ в США, Канаде, Германии.

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

Ну вот лично я когда в Питер переехал, на заочке ещё учился. Так вот пока я диплом не получил, программистом устроиться не мог. А с дипломом сразу взяли.

В 90% случаях универ даёт нетворкинг достаточный для успешного поиска первой работы. Точнее работа сама находит студента. (Работал с 3го курса)

Это не было моей первой работой, у меня на момент переезда было около 10 лет стажа (по разным специальностям). Ну и для поиска первой работы в другом городе универ мне ничего не дал =)

Общался с HR на тему наличия диплома у кандидата.


Их позиция: "Вышку сейчас может получить кто угодно при минимальных усилиях. Если нету — значит и этих минимальных усилий приложить человек не смог, зачем нам тогда такой лентяй и раздолбай?".

Их позиция: «Вышку сейчас может получить кто угодно при минимальных усилиях

Кстати, позиция имеющая довольно-таки здравый смысл.

Если у человека нет никакого образования, то вариантов два — либо с вероятностью 2% он гений, который и так знал больше программы, либо с вероятностью 98% он раздолбай, которому не хватило усидчивости даже предметы по своей специальности прослушать. К сожалению, вероятность второго выше первого.

Отсутствие вышки безусловно, можно компенсировать законченными проектами, сертификатами и прочим, но в любом случае человеку придется сложнее по сравнению с другими соискателями при прочих равных условиях.
Для этого нужны деньги и время, ни того ни другого не было.
Мне в чем-то близка ваша история. Тоже кодил для души, запоздалое знакомство со спекки, колледж. Но меня спасло то, что я таки пошел в универ, на заочку. До этого чуть не погряз в написании планировщика для pic18 на ассемблере, ибо «нафиг эти ваши си — тут ассемблер простой, а макросы рулят». Работал в инструментальном цехе, во время сессий — подрабатывал тем, что делал лабы и курсачи на заказ, в т.ч. старшим курсам. И знаете, мое мнение: вышка дает гораздо больше денег и времени, после окончания, а отбирает значительно меньше того и другого, чем кажется заранее. Единственное, о чем жалею — поздно спохватился.

Вопрос приоритетов

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

Откуда такая разница?

P.S. Я не считаю что автор — псих. Но что ему явно не хватает общения как с людьми, так и со специалистами — факт.
Почему-то я на сто процентов уверен, что нет


Это Ваше личное мнение, спорить не намерен.

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


Эм… я сказал что он больной. А конкретный диагноз ессно поставит врач. Но до него еще дойти надо, к чему и призываю.

Нет идеального языка программирования как неидеальны люди создавшие его. Если все это запил один, то тем более и он будет неидеальным. Хорошее начало карьеры в жизни а потом в грузчики???? Но преданность своей идее конечно восхищает.
Уважаю таких принципиальных людей. Не нужно слушать что говорят люди, они все время будут пытаться вас остановить, будут говорить что это никому не нужно или что вот проще же сделать вот так. Я сам постоянно с таким сталкиваюсь, да что говорить стоит посмотреть на Илона Маска или других великих людей, которых в процессе постоянно пытались остановить так или иначе. Но кто не останавливается тот добивается успеха. Желаю вам успеха, искренне и поддерживаю начинание.
Но кто не останавливается тот добивается успеха.

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

Починил.
Некоторые из тех, кто остановились — не добились бы успеха даже если бы продолжали.

Еще дополнил.

Спасибо за поддержку.

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

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

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

Я рад за вас(без иронии), но у меня нет ни времени, ни денег. Да и смысла я уже особого не вижу, это статья не биография и 99% процентов важных событий в жизни не упомянута. За все время у меня было где-то 13 мест работы, 10 из них есть в трудовой. Примерно на 9 из 13 работ, когда я увольнялся, меня работодатели очень просили остаться и предлагали увеличение зп(я хороший работник, не пью не курю и очень ответственный), но я всё время уходил, поскольку ненавидел то, чем занимался, а смена работы на некоторое время заглушала ненависть. Из-за такого количества записей в трудовой, когда я устраиваюсь на работу, на меня смотрят как на прокажённого, сомневаюсь, что меня уже высшее образование поможет.
Здесь неплохо преподают, в качестве курсовой, насколько помню, была возможность написать свой транслятор на продажу в начале 90-х. Образование, вроде бы, бесплатное. Проблема только поступить. Ну и время — обучение только очное. Раньше 6 лет учиться нужно было. Наверно, без теории трудно создать что-то полезное сейчас чтобы заинтересовать потенциальных пользователей. Вроде бы должны быть госпрограммы для поддержки студентов из бывшего СССР, тем более Беларуси.
это статья не биография и 99% процентов важных событий в жизни не упомянута.

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


я хороший работник, не пью не курю и очень ответственный

Алкоголь и курение слабо влияют на работника, если занимается он этим не на работе, ну и умеренно.

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

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

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

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

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

Вас тут сравнивают с Маском… ну так рекомендую вспомнить, что Tesla Roadter делался почти целиком Lotus Group. А потом уже, со временем, Tesla стала самостоятельным производителем.

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

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

Будете ли вы дорабатывать свой «автомобиль» или нет — дело ваше (многие энтузиасты-самодельщики годами дорабатывают свои изделия — и вполне счастливы).

Но если хотите найти работу — вам нужно, условно, стать слесарем. И как «самодельщик» может искренне считать что «Toyota, по сравнению с моим пепелацем, дерьмо»… при этом искренне… но зарабатывать на жизнь он будет дорабатывая и/или ремонтируя вот это вот «дерьмо»… в программировании — всё точно так же.
Будете ли вы дорабатывать свой «автомобиль» или нет

Одназначно буду! Я не вижу хороших альтернатив моему языку(разве что Haskell + декларативное программирование, но такой код очень тяжело скомпилировать в эффективную программу, для этого надо в ghc влить больше денег, чем за всё время в JavaScript влили).
С другой стороны — вероятность того, что вы сможете на этом самодельном автомобиле или даже вашем языке заработать — равна нулю.

Я не пытаюсь на нем заработать, всё бесплатно и по лицензии gpl3 (стандартный модуль MIT).
Но если хотите найти работу — вам нужно, условно, стать слесарем. И как «самодельщик» может искренне считать что «Toyota, по сравнению с моим пепелацем, дерьмо»… при этом искренне… но зарабатывать на жизнь он будет дорабатывая и/или ремонтируя вот это вот «дерьмо»… в программировании — всё точно так же.
Я это понимал и когда создавал язык, я мог легко выучить мэйнстримовые технологии и найти работу, но на это нужно много времени, а я хотел закончить язык, а профиль на гитхаб с компилятором был бы большим плюсом в резюме. Я не плохо знаю go(и в том числе писал на нём многопоточное приложение), возможно выучу SQL и попробую поискать работу.
Я не вижу хороших альтернатив моему языку(разве что Haskell + декларативное программирование, но такой код очень тяжело скомпилировать в эффективную программу, для этого надо в ghc влить больше денег, чем за всё время в JavaScript влили).
Вы это проверяли? Сравнивали хоть с какими-нибудь вещами на Benchmarks Game?

Главное: сранивали ли вы сложность использования вот всего того, что вы наделали с тем, сколько усилий потребуется кому-то, чтобы какой-нибудь условный «плагин для Photoshop» написать на вашем языке с банальным предоставлений нескольких сборок для разных процессоров?

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

Я не плохо знаю go(и в том числе писал на нём многопоточное приложение), возможно выучу SQL и попробую поискать работу.
Проще для начала по-фрилансить… но вы, похоже, реально верите в то, что ваш компилятор хотя бы одного человека в отделе HR сможет заинтересовать…
Извините, но я вас разочарую: профиль на гитхаб кого-либо волнует только если у человека в резюме нет опыта работы по профилю.

Серьёзно?
А как же все эти рассказы от HRов, про необходимость пет проэкта на гитхаб и т.д. и т.п.?
Мне кажется, вы, в запале полемики, слегка увлеклись.
У меня, скажем, профилем на гитхабе почти все HRы интересовались, когда я работу решил поближе к дому найти, а вот про «О большое» не разу не спросили.

А здесь как обычно, рассказы — они всегда рассказы. Чтоб найти работу — надо убедить работодателя, что ты умеешь ее делать. Некоторым для этого достаточно показать резюме, кому-то — поговорить про О-большое. А к некоторым заходишь на гитхаб (потому что ни резюме, ни О не впечатляют, но мало ли) — и видишь, что несчастный репозиторий был создан именно потому, что "эйчары говорят". Да, а некоторые работодатели не знают, что именно им нужно, к тем особый подход.
Вы действительно думаете, что ваш личный опыт можно обобщать? У меня вот, никто не интересовался профилем на гитхабе, потому что его нет :)

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

Проверял. Вот как я хочу писать алгоритм быстрой сортировки массива в котором все значения уникальны:
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
    let smallerSorted = quicksort [a | a <- xs, a <= x]
        biggerSorted = quicksort [a | a <- xs, a > x]
    in  smallerSorted ++ [x] ++ biggerSorted

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

Каких сборок? Вы ничего не поняли вот комментарий в котором я все подробно расписываю.
НЛО прилетело и опубликовало эту надпись здесь
А вы это к чему?

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

тогда надо попробовать.
НЛО прилетело и опубликовало эту надпись здесь
А вот тут вы не совсем правы. Личный опыт это несколько опровергает.
Интересно каким образом? Вы не умеете в «O большое»? Или у вас нет опыта работы?

Да, конечно, если у вас всё это есть и, в дополнение к этому, ещё и всякие штуки на GitHub — это круто.

А вот если есть только GitHub… ну вот не видел я таких случаев. Как бы… да нет — совсем не видел.
НЛО прилетело и опубликовало эту надпись здесь
Его отрицание — «гитхаб может волновать, даже если опыт работы есть», а не «если гитхаб есть, то опыт работы не волнует» или что-то такое.
Ok, уели. Если формально подходить, то да — GitHub иногда может помочь. Но если бы 12 лет были потрачены на получение «вышки» и опыта работы — пользы, в смысле приёма на работу, было бы больше.
И даже самый блестящий профиль — не поставит вас в списке выше человека, который «умеет в O большое» и 10 лет опыта работы.

По себе не судите обо всех. Да и что сложного в "О большое"? Это простое понятие. И как проверить 10 лет опыта работы? А прокаченный гитхаб по крайней мере говорит о том, что человек много трудился над определенными проектами.

Да и что сложного в «О большое»? Это простое понятие.
В том-то и дело, что это простое понятие — потому если человек им не владет, значит рассматривать что у него там на GitHub — не нужно. Он неуправляем и, соответственно, будет делать то, что захочет, а не то, что нужно.

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

А прокаченный гитхаб по крайней мере говорит о том, что человек много трудился над определенными проектами.
А зачем это работодателю? Ему ж нужно, чтобы принятый на работу человек решал данные ему задачи, а не те, которые ему нравятся. Как там у Джоела (он, по-моему все банальности в IT описал… но они не стали бы банальностями, если были бы неправдой): знать свое дело и уметь его делать.

Вот «O большое» (и отчасти GitHub профиль) — это о первой части «знать своё дело». А вот «уметь делать дело» — это как раз «10 лет работы». И тут GitHub как бы меньше котируется, а такой как у автора — как бы и отрицательных очков не дал.
Лет 15 назад я переписывался в фидо с парнем, написавшем kiev compiler. В конце концом. помню. его взяли на работу в некую очень крутую контору. Но там была, так сказать, java на стероидах, а не никому неизвестный язык :)
Проще для начала по-фрилансить…
спорное утверждение, лучше отправить эту статью знакомым из ИТ — думаю что автор с лёгкостью освоит какой-нибудь мейнстримовый стек.
Я не плохо знаю go(и в том числе писал на нём многопоточное приложение), возможно выучу SQL и попробую поискать работу.

Проще для начала по-фрилансить…

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


Как сказал один мастер:

Ironically I think TypeScript has helped me more with avoiding classes than using them. Vue 3 is a 100% TS codebase with 0 usage of classes.


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

Очень интересная статья.
Так же в библиотеке лицея был учебник по программированию на языке C.

Однако хорошая книга, как для уровня лицея. Многие ведь даже в универе учат Паскаль или Бейсик, а не C/C++.

Покупать эти деньги в Беларуси было особо затруднительно, так как в автоматическом обменники приходилось платить в семь раз дороже(если память не изменяет)

Итого — автор тратил $7 для того, чтобы получить $2?

В лицее тоже был только паскаль, а книгу купил один из учеников, который отучившись, подарил её библиотеке лицея.
Да, я тратил 7$, чтобы получить 2$, но эти 2$ я мог превратить в 4$, а 4$ в 8$ и так далее.

У нас тоже в лицее были Pascal и Delphi, после него — чуток html.
По поводу «получить $8 и более» — понял идею.
Блохи прекрасно травятся дихлофосом, в особо запущенных случаях можно съехать на период газовой атаки и последующего проветривания.

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

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

Пассаж про блохи недалеко ушёл от перечисленного вами

Я смотрю БАЙТ в Беларуси много людей подтолкнул к программированию. Начало моей истории очень похоже)
Байт выпускался на заводе в Бресте, поэтому в Беларуси он и получил широкое распространение(у меня у нескольких соседей и у лучшего друга, то же был Байт) и если не ошибаюсь, эта книга по программированию была в комплекте.
Автор, я конечно все понимаю, замечания по грамматике в личку, но читаю
Я перестал обманывать мошенников и получал доход, только от работы. Отработав год, решил поискать, что нибудь по лучше. У меня была на руках не плохая сумма денег

и волосы встают дыбом. Вы же про свое детище рассказываете, свою биографию пишете — как вы придумали ЯП, прописали грамматику, если грамматика и пунктуация в русском у вас на уровне 2 класса?

И не надо про то, что родной белорусский — я тоже белорус, русский для нас родной №1 как по повсеместному использованию, так и по часам в школе.

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

НЛО прилетело и опубликовало эту надпись здесь
Вы — молодец! Побольше бы таких беларусов! Но, увы, таких очень и очень мало. Был очень краткий момент в новой истории, когда белорусский начал возрождаться и стал популярен в школах и даже в некоторых вузах. Возможно, Ваше становление пришлось именно на этот момент. Ни до, ни после никаких серьезных усилий по продвижению белорусского языка не предпринималось.

Пока дочитал до середины. До блох. Таких пятничных историй тут ещё не было...

Статья на самом деля о том, как создавался язык и какие события в моей жизни на это повлияли.
Что-то не смог понять в чём киллер фича, читаю растбук, там более чем наглядно описаны киллер фичи rust'а. Языков много придумано, и всегда автор хотел что-то улучшить, но обычно в среднем получалось как у всех, соответстно есть ли смысл в них?
Такие языки как хаскел и раст заметно отличаются и их смысл понятен, более того, практически все новоделы остаются игрушками, у раста хотя бы есть весьма крупный проект на котором это всё обкатывается.
Каждый уважающий себя студент программистского факультета пробовал писать свой язык, или улучшать существующий. Проблема автора в том, что он завис на этом уровне. И у него не было подготовки по теории языков, поэтому он много раз переписывал свой проект.

А вообще я так и не решил, это рассказ о своей жизни программиста-самоучки из провинции без специального образования, или такой тонкий пятничный троллинг?
Если бы он пошел в БГУИР, то свой компилятор и язык ему предстояло бы написать на 4ом курсе. При этом он бы получил знания по Lex & Yacc — это бы заняло меньше 12 лет точно.
При этом он бы получил знания по Lex & Yacc — это бы заняло меньше 12 лет точно.

Самая сложная часть компилятора — это превращение структур, полученных в результате парсинга, в код на: asm, llvm ir, c. Lex & Yacc не особо мне бы в этом помогли. А парсинг и структурирование исходных кодов я сделал за неделю, как говорится «без пап, мам, лексов и яков».
это рассказ о своей жизни программиста-самоучки из провинции без специального образования, или такой тонкий пятничный троллинг?

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

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


Но на мой взгляд, если ваша основная проблема была отсутствие векторных расширений в коде программ на том же Delphi, то сейчас там во встроенный ассемблер вроде добавили нужные команды. И люди уже их используют с огромной пользой для сообщества: https://github.com/pleriche/FastMM4/pull/38
А быстрые строки с копированием при изменении в Delphi были изначально.

Киллер-фичи языка и компилятора:
1 — Программы компилируются в код на Си, но код на Си компилируется на компьютере конечного пользователя с флагом '--march=native', который позволяет задействовать в программе инструкции процессора, которые не были бы задействованы при распространении обычного бинарника.
2 — При установке программ, конечному пользователю будут заданы вопросы. Во что скомпилируется код на Си, зависит от ответа на вопросы. Например: у пользователя можно спросить, что задействовать, opencl или cuda? И если пользователь выберет например opencl, то с большой вероятностью в бинарнике даже упоминания о cuda не будет.
3 — поскольку язык изначально заточен под создание производительных приложений, а так же учитывая два выше приведенных пункта, программы на cine(если в него вложить столько сил, сколько вложенно в раст) могут оказаться самыми производительными, среди других программ написанных в той же манере, но на других языках.
4 — Язык чертовски прост(даже проще go).
5 — В языке нет ссылок и множества проблем, которые из-за них возникают.
6 — На уровне языка(но не программ) незвозможно изменяя один объект, изменить другой объект. А у меня это самая частая ошибка.

1-2. При чём тут язык? Перекомпиляция под платформу это не про язык, а про дистрибутивы и всё такое, у конечного пользователя и компилятора-то может не был, ничего у него не скомпилируется.
3. Это как понимаю пока теория, а раст уже есть
4. Это может быть киллер фичей, ниша для этого есть, но из этой статьи этого не понять, вот надо сравнить его с го в гошной нише (конкурентность)
5. Ссылок или указателей?
6. Не очень понял, в расте вот только одна мутабельная ссылка на одни данные, тоже ничего сломать нельзя.
При чём тут язык? Перекомпиляция под платформу это не про язык, а про дистрибутивы и всё такое

Вот цитата из моего комментария:
Киллер-фичи языка и компилятора:

Здесь связка язык + компилятор.
Перекомпиляция под платформу это не про язык, а про дистрибутивы и всё такое, у конечного пользователя и компилятора-то может не был, ничего у него не скомпилируется.

Вы наверное не поняли суть, идея в том, что язык компилируется в промежуточной байт код (для этого в начале я использовал FASM, затем LLVM IR, затем Си), а затем этот байт код компилируется в исполняемый файл, но перед компиляцией пользователю задаются вопросы и в зависимости от ответов, будет генерировать разный код. И такой подход, это дефолтный способ распространения программ на cine, т.е. фактически этот промежуточный байт код с вопросами и должен распространятся. Если вы правильно поняли, то почему при установке приложений на rust(я такие использую), они меня не спрашивают, что использовать: alsa или pulseaudio?, X Org или Wayland?, а тупо устанавливаются бинарником(ELF)? Я понимаю, что это можно сделать с помощью создания настроек, но в cine эти настройки можно указывать при установке и в бинарнике не будет даже упоминания неиспользуемой технологии. Неговоря о том, что сейчас при компиляция бинарных сборок программ, даже AVX2 не принято использовать, а в cine хоть AVX512 вставляй, просто при установке если они явно буду использоваться(например с помощью аттрибута типа vector_size) их пользователь сможет отключить при установке, а если неявно(например при векторизации циклов), то clang сам разберётся какие инструкции ему использовать. А на счёт того, что что у пользователя не будет компилятора, так для программа использующих .NET Framework тоже раньше нужно было устанавливать дополнительное ПО, а игры для которых нужен Direct X?, а программы для Java?
Это как понимаю пока теория, а раст уже есть

И что? Когда раст был теорией C++ уже был и что, автору раста нужно было его не создавать?
Это может быть киллер фичей, ниша для этого есть, но из этой статьи этого не понять, вот надо сравнить его с го в гошной нише (конкурентность)

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

Ничего из этого. Все объекты рассматриваются как значения, т.е.
a := [UInt64]{1, 2, 3} //на внутреннем уровне в a есть ссылка на память где хранится 1, 2, 3
b := a //теперь и в b есть та же ссылка
b:setLast(7) //поскольку программа знает, что память по ссылке используется в 2-х объектах, то массив мо ссылке просто копируется в новый, и теперь в a и b разные ссылки. И уже в новом массиве, последний элемент меняется на 7
a:setLast(4) //программа видит, что массив в a использует только 1 объект, b использует уже другой массив, поэтому такой массив можно изменять не копируя его.
//в результате в a - 1,2,4,  а в b - 1,2,7

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

Cine решает много проблем, которые решает и Rust, но они решают эти проблемы разными способами. Но благородя тем способам которые использует Cine, язык может решать эти проблемы оставаясь простым, назвать Rust простым языком, думаю не станет даже его самый преданный его поклонник. Так же не стоит забывать, что простота сильно влияет на скорость разработки.
Вы наверное не поняли суть, идея в том, что язык компилируется в промежуточной байт код (для этого в начале я использовал FASM, затем LLVM IR, затем Си), а затем этот байт код компилируется в исполняемый файл, но перед компиляцией пользователю задаются вопросы и в зависимости от ответов, будет генерировать разный код.

чем для пользователя это отличается от


./configure
make
sudo make install

?

  1. Обычно программы так не распространяются, а в cine только такой способ и есть, при этом он сильно упрощен(а можно упростить ещё сильнее).
  2. Часть компиляции происходит на машине девелопера, часть на машине пользователя.
  3. При вашем подходе, через 20 лет программа может не собраться из за несовместимости библиотек, cine компилируется в один большой Си файл, который к версии 1.0 должен будет придерживаться каких либо стандартов(например c99 + некоторые расширения из GCC и clang) и через 20 лет если у вас есть компилятор который умеет компилировать c99 + расширения + (в случае linux) поддерживает posix совместимые библиотеки, то программа должна без проблем установится.
  4. При вашем подходе может не хватать каких либо библиотек и вам прийдётся их устанавливать. Программы написанные в cine распространяются в виде самодостаточного пакета.

4 — то есть openssl или zlib в своей программе я не могу использовать? сомнительное преимущество, честно говоря

Цитата из статьи
перспектива при необходимости использовать сторонние C библиотеки

планируется просто распространять си библиотек в пакете вместе с Си файлом который генерирует cine.
Я всё-таки не понял. Распостраняются Си-файлы или байт-код?
Как я понял, байт-кодом в его случае является «частично пре-компилированный» Си-файл с обвязкой, позволяющей получить разные бинарные файлы в зависимости от ответов на вопросы при установке.
Подразумевается, что при установке код будет собран; если считать Си-файл байт-кодом, то получается такой своеобразный Ahead-of-Time.
Именно так.
А на счёт того, что что у пользователя не будет компилятора, так для программа использующих .NET Framework тоже раньше нужно было устанавливать дополнительное ПО, а игры для которых нужен Direct X?, а программы для Java?
И во всех трёх случаях решение было одно: нанять маркетологов, вбухать несколько миллиардов долларов в рекламу — и добиться того, чтобы CLR Runtime, DirectX и JRE стояли на миллиардах компьютеров.

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

И что? Когда раст был теорией C++ уже был и что, автору раста нужно было его не создавать?
Да, если бы он не смог убедить руководство Mozilla, что его язык сможет помочь людям писать менее бажный браузер — затевать его не стоило бы.

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

Они могли обрести популярность не там и не для того, для чего они были созданы изначально. Python был затеян как замена Bash для проекта Amoeba. Сам проект закончился пшиком — но созданные для него язык, со временем, обрёл популярность.

А вы через что собрались получиться пользователей? На деревьях они не растут, знаете ли…

Так же не стоит забывать, что простота сильно влияет на скорость разработки.
Как-то это всё не очень вам помогло. Билл Гейтс и Пол Аллен написали BASIC за три месяца, а вам для cine потребовалось 12 лет, как вы пишите.

Конечно это не значит что ваш язык в 20 раз сложнее бейсика, просто вы не можете одновременно претендовать на простоту языка и суперскорость — и при этом не давая ни простого описания языка, на, собственно, суперскорости…

Ну Ok, пусть ваш язык прост. Некоторые несложные задачи он решает (а написание компилятора с несложного языка — это, на самом деле, простая задача). Как насчёт задач посложнее? Ну, например, считать с диска JSON, найти в нём элемент с определённым именем и посчитать расстояние между этим элементом и корнем? Как вообще — хотя бы распарсить JSON в языке, в котором, как вы говорите «нет ссылок»?
Как-то это всё не очень вам помогло. Билл Гейтс и Пол Аллен написали BASIC за три месяца, а вам для cine потребовалось 12 лет, как вы пишите.

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

они разработали реализацию языка, а не придумали новый.
Ну если хотите именно «нового языка» — то есть пример JavaScript… первая версия вообще за 10 дней была разработана.

Поймите вы наконец, что разработать новый язык — это даже не полдела, а, скорее 10% дела. Главное — понять откуда возьмутся пользователи у вашего языка и чем вы их будете «покупать».

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

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

C — купил тем, что на нём была целая операционная система (редкость по тем временам, это сейчас их десятки) и библиотеки к ней.

Ну и так далее.

Вы же говорите: «вот вещь, смотрите какая классная вещь… мне нравится». Ну Ok — вам нравится, но почему оно, вдруг, должно понравится хоть кому-то ещё?

Вы говорите: оно будет быстро и беспроблемно (потому как ссылок нет)… Ну насчёт второго — это проверить сложно, но первое… где бенчмарки?

И так далее… работа проделана огромнейшая — но самое главное… даже не затронуто.
Альтернатив js`у уже было много, которые норм работали в браузере, но где они теперь? он выиграл конкурентную борьбу не просто, потому что был первый.

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

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

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

Что значит популярный? Каков критерий популярности?
А вы через что собрались получиться пользователей? На деревьях они не растут, знаете ли…

Ну во первых, мне нужно известить большую аудиторию о том, что есть такой язык. Самый популярный ресурс который я знаю — habr.com, вначале я хотел просто рассказать про язык, но понял, что история его создания в разы интересней, не говоря о том, что мне давно хотелось с ней поделиться. Вы наверно думаете, что никто языком не заинтересовался? Огорчу вас. У меня забита личка, у меня забита почта, мне ставят звезды на github, мне предложили помощь в разработке и несколько человек активно задают вопросы по языку и предлагают какие-либо нововведения. Один человек даже нашёл мой telegram и написал слова благодарности, поскольку моя статья его вдохновила. Вы скажете это ничто? Так я не гугл, я обычный человек и у меня нет имперских амбиций по захвату всего рынка языков панорамировании, если я найду хотя бы 10 единомышленников — для меня это уже победа.
и при этом не давая ни простого описания языка, на, собственно, суперскорости…

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

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

Я никогда не работал с JSON, но знаю что он из себя представляет. Это текстовый файл на диске, как и исходники моего языка. Исходный код моего компилятора этим же компилятором прекрасно парсится, анализирует и считает всё, что нужно. Зачем для этого нужны ссылки?
Все языки, которые обрели популярность, вот совсем все были решены для решения какой-то практической задачи.
Что значит популярный? Каков критерий популярности?
Существенный процент разработчиков ими пользуется. Ну пусть будет 0.1% — это примерно 10 тысяч человек, если считать что всего у нас разработчиков 10 миллионов.

Вы наверно думаете, что никто языком не заинтересовался? Огорчу вас. У меня забита личка, у меня забита почта, мне ставят звезды на github, мне предложили помощь в разработке и несколько человек активно задают вопросы по языку и предлагают какие-либо нововведения.
Давайте вернёмся к вопросу через годик. Когда все эти люди разбегутся.

Так я не гугл, я обычный человек и у меня нет имперских амбиций по захвату всего рынка языков панорамировании, если я найду хотя бы 10 единомышленников — для меня это уже победа.
Ну… посмотрим. Будет интересно посмотреть через год — останутся ли у вас эти 10 пользователей.

Я бы сказал, что если останутся один-два — это уже будет успех. Терри Дэвис тоже искренне считал, что у него есть последователи.

Зачем для этого нужны ссылки?
Затем, что JSON — это древовидная структура. Можно, конечно, загрузить её в массив и, скажем, при добавлении элемента в середину сдвигать там всё — но обычно с использованием указателей/ссылок/etc — работать проще. Можно запретить их, конечно (скажем в BASIC их нет), но тогда это просто приведёт к тому, что людям придётся их эмулировать «руками», индексами на массивах. А поскольку это будет происхожить без поддержки языка — то ошибки при этом будут случаться чаще, чем если бы ссылки в языке таки присутствовали…
Все языки, которые обрели популярность, вот совсем все были решены для решения какой-то практической задачи.
Что значит популярный? Каков критерий популярности?
Существенный процент разработчиков ими пользуется. Ну пусть будет 0.1% — это примерно 10 тысяч человек, если считать что всего у нас разработчиков 10 миллионов.

У меня нет сведений о количестве пользователей, но мне кажется, что язык Nim имеет 10000 пользователей, но при этом он не создавался для решения какой либо конкретной задачи.
Давайте вернёмся к вопросу через годик. Когда все эти люди разбегутся.
Я думаю это зависит от того, буду ли я активно развивать язык, писать документацию и взаимодействовать с пользователями.
Затем, что JSON — это древовидная структура.

Нет проблем создавать деревья в cine.

type Tree(a)
    leaf a
    nodes [Tree(a)]


Можно запретить их, конечно (скажем в BASIC их нет), но тогда это просто приведёт к тому, что людям придётся их эмулировать «руками», индексами на массивах

Я так и сделал в стандартном модуле в реализации ассоциативных массивов, но не из-за отсутствия ссылок, а для производительности.
У меня нет сведений о количестве пользователей, но мне кажется, что язык Nim имеет 10000 пользователей, но при этом он не создавался для решения какой либо конкретной задачи.
Nim создавался как «быстрый Python».

Поскольку то, что Python — это дикие тормоза — известно всем, то даже такая странная вещь, как Nim нашла своих последователей.

Ну потому что Python — это действительно очень медленно, так что сделать что-то быстрее Python — не так сложно. На этом несколько разных языков поднялись. По популярности, конечно, они и близко к Python не приближаются, но какое-то community образовалось.

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

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

Нет проблем создавать деревья в cine.

type Tree(a)
    leaf a
    nodes [Tree(a)]
О! Класс. То есть вместо того, чтобы делать ссылку объектом языка вы предлагаете использовать массивы, которые могут быть переменной длины.

Ну как в Java используется массив размера один для возврата значения из фунции.

И там и там, думаю, это будет не слишком удобно использовать… но да, работать будет. Об эффективности, конечно, помолчим…

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

Также можно сказать и про дженерики и обработку ошибок в go — пожертвовали в угоду простотЫ, я считаю что это ошибочное упрощение, но многим нравится, время покажет кто прав.
Все языки, которые обрели популярность, вот совсем все были решены для решения какой-то практической задачи

Nim создавался как «быстрый Python».

Вы определитесь. Поскольку замена Python — не решение практической задачи, а разработка нового инструмента решающая проблемы старого и под это определение Cine тоже прекрасно подходит.
Нет — это зависит от того, сможет ли ваш язык решить ну хоть какую-то задачу лучше, чем альтернативы… причём не на 3% лучше, а настолько лучше, что кто-то рискнёт его для чего-то реального поиспользовать.

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

Да. И ничего в этом страшного нет. К тому же версия cine — 0.1, я в любой момент могу добавить тип который может хранить(а может и не хранить) один объект — это не проблема.
Ну как в Java используется массив размера один для возврата значения из фунции.

И я напомню, что джаве это не как не мешает быть во многих рейтингах самым популярным языком.
И там и там, думаю, это будет не слишком удобно использовать…
Удобно. В крайнем случае можно сделать тип обвязку — это не проблема.
Об эффективности, конечно, помолчим…

А что с ней? Это может на 2% медленнее чем на языке со ссылками и без сборщика мусора и быстрее чем на языке со ссылками и сборщикам мусора.
То есть уже в стандартной библиотеке вы упёрлись в то, что ссылки, в общем-то, нужны
То есть надо читать внимательно, я это сделал ради производительности, а не потому что ссылки нужны.
Поскольку замена Python — не решение практической задачи, а разработка нового инструмента решающая проблемы старого и под это определение Cine тоже прекрасно подходит.
Нет, не подходит. Потому что в мире существуют миллионы программистов на Python, которые страдают от того, что из программы на два порядка медленнее программ на большинстве других языков. И да — от ускорения на два порядка путём небольшой переделки оных программ — они бы явно не отказались.

После краткосрочного переучивания они смогут порождлать программы на Nim, которые будут раз в десять быстрее — вполне себе лозунг, под которым можно «продавать» язык.

«Мой язык требует полного переучивания, он ни на что непохож, а будет ли ускорение и когда — я и сам не знаю»… это куда как менее убедительное предложение — согласитесь?

Не надо чуши про два порядка, если бы так было ничего не писали бы на нем

Можете побенчмаркать на досуге.

Да, во многих случаях можно использовать всякие NumPy или SciPy и «переложить работу» на плечи C++/Fortran модулей, можно даже видеокарту приспособить… что-то можно отыграть, используя PyPy, но простейшие алгоритмы на СPython — как раз примерно в 100 раз медленнее, чем в C++.

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

Так это не про питон вообще, а про число дробилки, что далеко не основное и для чего есть решения

Что значит «это не питон вообще»? В python какая-то особенная математика теперь?

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

«Решения» же — как правило использования модулей на C++… согласитесь, что язык, который был бы так же удобен, как Python и так же быстр как C++ — пользовался бы популярностью…

Вот Nim и пытался пролезть в эту, вполне очевидную, нишу. Конечно ни до скорости Python, ни до удобства C++ он не добрался… так что успех был ограниченным… но сама ниша — очевидна.
Ну вот я посмотрел на тест с наибольшей разницей (172 раза) — на mandelbrot.

Ну и какой практический смысл сравнивать плохо читаемый (практически обфусцированный), заоптимизированный по самое немогу, завязанный на единственный компилятор (G++), единственную платформу (x86-64), использующий предвычесленные значения забитые прямо в код (волшебные массивы), и выдающим максимум за счет ручного использования векторных операций, непортируемый, слабо поддерживаемый и идеологически не особо корректный (см. «Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»») C&C++-код с легко читаемыми, полностью отвечающими идеологии языка, работающими идентично на всех поддерживаемых интерпретатором платформах Python-реализациями?

Кроме того, если посмотреть детальнее — там есть предыдущие версии C&C++-реализаций (которые впоследствии были заменены все менее понятными (все более обфусцированными), все менее портируемыми, все менее поддерживаемыми, но все более быстрыми) — разница между их производительностью и производительностью Python-реализаций гораздо менее драматична: 4 — 7 раз между хорошо читаемым «C++ g++ #3» и представленными Python-реализациями, что гораздо больше соответствует ситуации в реальных проектах (по моим наблюдениям).
Ну хорошо, мне аж тоже стало интересно. Тоже взял mandelbrot; python3-реализацию из ссылки выше по ветке, и C++-реализацию из общего списка самую нижнюю (mandelbrot C++ g++ #3) из таблицы, т.е. самую медленную.
И, извините, я не понимаю, можно ли считать достижением, что python3-реализация в несколько потоков (извините, не знаток python, так что не могу по коду понять, во сколько потоков пул там по умолчанию «молотит»; а лезть в документацию мне лень) работает в четыре разницы медленнее, чем практически в лоб (не вижу здесь никаких обфускаций или волшебных оптимизаций, кроме разве что одного manually inlining «norm» results in a 5x-7x speedup on gcc) реализованный алгоритм, работающий в один поток даже без всяких openmp.
Результаты
C++
time bash -c "./mandelbrot.gpp-3.gpp_run 16000 > ./mand_output"

real 1m5.565s
user 1m5.488s
sys 0m0.048s

Python3
time bash -c «python3 -OO mandelbrot.python3-7.py 16000 > ./mand_output_py»

real 4m23.843s
user 25m45.748s
sys 0m0.988s

sha256sum ./*output*
609262469ee6a0262ccd03932e557f745c9e7b997ad17835a02a0232a64807be ./mand_output
609262469ee6a0262ccd03932e557f745c9e7b997ad17835a02a0232a64807be ./mand_output_py

UPD: очень грубо (без долей секунд и учёта sys) поделил для python3-реализации, вышло user/real ≈ 5.87; похоже, python3 использовал все шесть ядер моего процессора.

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

Там есть много всякого, что приводит к фактически гарантированному 10x замедлению по сравнению с нормальными, компилируемыми, языками. Хотя возможно если применить разные трюки в стиле V8 можно будет ещё чуток отыграть… но незачем.

Ещё 10x — это в чистом виде неэффективность имеющейся реализации и может быть, теоретически, отыграна. Но, опять-же, смысл какой?

Вообще эта истерия вокруг того, что Python — это 100x замедление меня удивляет.

Полвека назад же всё то же самое было: был интерпретируемый BASIC или REXX и быстрые машинные коды (на «больших» машинах — ассеблер) и нокого не удивляло, не задевало и не обижало то, что между ними разница в 100 раз. Об этом прямо в инструкции писали.

И нормально — никто не жаловался. Почему сегодня в подобной же ситуация простая констатация факта вызывает обиды — непонятно…
НЛО прилетело и опубликовало эту надпись здесь
которые страдают от того, что из программы на два порядка медленнее программ на большинстве других языков. И да — от ускорения на два порядка путём небольшой переделки оных программ — они бы явно не отказались.


А не проще PyPy?
Как оказалось — проще. Но когда разработка Nim начилась — его ещё не было.

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

Всё равно много — но уже не настолько много, чтобы «любая хоть сколько-нибудь разумная реализация» была бы быстрее. Тут уже надо делать что-то близкое по скорости к C++… а это, мягко говоря, непросто (в смысле: с сохранением простоты и удобства, присущих Python непросто… так что Ada или Pascal какой-нибудь вполне быстры).

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

Ничего из этого. Все объекты рассматриваются как значения, т.е.
поскольку программа знает, что память по ссылке используется в 2-х объектах, то массив мо ссылке просто копируется в новый, и теперь в a и b разные ссылки. И уже в новом массиве, последний элемент меняется на 7
Вот есть подобная функциональность: Implicit Sharing. Не без проблем, конечно. Можно создавать свои классы с таким же поведением (см. пример использования). И это только один из вариантов подобного поведения. Магия C++ позволяет писать классы-обёртки, где Copy-on-Write будет срабатывать при попытке вызвать любой non-const метод, и даже не нужно отдельно иметь .=/:= и a.call() / b:call(). Я так понимаю, что это в языке осталось?

Вообще, тот же C# мне не очень нравится именно из-за отсутствия модификатора const и нормальной работы со структурами и ссылками/указателями; если честно, мне даже кажется кощунством продвигаться в этом направлении ещё глубже. Сейчас играюсь с Unity, и каждый раз переживаю, что при любом вызове функции всякие там Vector3 будут копироваться вместо передачи по ссылке; интересно, как бы работал Ваш язык с кучей геометрических рассчётов.

Свой компилятор – это очень круто; я пытался реализовать парсер C#-кода в AST с разбором типа каждого выражения, чтобы потом править определённым образом код и пересохранять. Тоже хотел сделать что-то в каком-то смысле уникальное и новое (описывать историю, «квест», через код), но я почему-то сломался на обработке генериков. Поразбирав подробнее, как оно работает в C#, я решил, что мне оно не нужно настолько. Да и переоценка вменяемости того pet-проекта оный забраковала.

Честно, не думаю, что кроме опыта Вы получили что-то полезное, занимаясь своим проектом, но закончить такое детище – хорошее достижение. Вы молодец.
Вообще, тот же C# мне не очень нравится именно из-за отсутствия модификатора const

readonly structs в релизе уже два года как.

Вау, спасибо. Вот только я колупаюсь на Monodevelop и Unity 2019.1; не знаю, есть ли у меня варианты такую свежатину пощупать, или нужно ещё минимум год-два ждать… Надо будет поузнавать.
Вот есть подобная функциональность

Ну значит не я это первый придумал, прям печально стало. Но в cine это все по умолчанию и другое поведение — ошибка. А в C++ это опция.
где Copy-on-Write будет срабатывать при попытке вызвать любой non-const метод

Так это безумие! Это очень сильно ударит по производительности.
и даже не нужно отдельно иметь .=/:= и a.call() / b:call(). Я так понимаю, что это в языке осталось?

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

Уверен на 100%, что если в cine было вложено столько же сил и денег сколько в c#, то мой язык смотрелся бы гораздо лучше.
Вы молодец.

Спасибо.
Так это безумие! Это очень сильно ударит по производительности.
Почему? Посмотрите ещё раз пример, можете полистать список классов (см. тут; к сожалению, отдельную ссылку именно на список дать не могу – нет там якоря вроде).
Подробнее под спойлером
В C++ можно (можно читать как «нужно», ибо это может дать прирост производительности за счёт того, что компилятор будет лучше понимать код) помечать методы как константные:
QString name() const;
void setName(const QString& value);

В первом случае выходит, что получение имени из экземпляра класса не имеет побочных эффектов (на сам экземпляр), соотвественно, получение имени не вызывает копирование; а вот перед заменой имени Copy-onWrite сработает (если счётчик ссылок покажет, что есть более двух ссылок на объект):
Employee e1(1001, "Albrecht Durer");
Employee e2 = e1;
Employee e3 = e2;
qDebug() << "e1.name:" << e1.name;
// e1+e2+e3 по-прежнему указывают на один и тот же объект в памяти
e1.setName("Hans Holbein"); // перед изменением e1 создаётся копия объекта, и изменение совершается на копии
qDebug() << "e2.name:" << e2.name; // Albrecht Durer
qDebug() << "e3.name:" << e3.name; // Albrecht Durer
e2.setName("Other person"); // перед изменением e2 создаётся копия объекта, и изменение совершается на копии
// теперь e1/e2/e3 указывают на разные объекты
e3.setName("Third person"); // счётчик ссылок e3 равен 1, копирования не происходит

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

Я не знал, что в C++ есть счётчик ссылок.
Естественно, в самом C++ такой функциональности нет. Но в стандартной библиотеке есть, например, обычные сильные и слабые указатели.
А Qt – отдельная платформа поверх С++, там насчёт указателей и сокрытия реализации (и для повышения удобства использования) вообще много чего есть.
Кроме Implicit Sharing:
  • Explicit Sharing;
  • QSharedPointer и QWeakPointer (своя реализация сильных и слабых указателей);
  • QScopedPointer (RAII-обёртка над указателем для гарантированного удаления объекта, созданного на куче, после потери выхода ссылки на него из зоны видимости без явных delete и/или try/catch);
  • QPointer (что-то вроде отдельного вида слабых ссылок на экземпляры классов, наследующихся от QObject);
  • Что такое Pimpl по версии Qt, и с чем его едят! (своё решение проблемы сохранения бинарной совместимости для библиотек).
А ещё есть своя система плагинов, сигналы-слоты и так далее.

Ну и как бы всё это нужно для того, чтобы код вроде того, что я копировал из документации Qt:
Employee e1(1001, "Albrecht Durer");
Employee e2 = e1;
e1.setName("Hans Holbein");

Было удобно и легко писать, чтобы он «красиво выглядел», чтобы был понятным. Ну и чтобы работал быстро; а уж что там внутри – совсем другой вопрос. Цена вопроса – необходимо писать два класса (кроме qpointer, scoped и слабых/сильных ссылок) вместо одного.

Ну и:
Я не знал, что в C++ есть счётчик ссылок.
Тут скорее основная магия в возможности переопределения operator * и operator ->.
НЛО прилетело и опубликовало эту надпись здесь
Но в стандартной библиотеке есть, например, обычные сильные и слабые указатели.
Посмотрите ссылки в моём комменте, пожалуйста.
Я имел в виду, что в самом C++, на уровне языка, этого нет. Никто же не заставляет использовать стандартную библиотеку; можно использовать boost, ну или вообще написать свою реализацию. Мало у кого какой подход, или какая любовь к костылям, например. )
В С++ такая функциональность есть!

pointer_safety, undeclare_reachable, declare_no_pointers
части 20.7.2-20.7.13 стандарта

А в компиляторах нет, но в них много чего из стандарта нет.

Про установку не понимая, зачем мне отвечать на какие-то вопросы? У меня других дел хватает, это работа создателей дистрибутива независимо от того где оно будет компилироваться, ну и компилять у себя я готов только если ничего конфигурить не будет нужно — ввёл условный apt rebuild all и получил прирост производительности, тогда ок.

и компилять у себя я готов только если ничего конфигурить не будет нужно
Есть разные люди и лично я готов ответить на парочку вопросов при установке, если в конечном итоге приложение будет работать лучше. Я поэтому и начал создавать свой язык, потому что у меня запрос на технологию был, а предоставить мне её никто не мог.
Да, но тогда целевая аудитория сильно уменьшается, особенно учитывая что приложений ставится очень много.
Я это понимаю, но и захват всего рынка я то же не планирую.
Разве? А как же Gentoo? Насколько я понимаю, это является одной из его киллер-фич. Ты можешь иметь все программы скомпилированные строго под твой процессор, если нужно, поскольку компилируешь все сам:
https://wiki.gentoo.org/wiki/GCC_optimization/ru
А как же Gentoo?
Невнимательно читали статью, я это из gentoo и позаимствовал.

Касательно ссылок получается copy on write, может и не так плохо, не готов конкретно возразить, но есть подозрение, что так производительности си не достичь, скорее всего Раст не случайно все свои сложности ввёл.
Что кстати со сборкой мусора?

но есть подозрение, что так производительности си не достичь

Про потенциальную производительность выше Си, я говорил с учётом того, что полученный на cine код, окончательно компилируется на машине пользователя подстраиваясь под систему, в противоположность Си программам, которые принято распространять в виде исполняемых файлов собранных обычно не для самых производительных машин(для совместимости), к тому-же cine генерирует один большой Си файл и компилятор очень многое может оптимизировать в Си программа разбивается на отдельные библиотеки и в последующем они линкуются, но у линкера не такой большой полёт для оптимизации, как у компилятора. Если C, Rust, C++ будут делать как Cine, то программы на них будут более производительными, но Cine будет где-то рядом. Уточню, что эти рассуждения были бы верными в случает если Cine был бы доделал до версии 1.0, в данный момент я не делал бенчмарков и не могу сказать даже примерно где он находится. Так же уточню, что copy on write срабатывает только при необходимости, а это не всегда бывает.
Что кстати со сборкой мусора?

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

Ну… это вам ещё предстоит испытать…
Зацикливание двух объектов на друг друге не возможно из-за особенностей языка.
А можно поподробнее?
Что мешает сделать класс Tree (Вы писали тут где-то в комментариях пример), а потом собрать дерево A → B → A? Тогда потом даже после «выпадения из зоны видимости» нод A и B получаем утечку памяти, разве нет?
Или получается, что за счёт Copy-on-Write мы автоматически получаем C → B → A? Т.е. корень перед добавлением B → A копируется в C? А если это нежелаемое поведение, и где-то нужно сохранить ссылку на уровень выше?
Или получается, что за счёт Copy-on-Write мы автоматически получаем C → B → A? Т.е. корень перед добавлением B → A копируется в C?

Да именно так это и происходит.
А если это нежелаемое поведение, и где-то нужно сохранить ссылку на уровень выше?

Без костылей — никак. В этом и был смысл языка, что изменяя один объект, нельзя было повлиять на другой. На моей практике в 95% это удобней, но в 5% это действительно проблема.
Мне кажется, или при таком подходе проблемы с написанием кода будут на каждом шагу?
Например, есть массив/коллекция/хешмап (в общем, какой-то контейнер) с объектами. Получается, что если нужно поменять состояние одного из объектов – нужно достать объект (по факту – ссылку на него) из контейнера, затем отредактировать объект, после чего придётся заменить значение в контейнере на новое. Правильно?
Причём получаем следующую ситуацию – в момент редактирования срабатывает Copy-on-Write, потому что ссылок на объект минимум две (в контейнере и изменяемая). То есть, правильно делать в следующем порядке container.getItem → containter.removeItem → редактирование экземпляра → container.addItem? Тогда на момент изменения будет одна ссылка (если, конечно, копия объекта не хранится где-то ещё), и лишнего копирования не будет…
Похоже, правильно говорят, что будут проблемы даже набросать какой-то несложный GUI. Возможно, не будет проблем с IMGUI-подходом; но стандартный вариант, когда есть в том или ином виде контейнер с виджетами, некоторые из которых тоже являются виджетами – явно не для Вашего языка, как я понимаю?
Или есть какой-то подход, который позволяет решать эти проблемы по-другому?
Мне кажется, или при таком подходе проблемы с написанием кода будут на каждом шагу?
Уже попробывал на практике, проблем стало гораздо меньше.
Например, есть массив/коллекция/хешмап (в общем, какой-то контейнер) с объектами. Получается, что если нужно поменять состояние одного из объектов – нужно достать объект (по факту – ссылку на него) из контейнера, затем отредактировать объект, после чего придётся заменить значение в контейнере на новое. Правильно?
Верно, но меня это устраивает.
Причём получаем следующую ситуацию – в момент редактирования срабатывает Copy-on-Write, потому что ссылок на объект минимум две (в контейнере и изменяемая).
Допустим элементы массива являются структурой хранящей два члена, один число (UInt64), а второй массив. При получении элемента из массива значения числа и указатели на память массива копируются на стэк, при этом счётчик у массива внутри элемента увеличивается на 1. Если в полученном элементе изменить число, никакого копирования не происходит, если изменить массив (тот который внутри элемента) то он будет скопирован. При помещении измененного элемента назад в исходный массив если его счётчик будет равен 1, то массив не будет скопирован, иначе будет.
То есть, правильно делать в следующем порядке container.getItem → containter.removeItem → редактирование экземпляра → container.addItem? Тогда на момент изменения будет одна ссылка (если, конечно, копия объекта не хранится где-то ещё), и лишнего копирования не будет…
Это не всегда нужно, но в некоторых случаях это действительно будет оптимизацией.
Похоже, правильно говорят, что будут проблемы даже набросать какой-то несложный GUI.
Возможно, но я вижу несколько возможных и адекватных решений проблемы.
но стандартный вариант, когда есть в том или ином виде контейнер с виджетами, некоторые из которых тоже являются виджетами – явно не для Вашего языка, как я понимаю? Или есть какой-то подход, который позволяет решать эти проблемы по-другому?
Он возможен (поскольку функции являются объектом первого класса и по этому можно делать аналоги интерфейсов из других языков), но мой язык действительно для таких целей подходит менее чем большинство других. Но не стоит забывать, что в языке можно свободно использовать вставки на Си, можно банально сделать бинбинги для GTK.
Допустим элементы массива являются структурой хранящей два члена, один число (UInt64), а второй массив. При получении элемента из массива значения числа и указатели на память массива копируются на стэк, при этом счётчик у массива внутри элемента увеличивается на 1.
Но структура же тоже объект? Или это два разных типа сущностей? Не помню такого в статье; возможно, просто уже прошло слишком много времени.
Похоже, правильно говорят, что будут проблемы даже набросать какой-то несложный GUI.
Возможно, но я вижу несколько возможных и адекватных решений проблемы.
Я тоже вижу; например, IMGUI-подход, когда нет постоянных сущностей/объектов, представляющих элементы интерфейса, а есть только функция, которая умеет обрабатывать события. Но у этого подхода есть свои минусы и трудности.
Он возможен (поскольку функции являются объектом первого класса и по этому можно делать аналоги интерфейсов из других языков)
Да, но в этом случае есть большая проблема с тем, что объект не может хранить своё состояние в себе; каждый раз, меняя элемент интерфейса (надпись на кнопке, например), нужно устраивать пляски с бубном, чтобы в контейнере осталась ссылка на обновлённый вариант кнопки, в контейнере-уровнем-выше осталась ссылка на обновлённый вариант контейнера, и так далее, выше, до самого interface root element/container.
Ну или нужно иметь где-то аналог статичного массива (какой-то менеджер), сводящемуся к хешмапу id → состояние объекта, а на каждом элементе держать уникальный id. Думаю, это как-то можно сделать не очень неудобным… Но зачем?..
Но структура же тоже объект? Или это два разных типа сущностей?
Как было сказано в статье, я при проектировании приложений задействую ООП (хотя язык и не ООП), а в ООП программа представляется в виде объектов которые взаимодействуют друг с другом. Под объектом я понимаю любые данные имеющие тип, где они располагаются — не важно. Счётчики не относятся к объектам, счётчики относятся только к памяти выделенной на куче. Вот пример кода на си, илюстрирующий то о чём я говорю (На всякий случай скажу, что в cine нет массивов, есть только слайсы и можно брать кусок другого слайса не выделяя новую память. Массив в примере только для упрощения кода).
struct array {
    uint64_t *counter;
    uint8_t *array;
}

struct someType {
    uint64_t x;
    struct array y;
}

//аналог этой функции есть в стандартном модуле cine
//есть и decCounter но для примера он не нужен
void incCounter(struct array a){
    *(a.counter)++;
}

//аналог этой функции сгенерируется автоматически
void incCounter(struct someType a){
    *(a.y.counter)++;
}

void foo(){
    //код на cine
    //a := someFunc()
    //someFunc вернёт объект с типом someType
    //counter которого равен 1
    //похожий код на C
    struct someType a = someFunc();
    //код на cine
    //b := a
    //похожий код на C
    struct someType b = a; //данные из a просто копируются в b, все указатели из а указывают на ту же память что и указатели в b
    incCounter(a); //этот вызов вставится автоматически
    //в дальнейшем если какая либо функция захочет изменить a.y.array то она посмотрит на a.y.counter
    //и если там число больше 1 - то создастся новый счётчик a.y.counter со значением 1 (в b останется старый счётчик),
    //затем выделится память размером как у a.y.array и в эту новую память копируется память из a.y.array
    //после чего в a.y.array помещается новый кусок памяти (в b.y.array остаётся старая память) при этом если в a.y.array есть какие либо счётчики
    //то они все увеличиваются на 1. Если нужно поменять a.x
    //то он просто меняется, так как a.x не указатель а просто значение лежащее на стэке (или  регистре процессора, как clang решит), изменение
    //a.x естественно никак не повлияет на b.x
}

Да, но в этом случае есть большая проблема с тем, что объект не может хранить своё состояние в себе; каждый раз, меняя элемент интерфейса (надпись на кнопке, например), нужно устраивать пляски с бубном, чтобы в контейнере осталась ссылка на обновлённый вариант кнопки, в контейнере-уровнем-выше осталась ссылка на обновлённый вариант контейнера, и так далее, выше, до самого interface root element/container.
Это не обязательно, можно в место ссылки хранить номер индекса виджета в массиве.
Ну или нужно иметь где-то аналог статичного массива (какой-то менеджер), сводящемуся к хешмапу id → состояние объекта, а на каждом элементе держать уникальный id. Думаю, это как-то можно сделать не очень неудобным… Но зачем?..
Не обязательно хэш использовать, можно просто использовать массивы, а id это позиция в массиве.
Вообще у меня есть 6 вариантов создания gui:
  1. Создавать аналоги интерфейсов из многих других языков, все виджеты хранятся в одном массиве в типе Fluid (аналог пустого интерфейса), но поскольку в таких интерфейсах «методы» не могут менять сам объект, они могут в качестве результата возвращать новый объект, а затем этот новый объект поместить назад в массив.
  2. Весь GUI храниться в одной структуре которая хранит по одному массиву на каждый тип виджета. При изменении виджета по его типу определяется массив куда новые значения нужно поместить
  3. Создавать один массив со всеми виджетами внутри Fluid, любая функция применяемая к виджету, применяется непосредственно к Fluid, а внутри Fluid уже определяется что это за тип виджета и как с ним поступать, затем изменённый виджет опять помещается в Fluid, а затем в массив.
  4. Создать программу в которой можно удобно создавать GUI, а на выходе эта программа генерирует код создающий такой GUI с указанным поведением и с любыми возможными костылями необходимыми для реализации подобного GUI, а также создать модуль для удобного взаимодействия с этим GUI.
  5. Создать си-обвязки к существующему GUI (GTK, IUP)
  6. IMGUI

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

эта статья скорее про историю, а не про сам язык

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

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

Если вдруг будет дефицит идей — у меня завалялась, пока не похоже что сам доберусь писать.
Насчёт мессенджера, у меня самого много идей, но боюсь я никогда не доберусь до их воплощения.
  1. Кросс под архитектуры, которые отличаются от десктопных — быстрее будет собирать и оптимизировать
  2. Аналогично, совершенно не нужно на хост системе иметь железо типа куды, чтобы под неё собрать
  3. Бенчмарков, как я понимаю, нет? Вы хоть numpy догоняете?
  4. Это слабое преимущество
  5. Какие проблемы со ссылками? А указатели типа проблем ссылок не имеют?
  6. С этого момента поподробней, пожалуйста
Кросс под архитектуры, которые отличаются от десктопных — быстрее будет собирать и оптимизировать

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

А я разве утверждал такое? А писал о том, что если есть 2 похожие технологии, которые предназначены для плюс-минус одного и того же, пользователь может выбрать какую из них использовать.
Бенчмарков, как я понимаю, нет? Вы хоть numpy догоняете?

Так и cine 1.0 ещё не вышел. Или вы хотите, что бы мой язык с версии 0.1 рвал всех в клочья? Я писал о том, что у него есть такой потенциал из-за дизайна языка и особенностей компилятора.
Это слабое преимущество

Это шутка?
Какие проблемы со ссылками?

Невнимательно читали статью, я писал об этом. Множество ссылок на одни данные, по одной из ссылок данные меняются, хотя программист рассчитывал, что ссылка ведет на уникальный объект. Это моя самая распространенная ошибка.
А указатели типа проблем ссылок не имеют?

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

Подробней писал в этом комментарии(там где код написан, в коде есть комментарии)
Так и cine 1.0 ещё не вышел. Или вы хотите, что бы мой язык с версии 0.1 рвал всех в клочья?
Если вы это называете ключевой особенностью языка… то да, конечно.

Когда мы делали свою особую песочницу, которая должна была, в некоторых условиях, быть быстрее альтернатив благодаря специальному компилятору… мы бенчмарки прогоняли до того, как компилятор был готов. Была какая-то адская смесь из изменённого GCC, каких-то скриптов, обрабывавших ассемблерный выхлоп, и чего-то ещё. Скомпилировать реальные программы было нельзя, но где-то половину SPEC2000 — мы прогнать сумели.

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

Вы же пытаетесь в качестве киллер-фичи продать, извините, «шкуру неубитого медведя»…

А указатели типа проблем ссылок не имеют?
Так в языке и указателей нет.
А что есть тогда? Вот захотите вы прочитать JSONчик маленький (ну, банально: закачик хочет, чтобы конфигурация в JSON хранилась). Куда вы его засунете?
это называете ключевой особенностью языка

Я не это называю ключевой особенностью, а то что язык простой удобный, но при этом есть огромный потенциал производительности. Сейчас его производительности с головой хватает для всех целей с которыми его сейчас будут использовать. Или может вы считаете что его сейчас будут использовать для реальных крупных проектов? Я вас умоляю.
А что есть тогда? Вот захотите вы прочитать JSONчик маленький (ну, банально: закачик хочет, чтобы конфигурация в JSON хранилась). Куда вы его засунете?

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

Сейчас его производительности с головой хватает для всех целей с которыми его сейчас будут использовать.
Любое высказывание про элементы пустого множества истинно… так что формально вы правы.
добавьте это в текст статьи. Хотя бы в «P.S.»
Там уже есть раздел «Интересные факты».
Жму вам руку. Я свой компилятор 3 года делал. Причем на отладки ссылок застрял на 1 год.
Простату языка проще проверить на задачах из rosetecode.org там сразу видно какой язык проще.
У Паскаля код длине чем у современных языков таких как Rust.

Важный момент касательно простоты — важно чтобы сложность инструмента соответствовала сложности решаемых задач. На эти грабли наступали многие perl, php, js — делали "простой" язык, а потом пользователи, полюбив удобство решения простых задач, начинают решать сложные, возникает куча проблем, в ответ язык начинает развиваться и в итоге ничем не отличается от "сложных" языков в противовес которым создавался "простой", go думаю на те же грабли наступает, о чём говорят холивары про обработку ошибок и дженериков.
Вообще я большой сторонник простоты, но простые модели обычно ограничены, "идеальный газ" очень простая модель, и она даже работает, но только в определённых границах, которые надо понимать.

Программы компилируются в код на Си

Ну тут ничего нового, я какое когда-то в ECL видел, и оно уже тогда не было новым чем-то.

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

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

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

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

Например: у пользователя можно спросить, что задействовать, opencl или cuda?

Особенно хорошо если юзер не знает или выберет то что не поддерживается системой. Куду вроде так и нельзя(костыли не рассматриваем) запустить на АМДшках, не?

язык изначально заточен под создание производительных приложений

Эта ниша же такая пустая…
Опять же, неизвестную фигню ставить(ну как упадёт)? А потом удивляться куда это просраны расчеты, да.

если в него вложить столько сил, сколько вложенно в раст


Не стоит ли уважать силы сообщества? Языков уже слишком много, пользы от пачки новых «СУПИРЯЗЫГ9000 BUENO EDITION» нет, ладно бы софт или библиотеки\фреймворки делали(хоть и клоны существующих), но язык…
По сути это нужно лишь индустрии(обучение, продажа литературы и прочее).

могут оказаться

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

написанных в той же манере

Что если дело в манере?
Скажем если алгоритм дрянь — менять надо его, а не язык.

Язык чертовски прост

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

В языке нет ссылок и множества проблем, которые из-за них возникают.

Всё передаётся по значению?
Если нет — оно всё еще там, тока под капотом(отсутствие явного обозначения «этоссылка» ничего особо не значит). Это не ново(да и явное указание лучше, всегда знаешь что тут тока инт, тут только дабл, а вот тут — что угодно).

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

Так тут дело в кодере, зачем из-за этого 12 лет городить язык?
Ну тут ничего нового
А никто это и не утверждал.
Ну если есть код, его можно запустить на компиляцию и самому, или спец скриптом, ничего нового…
Обычно у программ есть зависимости которые перед компиляцией нужно удовлетворять, а здель собирается один пакет в котором всё есть. Обычно разработчики распространяют свои программы в бинарном виде и не делают ни каких специальные оптимизации под конкретное железо, поскольку расспространятся оно будет скомпилированным под какой-то древний ПК (в статье об этом указано).
Юзер будет просто счастлив.
Я как пользователь был бы счастлив, но поскольку никто кроме разработчиков Gentoo этого не делал — сделал я. Как это реализованно в Gentoo мне не очень нравится.
Это и знающих лишь винду задолбало(далее далее, да ка-бы согласен(нет), далее), а уж у сидящих под линуксом(привыкших в основном к установке из пакетов, или компиляции из исходников) вызовет припадок(для таких вещей есть конфиги, проверки, ключи и прочее).
Эту возможность необязательно использовать, она опциональна. Cine и fei — ничего не спрашивают.
Особенно хорошо если юзер не знает или выберет то что не поддерживается системой.
Программа для видео монтажа может использовать cude или opencl, монтажёру можно предоставить выбор до установки и в итоговой программе не будет намёка на неиспользуемую технологию, что позволит уменьшить потребление ресурсов. Я думаю большинство проффеcсиональных монтажёр знает о opencl и cuda, не говоря о том, что вопрос не имеет ограничений на количество символов и можно при постановке вопроса всё объяснить и дать рекомендации.
Куду вроде так и нельзя(костыли не рассматриваем) запустить на АМДшках, не?
В этом случае можно написать в вопросе то, что если у вас видео карта от AMD cuda вам не доступна.
Эта ниша же такая пустая
Я не по тому язык создал чтобы заполнить нишу, а потому что для меня не было подходящего инструмента.
Опять же, неизвестную фигню ставить(ну как упадёт)? А потом удивляться куда это просраны расчеты, да.
Чушь не надо пороть.
Не стоит ли уважать силы сообщества?
Уважаю.
Языков уже слишком много
И это хорошо, ведь есть выбор.
пользы от пачки новых «СУПИРЯЗЫГ9000 BUENO EDITION» нет
Не вам судить
ладно бы софт или библиотеки\фреймворки делали(хоть и клоны существующих),
Так займитесь этим, вместо пустой критики.
По сути это нужно лишь индустрии
Это нужно мне. И я без всяких мутных личностей решу, что мне делать.
А могут и не оказаться.
Вполне, возможно. Но никто никого не заставляет.
я считаю что разумнее или учавствовать в допиливании его.
Присоединяйтесь к сообществу и помогайте, я не против.
Скажем если алгоритм дрянь — менять надо его, а не язык.
А если алгоритм и так хорош, а на разработку нового уйду годы.
Алгоритмы конечно больше решают чем язык, но чушь пороть не надо.
Это говорят про каждое первое поделие.
Ни разу не слышал таких заявлений по отношению к rust и idris.
так что аргумент так себе
А по мне — очень сильный аргумент.
Всё передаётся по значению?
На уровне языка да.
Если нет — оно всё еще там, тока под капотом
Под катом да, но изменение значения одной переменной, не может повлиять на значение другого — а это решает все мои проблемы в языке.
да и явное указание лучше, всегда знаешь что тут тока инт, тут только дабл, а вот тут — что угодно
То есть статью вы не читали но сразу побежали комменты строчить? Язык имеет строгую типизацию и всегда знаешь, что где хранится.
Так тут дело в кодере, зачем из-за этого 12 лет городить язык?
Ну это вообще детский сад, все делают ошибки в коде, если вы нет — жду от вас статью о том как вы стали богом кодинга, с удовольствием прочту. А я просто взял и создал инструмент на котором я не могу совершить свою самую распространённую ошибку. Вам это не нравится — не используйте.
Ну и вероятно автор не знаком со многими известными языками, что насчёт питона например?

Превед


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

Цитата из статьи.

Что-то пропустил, видимо потому что не упоминалось о каком-то влиянии питона.

Тут есть ещё момент, что автор ищет производительности:


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

У Python-а, каким бы синтаксически приятным он ни был, производительность в смысле быстроты определённо не преимущество. Поэтому вряд ли автору имело смысл что-то говорить о влиянии Python на разработку языка, одним из главных критериев которого было "чтобы программы на моём языке были производительны".

гуглите Nim

а вообще простым файндНреплейсом уже можно бустануть питона сайтоном, а потом лупы переписать на нампайные и тд и тп в итоге будет лейтёхать ничуть не хуже пыщ

Бедный, несчастный русский язык, за что вы его так?

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

Что вы имеете против сильной динамической типизации?

НЛО прилетело и опубликовало эту надпись здесь
Вот прям с языка сорвали.

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

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

Саша, ты набрал много опыта программирования, и это заметное достижение.

Но мне кажется, что твоя слабость в том, что ты чересчур увлекаешься деталями. ИМХО сейчас новые языки программирования мало кому нужны, если за плечами разработчиков не стоит крупная организация или сообщество.

Может стоит больше обсуждать с другими людьми для чего и что ты делаешь?

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

В любом случае, удачи тебе в твоих делах.
Новые языки всё время возникают. Вот, например, земляки-беларусы выкатили «SQL на стероидах»: habr.com/en/company/lsfusion
Но только мизерная часть новых языков применяется кем-то, кроме своих создателей.

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

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

Для универсальных языков программирования это действительно верно. Но это не касается DSL. Бывают узкие области, где нужен свой специализированный язык, заточенный под конкретные задачи. Есть ряд специальных инструментов для разработки таких языков.
Но мне кажется, что твоя слабость в том, что ты чересчур увлекаешься деталями. ИМХО сейчас новые языки программирования мало кому нужны, если за плечами разработчиков не стоит крупная организация или сообщество.

Я это понимаю. Но возможно, даже если язык не обретет популярности, какие-то фишки моего языка станут использовать в других языках, в cine есть много ново и интересного. В этом случае я не зря жизнь жил, ведь я сделал мир лучше чем он был до меня.
Может стоит больше обсуждать с другими людьми для чего и что ты делаешь?
Если ты про жизнь, то как бы пафасно это не звучало, я очень необычный человек, со взглядами сильно отличающимися со взглядами 99.999% людей, советы других людей для меня зачастую не применимы, я в лет 15-20 прислушивался к советам, каждый раз разочаровывался результатом. Если ты про программирование, то в моём окружении есть только один человек умеющий программировать, но он самую малость программирует на PHP для WordPress, разница в нашем знании программирования — пропасть, он не понимает о чём я говорю.
У тебя очень хорошие способности в программировании, раз ты сумел столько всего выучить и использовать. Может тебе сконцентрироваться на поиске такой работы? Далеко не везде требуют образование. И в коллективе ты лучше начнешь видеть свои слепые пятна. А они есть у всех людей.

Я подумываю над этим, но здесь есть много нюансов.
В любом случае, удачи тебе в твоих делах.

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

Если ты про жизнь, то как бы пафасно это не звучало, я очень необычный человек, со взглядами сильно отличающимися со взглядами 99.999% людей, советы других людей для меня зачастую не применимы, я в лет 15-20 прислушивался к советам, каждый раз разочаровывался результатом.
Тогда почему вы считаете, что хоть кто-то хоть когда-то прислушается и присмотрится к вашей Temple OS… ой, извините, языку cine?
Сейчас об этом невозможно сказать, так как в куче того, что вывалили нет даже никакого описания языка, потому невозможно понять что в нём вообще есть, а чего нет.

Потому что это была история про то, как я создавал язык, а не технический мануал по языку. Про язык я буду писать в отдельном блоге(ссылку на который я дал в статье) и иногда на хабре.
Тогда почему вы считаете, что хоть кто-то хоть когда-то прислушается и присмотрится к вашей Temple OS… ой, извините, языку cine?

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

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

Я не зря столько раз произносил слово «продать» при общении с вами. Тот факт, что «рынок» языков программирования не совсем обычен — ничего не меняет, по большому счёту.

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

Соотвественно если вы кого-то хотите им заинтересовать — нужно в него вкладываться. Статья на Хабре и блог — это, как бы, уже не так плохо… но это ставит ваш язык в один ряд с тысячами других, подобных… ну и почему, как вы считаете, кто-то захочет посмотреть на именно ваше творение, а не, скажем творение DeuterideLitium6 или Pavia00?

В этом мире прежде чем начать чем то заниматься — нужно прочитать теорию по маркетингу и рынку. Занимает не так много времени. Это покажет индустрию с другой стороны, многие вещи станут очевидными.

Атмосферно. Очень больно было читать, как человек с такими навыками работает грузчиком и охранником.


Чувствуется, что cine это Детище. Родимое, дорогое, любимое. Как человек, поздно зашедший в карьеру из-за гигантских амбиций суъективного характера (и тоже много лет поработавший в процессе личной учёбы на низкоквалифицированных работах, испытавший и нищету, и депрессию), позволю себе это прокомментировать. Возможно, я ошибаюсь, но после прочтения статьи отнюдь не очевидно, что Вы работаете программистом и нормально зарабатываете. Если не ошибаюсь, то очень рекомендую потратить Х времени на среднестатистическую карьеру программиста. Тем более, что по сложившемуся впечатлению, Вам легко доступна карьера выше среднестатистической. Потому что нормальная зарплата, какими бы мы ни были идеалистами, обеспечивает материальный комфорт и фундамент душевного спокойствия. Я сейчас как раз в этой фазе, и подпишусь обеими руками. Что касается Детища, то ничего, если оно подождёт. Вы важнее любого языка программирования, в том числе и Вами созданного. Осмелюсь даже сказать, что ничего страшного, даже если Детище никогда не взлетит. Главное, чтобы для Вас, живого человека, жизнь была, наконец, жизнью, а не огнём, водой и медными трубами. Тем более, что, судя по Вашим скиллам в самомотивации, Вы уже из комфортной карьеры найдёте как прицепиться если не к разработке нового языка, то к радикальному улучшению уже существующего, с опытом и наработками из Детища. В самом худшем случае Ваши идеи (в смысле, Ваш язык) не найдут общественного признания. Лично я считаю, что это не страшно — кто сказал, что всё, аутентично найденное самостоятельно, непременно должно признаваться обществом? Их истинная ценность это то, что делает Вас тем, кто Вы есть. Ровно так же я решил для себя: докарьерные наработки будут моим личным активом, который буду пересматривать и допиливать по мере возможности и личного развития. Если когда-нибудь выстрелит — ок, если нет — тоже хорошо, ведь главное, что с ними я стал лучшей версией самого себя в своих же глазах.


Как бы там ни было, успеха!

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

Я подумываю попробовать стать go backend разработчиком, знания и небольшой опыт go имеется(компилятор cine я переписывал с go + некогда были написаны несколько программ).
Как бы там ни было, успеха!

Спасибо за приятный комментарий.

Как было замечено выше, если бы цель была получить работу — работа бы уже была. Здесь амбиции. Просто их нужно сматчить с запросами рынка. Обычные программисты делают маленькие шажки и матчат свои способности с рынком чаще. Автор решил сделать один большой шаг. Но чем длиннее шаг — тем выше шанс сделать шаг в направлении которое не матчится с рынком. Чтобы сделать что то полезное для рынка — нужно быть участником рынка, а не наблюдателем.
Рыноку нужны не обязательно революционные идеи. Нужны просто хорошие идеи с практическими примерами применения. Если у тебя есть идея, тебе нужно ее упростить так, чтобы пользу от этой идеи понял даже дурак. Тогда получится бомба.


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

Кстати, некоторым идея может понравится просто потому что для них это ново — но это нисколько не говорит насколько идея эффективна.

Как было замечено выше, если бы цель была получить работу — работа бы уже была.
Цель была, работу не смог найти(не все попытки указаны в статье).
Здесь амбиции.
Какие? Это тролинг?
Автор решил сделать один большой шаг. Но чем длиннее шаг — тем выше шанс сделать шаг в направлении которое не матчится с рынком. Чтобы сделать что то полезное для рынка — нужно быть участником рынка, а не наблюдателем.

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

Хорошо, вот у вас есть инструмент. Например если представить ремесленника — ему нужна лопата для того чтобы копать поле — он сделал себе лопату и копает себе поле дальше. Зачем этому ремесленнику идти в город и рассказывать всем о своем инструменте? Обычно другие сами приходят к нему и просят поделиться его инструментом, либо начинают его копировать.


Для чего вам этот инструмент? Для чего вы его используете?

Зачем этому ремесленнику идти в город и рассказывать всем о своем инструменте?

Потому, что мой инструмент в миллион раз сложнее лопаты и его нужно совершенствовать, а один в поле не воин.
Для чего вам этот инструмент? Для чего вы его используете?

Для разработки.
Потому, что мой инструмент в миллион раз сложнее лопаты и его нужно совершенствовать
Но погодите — зачем совершенствовать именно его? В мире есть масса других инструментов, которые можно бы поусовершенстсовать…

Для разработки.
Для разработчи чего, извините?

Понимаете — у вас так получается, что у вас есть инструмент, который используется для разработки этого самого инструмента… круто конечно, но зачем это может быть кому-то нужно?

Когда Давид Ханссон сказал «у меня есть классный способ разрабатывать web-сайты, быстрее и удобнее, чем другие — но нужно изучить Ruby»… это было понятно: разрабатывать web-сайты — это нужно, а если, потратив время на изучение Ruby, это можно делать быстрее — так это клёво… может быть изучение Ruby и окупится…

У вас же есть две задачи: улучшение языка и использование этого языка для улучшения языка. Ни одна из них не является проблемой, которую люди хотели бы решить, уж извините…
Но погодите — зачем совершенствовать именно его? В мире есть масса других инструментов, которые можно бы поусовершенстсовать…
С удовольствием занялся бы этим, если бы изначально был совместимый для моих целей инструмент. Его не было (или я не знаю о таком) — пришлось делать свой.
Для разработчи чего, извините?
Компьютерных программ.
Понимаете — у вас так получается, что у вас есть инструмент, который используется для разработки этого самого инструмента…
Это инструмент не единственный, это единственный который я опубликовал в интернете. А сколько интересных идей у меня в голове сидит.
у меня есть классный способ разрабатывать web-сайты, быстрее и удобнее, чем другие — но нужно изучить Ruby
Я уверен, что ему тоже многие говорили, что за чем ты это делаешь есть же «любой другой язык»? Зачем ты велосипеды изобретаешь?
У вас же есть две задачи: улучшение языка и использование этого языка для улучшения языка.
Ваши домыслы, не более.
Зачем вы тратите время отвечая на такие стандартные вопросы?
Ты никогда не пройдёшь свой путь до конца, если будешь останавливаться, чтобы бросить камень в каждую тявкающую собаку.

Или отдыхаете так от разработки?
Или отдыхаете так от разработки?
Нет. Просто было 75 новых комментариев, а в ЛС пришло письмо об орфографической ошибке, открыв статью для исправления ошибки — я автоматически сбросил счётчик новых сообщений, для ответа (при необходимости) на новые комментарии мне нужно пролистать полностью все комментарии (теперь я понял насколько божественна система на linux.org.ru, когда все комментарии идут подряд без ветвлений). Для нахождения всех новых комментариев мне нужно много времени, нашёл я время только спустя 2 недели, но раз я уже сел отвечать — ответил на все, даже на те на которые стоило бы не отвечать.
Не хотите забивать ящик сообщениями о новых комментариях?
Не хочу.
Для разработки.

Вы понимаете, что вы юлите не перед нами, а перед самим собой. Если вы сами не знаете зачем он вам нужен — как же вы объясните другим людям — зачем им этот инструмент?


Если он вам нужен для обучения и оттачивания скилов, либо потешить свою любознательность — значит продукт вашей деятельности нужен только вам.

Вы понимаете, что вы юлите не перед нами, а перед самим собой.
Не юлю, а не хочу отвечать полноценно на глупые вопросы.
Если вы сами не знаете зачем он вам нужен
Вы статью хоть читали?
как же вы объясните другим людям — зачем им этот инструмент?
Этот инструмент для решения моих проблем в разработке. Я уверен что раз проблема есть у меня — она есть и у других. Не говоря о том, что заинтересованные уже нашлись.
Если он вам нужен для обучения и оттачивания скилов, либо потешить свою любознательность
Не нужно гадать — почитайте статью и комментарии.
значит продукт вашей деятельности нужен только вам.
Повторюсь, уже нашлись заинтересованные лица.
Что касается Детища, то ничего, если оно подождёт.
Мы ж можем умереть в любой момент и не успеть оставить после себя ничего.

Буду исходить из того, что это не тонкий подкол (или всё же?...).


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


Есть рациональные аргументы, почему индивидуально человек непременно должен стремиться после себя что-то оставить?


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

Есть рациональные аргументы, почему индивидуально человек непременно должен стремиться после себя что-то оставить?

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

А само это "извне" есть?


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

Всё же бессмертие это не "намного дольше" а бесконечно дольше. Но вне зависимости от этого, странный, имхо, аргумент. Как может человеку быть "холодно" или "жарко" от того, что что-то живёт после него, если он сам мёртв? Единственный вариант (подскажите, если есть ещё), чтобы ему, возможно, было не всё равно — это наличие жизни после смерти. Тем не менее, такие аргументы иногда прилетают от людей, которые убеждены, что после смерти ничего нет.


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


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

Традиция уважения к родителям и, в общем случае, к предкам, насколько мне известно, восходит к религиозным предписаниям. Хотя в уважении к родителям и старшим есть и рациональный аспект: так поддерживается структура общества, при которой более опытные и мудрые пользуются авторитетом и могут направлять молодые горячие головы в конструктивное русло. Впрочем, трудиться и что-то производить для цивилизации можно и по разным другим причинам. Но что-то мне подсказывает, что в "можем умереть и не оставить после себя ничего" имелось в виду "можем не оставить после себя чего-то такого, чтобы много-много людей долго-долго нами восхищались".

«можем не оставить после себя чего-то такого, чтобы много-много людей долго-долго нами восхищались»

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

Иногда чувствую себя инопланетянином. :)


да мы такие, социальные существа, которым важен статус, уважение, оценённость

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


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


Ну, в общем, думаю, что понял. "Можем умереть и не оставить после себя ничего" это аргумент не к разуму (как я ошибочно подумал), а к эмоциям. У меня нет на это отклика, ну и ладно. Спасибо за разъяснение!

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

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

И неважно: хотите вы собирать марки, паровозы или пишите свой язык… если вам устраивает ситуация, когда вы с этого не получаете дохода — то почему нет?

К сожалению у очень многих изобретателей подход к их Детещу совсем иной: я такую, такую, ТАКУЮ вещь сделал — а её никто не ценит… но я им докажу!

Обычно кончается это потерянными годами и, в особо запущенных случаях, смертью (как у пресловутой TempleOS).
Не очень понял, что вы имели в виду, но я не выкидываю «некоммерческие» идеи и буду реализовывать их как только появится «свобода».
Отвечал так за автора, т.к. по тексту ему явно важнее всего его идеи.

Ну… он прямо написал:


Я подумываю попробовать стать go backend разработчиком, знания и небольшой опыт go имеется(компилятор cine я переписывал с go + некогда были написаны несколько программ).

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


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

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


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

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

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


И что это, кстати, за вычислитель? В рамках какой онтологии Ваш аргумент рационален?


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

А когда грань достаточности усилий очевидна и не тонка, чтобы можно было достоверно судить? Можно пример усилия, необходимого и достаточного для этого, с конкретной гранью?

НЛО прилетело и опубликовало эту надпись здесь
Хотя, казалось бы, диплёрнинг на человеческую жизнь влияет больше, чем доказанная strong normalization theorem для ещё одной системы типов.

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

Я сам себе этот вычислитель.

И вот тут я потерял видимость понимания, что в Вашей терминологии значит "вычислять жизнь". В связи с остальным контекстом осторожно предположу, что "вспоминать прошлое". Подтверждаете?

НЛО прилетело и опубликовало эту надпись здесь
Аргумент рационален в рамках заботы о себе будущем.

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


  1. Человек периодически вспоминает о своём прошлом ("вычисляет жизнь"?..), в частности, в старости.
  2. Если он за уже прошедшую жизнь ничего существенного, со своей же точки зрения, не сделал, то и вспоминать своё прошлое ему будет неинтересно.
  3. Если человеку приятно вспоминать о своём прошлом, то до сего момента жизнь прожита не зря, так сказать, "можно вычислять".
  4. Таким образом, чтобы не было "больно за потерянные годы", разумно делать что-то хорошее и значительное со своей точки зрения. И чем оно будет значительней, тем "вкусней" для вспоминания будет прошлое, а следовательно, и настоящее.

Примерно так?

НЛО прилетело и опубликовало эту надпись здесь
Мысли «я чё-т хренью какой-то по жизни занимаюсь, бессмысленная она у меня и бестолковая» догоняют уже сейчас, а мне всего 28. Что же дальше будет?

Соболезную, you are the Chosen One. Это я к тому, что смысл жизни, если не появляется спонтанно и не помещается полностью в чём-то вроде детей, ресурс редкий и добывать его бывает трудно. Конечно, если, скажем, сесть на иголку, то жизнь осмыслится сразу, но очень ненадолго. Развлечений тоже надолго не хватает, если только не подсесть серьёзно, что часто чревато похлеще, чем иголка. Однако, есть такое впечатление, что люди в массе не особо парятся о смысле. Он как-то автоматически распределяется на семью, работу, бытовуху, нехитрое хобби, вроде рыбалки, и прокрастинацию. По моим нерепрезентативным наблюдениям люди, серьёзно ищущие смысл вне вышеперечисленного, либо "уходят в монастырь/секту", либо являются аномалией.


К сожалению, не могу подсказать, что будет дальше, т.к. в своё время, отслужив, сосредоточился именно на смысле, на дофига лет. Занялся профессиональной карьерой уже когда совсем припёрло. Слава Богу, так вышло, что предварительные поиски смысла помогли мне и с карьерой, а профессиональный опыт частично помогает двигаться в сторону смысла. В этом мне просто безумно везёт. Жаль лишь, что жизнь слишком короткая… Есть и побочки: самые интересные темы никому вокруг абсолютно не интересны, а если интересны, то чисто гипотетически, потому что без очень специфического бэкграунда там делать нечего. Создание семьи сначала отодвигалось чисто ради смысла, а теперь ради обретения хорошей финансовой стабильности, чтобы не попасть в ад бытовухи. В общем, метафорическая палка с двумя концами.


Что-то занесло меня, вопрос-то явно риторический. Закрываю свой фонтан. )


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

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

Что ж, лично я не способен оценить, почему критерий и DL это хрень и ерунда, а формализация Haskell это интересно — не занимался пока толком ни тем, ни другим. Haskell, кстати, давно уже маячит, только меня от него всё время отбрасывает то в лямбда-исчисление, то в теорию типов, то категорий. Собственно, после теории множеств эти господа на очереди. А Вам искренне желаю успеха! В новом году и вообще.

</