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

Здравствуй, читатель! Меня зовут Александр, родился я в небольшом городке (меньше 10000 человек) в Беларуси. Моя семья была бедной, игрушек крайне мало, про компьютер и какие либо приставки вообще можно не заикаться. Не смотря на то, что семья была бедной, у матери были не бедные родственники, которые иногда дарили нам какие либо не дешевые вещи. И вот однажды (где то в 2001 году) эти самые родственники, дарят нам компьютер «Байт»(советский аналог ZX Spectrum 48k). Радости моей не было предела! Сразу же я начал, запускать на нем игры. Игры на этом компьютере загружались с обычных аудиокассет с магнитной лентой. Загрузка одной игры длилась примерно 5 минут и с не малой вероятностью, могла прекратиться из-за некачественного сигнала. Чтобы увеличить вероятность успешной загрузки, мне приходилось протирать спиртом и регулировать положение считывающей головки магнитофона. Весь этот шаманизм при загрузке, длительность загрузки и невозможность сохраняться в играх, привели к тому, что постепенно я начал терять интерес к играм. Но вместе с «Байт»-ом мне также подарили книгу, по работе с этим компьютером. Я решил прочитать эту книгу, чтобы узнать больше о возможностях «Байт»-а. В книге оказался учебник по встроенному в «Байт» языку программирования «Бэйсик».

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

Примерно через год, после событий описанных выше, у меня в школе появляется информатика. Со временем на уроках нас начинают учить программированию в программе «ИнтАл». На уроках мы программировали мало, так как было много других материалов не связанных с программированием, а также работали за компьютерами по очереди (компьютеров было меньше, чем учеников). Но в нашей школе был факультатив по информатике и я решил туда записаться, с надеждой, что на факультативе мне дадут больше программировать. На факультативе мы начали изучать Turbo Pascal, с первого момента мне язык очень понравился. Там были записи(они же структуры), юниты(они же модули и библиотеки), процедуры и функции. Это был какой то новый прекрасный мир, прекраснее чем все, что я знал до этого. Начав изучать паскаль, я окончательно решил, что хочу стать программистом.

Закончив 9 классов школы, у меня появился выбор, пойти в какой либо колледж, либо пойти в 10 класс. Я решил пойти в лицей, по специальности оператор ЭВМ с углубленным изучением физики, математики, астрономии и информатики. Многие люди говорили, что если я отучусь по этой специальности, то мне будет проще поступить в ВУЗ на программиста. На решение вступительного экзамена давалось три часа, я использовал только 30 минут, из которых 10 я проверял, все ли правильно. Поступил! В лицее я продолжил изучать Pascal, но также начал изучать Photoshop, Corel Draw, Excel, командную строку Windows и .bat файлы.

Узнав, что я поступил, те самые родственники которые подарили мне «Байт», подарили мне новый компьютер со следующими характеристиками: одно-ядерный Intel Celeron 800 Mhz, 64 Mb оперативной памяти, 14 Gb жёсткий диск, встроенное видео с разрешением 640 x 480 и 16 цветов. Родители скинулись и сделали апгрейд, купив 64 Mb оперативной памяти и видео карту Matrox Milenium g400 16 Mb, c поддержкой 16 миллионов цветов, разрешение стало 800 x 600 (ограничение монитора). В то время доступа в интернет почти не у кого не было, вся информация в основном бралась с дисков, которые продавались в магазинах.

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

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

Тот самый друг который познакомил меня с Delphi, сказал, что некая компания бесплатно рассылает диски с какими-то Ubuntu и Kubuntu. Я даже не знал, что это такое, но он бесплатно дал мне 2 диска. Ubuntu у меня не запустилась, а вот Kubuntu запустилась и очень хорошо работала. Я был поражён — оказывается кроме Windows и dos есть, что-то ещё. Очень хотелось поставить Kubuntu на компьютер и по изучать его, но 14 Gb диск был категорически против. К тому же к этому времени у меня уже появился интернет (5 Kb/s), а модем в Kubuntu не работал. Поэтому диск с Kubuntu был закинут на полку. Неожиданно все тот же друг, начал бредить каким то ассемблером, все показывал мне какие то программы на нём, но у меня они вызывали лишь улыбку, поскольку 50 строк ассемблера заменялись одной строкой Delphi, но друг всё же уговорил меня попробовать и дал диск с FASM и учебниками по ассемблеру. Ассемблер мне не понравился, хотя макросы в FASM — классная штука.

И вот я закончил лицей, пришло время поступать в ВУЗ. Но незадолго до окончания лицея, я начал подрабатывать в интернете. В интернете есть куча мошенников которые, притворяются успешными предпринимателями и предлагают доверчивым пользователям следующую сделку — «Дайте нам хотя бы доллар, а через 2 недели мы вернем вам 2 доллара». Если этим мошенникам дать доллар, то как ни странно, через 2 недели они действительно возвращают 2 доллара, но если дать 10 то через 2 недели, будет указано, что у меня на счету 20 долларов, но снять их будет невозможно. Я создавал множество почтовых ящиков и используя различные почтовые ящики и меняя ip адрес (у меня был динамический ip), регистрировал на сайтах мошенников множество аккаунтов, каждый раз кладя на них 1 доллар. Учитывая то, что я таким образом уже немного зарабатывал, меня стала посещать мысль — «А может мне не идти в ВУЗ? Программировать в своё удовольствие я могу и без ВУЗ'а.». К этой мысли меня также склоняло и то, что в интернете часто писали, что программисту вышка не нужна. В то время как я размышлял — «поступать или не поступать?», жизнь за меня решила сама. Мой отец зарегистрировался на сайте знакомств, нашёл себе новую любовь и кинул меня с матерью. Понимая, что мать одна не сможет меня содержать, пока я буду учиться, я не стал поступать в ВУЗ. После лицея я обязан был отработать год на каком либо предприятии. Я устроился по специальности в продуктовый магазин, занимался выпиской ТТН и ввод пришедшего в магазин товара в компьютер. Немного поработав в магазине, я написал программу которая анализирует базу данных продуктов в магазине и ищет потенциальные проблемы. После этого в кампании, которая владела магазином, предложили перевестись к ним на должность программиста, но узнав, что у меня нет высшего образования — передумали. И я остался дальше работать в магазине. Зарплата у меня была не плохая, а вот доход от мошенников был очень скромным. Низкими доходы были потому, что регистрация аккаунтов занимала много времени, а в Беларуси было очень тяжело работать с интернет деньгами. Liberty Reserve — интернет деньги, работу которых обеспечивал банк в Коста-Рике, который не выдавал информацию о своих клиентах правительству, из-за чего большинство мошенников и использовали Liberty Reserve.

Покупать эти деньги в Беларуси было особо затруднительно, так как в автоматическом обменники приходилось платить в семь раз дороже(если память не изменяет), а покупать у людей было рискованным занятием. Я перестал обманывать мошенников и получал доход, только от работы. Отработав год, решил поискать, что нибудь по лучше. У меня была на руках не плохая сумма денег и я решил обновить свой компьютер. Характеристики нового ПК: AMD Athlon 64 x2 2600 (с поддержкой SSE2 инструкций, которых не было в предыдущем процессоре. Это важно!), 1 Gb оперативной памяти, 80 Gb жёсткий диск. Вспомнив о том, что я хотел по изучать Kubuntu но у меня был слишком маленькие жёсткий диск, я решил поставит Linux и Windows одновременно, поскольку с диском у меня проблем уже не было. Сходив в магазин компьютерных дисков, мною был приобретен диск с openSUSE 10.2. Моей новой работой стала починка компьютеров в одной из компаний моего города, с испытательным сроком в один месяц. Начальник этой компании, а также его жена разрабатывали некое бухгалтерское ПО, узнав, что я увлекаюсь программированием, они предложили присоединится за процент от будущих продаж, но поскольку разработку они вели на Visual FoxPro и SQL, мне необходимо было выучить эти языки. Я согласился. Через месяц оказалось, что они и не собирались меня брать на работу, а нужен я им был, чтобы подменить ушедшего в отпуск сотрудника, когда он вернулся, они сказали, что я им больше не нужен, но все же хотели, чтобы я им помог с разработкой, я разумеется отказался и начал искать новую работу. Несколько месяцев безуспешных поисков привели к тому, что я пошёл на стройку подсобным рабочим.

Зарплата у подсобного рабочего была в 3.5 раза меньше чем у оператора ЭВМ в магазине, но надо сказать, что и работа на порядок проще(я был крепким парнем). В выходные дни, используя FASM, я начал изучать эти новые для меня SSE2 инструкции. Поэкспериментировав я понял, что в некоторых задачах, эти инструкции могут значительно увеличить производительность. Мне стало интересно, как разработчики ПО встраивают в свои приложения SSE2 инструкции, ведь если все задачи в которых имеет смысл использовать SSE2, будут решены с их использованием — то программа не будет запускаться на компьютерах без поддержки SSE2, но если их не использовать — то программа будет работать медленнее. Конечно можно в начале программы узнать, есть ли у процессора поддержка SSE2, и в зависимость от результата выполнять разный код, но в таком случае увеличивается сложность разработки и тестирования, а также увеличенное потребление оперативной памяти и кэша процессора. Проанализировав несколько программ, я увидел, что большинство программ не использует SSE2. И тут я задался вопросом «А почему компиляторы не компилируют в ассемблер с макросами, а на компьютере конечного пользователя некая утилита не заполнит необходимые для макросов константы и только после этого создаётся бинарник?». И я, вспомнив про видоизмененный паскаль, который я придумал в лицее, решил написать такой компилятор. Так же мной было принято решение, добавить в язык дженерики и язык стал выглядеть примерно так:

type Point(a){
    x, y: a;
}

type Line(a){
    a, b: Point(a);
}

function createLine(a, b: Point(a)) Line(a){
    result.a = a;
    result.b = b;
}

Со временем у меня появился интернет с нормальной скоростью и я полностью отказался от Windows в пользу Linux(было много дисков с программами для Windows, а качать их аналоги для Linux с медленным интернетом проблематично). На тот момент у меня был дистрибутив Ubuntu 8.10, но я активно интересовался и другими дистрибутивами. В какой то момент, я решил попробовать дистрибутив под названием Gentoo. Разбираясь как устанавливается Gentoo я узнал про use-флаги и сразу понял, что их поддержку нужно добавить в свой язык. То есть, при установке программы написанной на моём языке, утилита которая добавляет константы в ассемблерный код, будет также спрашивать значение констант которые определил программист при разработке и в зависимость от этих констант, макросы будут вставлять различный код. Почти закончив разработку компилятора, я из форумов узнаю о каком-то LLVM, в котором есть некий ассемблероподобный язык LLVM IR. Изучив немного, что это и с чем его едят, я решил компилировать не в FASM, а в LLVM IR, поскольку он умеет оптимизировать код, а мой компилятор практически ничего не оптимизировал, не говоря о том, что разработчики LLVM со временем наверняка будут добавлять новые оптимизации, а это значит, что мне не надо будет этого делать и я смогу сосредоточится на других вопросах. И я начал переписывать свой компилятор. В LLVM IR помимо инструкций, были также параметры функций и параметры аргументов функций, например можно было указать, что аргумент функции, который является ссылкой, не будет скопирован. И я решил добавить такие параметры, только указывать их нужно было не при объявлении функции, а при вызове и в отличии от LLVM IR, эти параметры носили не информативный характер, для оптимизации, а были требованием поведения. Пример:

function inc(a: ^Integer) Integer{
    result = a^ + 1;
}

procedure foo(){
    var
        a: ^Integer;
        b: Integer;
    ...
    //некий код
    ...
    b = inc(ro nocp a) //если бы функция inc изменяла значение по ссылке или копировала ссылку, то код бы не компилировался
}

Со временем я уехал в Минск и устроился грузчиком, зарплата была очень хорошей (800 $/месяц), хотя времени на разработку стало меньше. Читая форумы, я стал очень часто натыкаться на упоминания языка Haskell, упоминания обычно сопровождались фразами вроде: «взрывает мозг», «очень необычно», а также упоминалось, что там есть какие-то монады, которые тяжело понять. Я не выдержал и решил изучить этот язык. Скачав целую кучу учебников по Haskell и начал учить. Взял первый учебник, написано очень мутно — удалил, взял второй, читаю и испытываю ощущение, будто все страницы перетасованы — удалил, беру третью, книга написана толково, но она как будто рассчитана на изучение через примеры(а я люблю изучить теорию, а затем подкрепить её практикой) — удалил, дело доходит до четвёртой, написано толково, изучается через теорию — похоже то, что надо. Книга называлась «Изучай Haskell во имя добра». Во время прочтения у меня не возникло ни одного вопроса, никаких проблем с монадами у меня так же не возникло. Мне настолько понравилась книга, что я пошёл и купил её бумажный экземпляр. Прочитав до конца книгу я понял, что все языки которые я видел до этого, попросту меркнут на фоне Haskell, это просто какой-то новый, недостижимый для других языков уровень. Я решил изучить Haskell глубже, прошёл курсы по Haskell(а заодно по основам статистики и языку Python), начал смотреть лекции по функциональному программированию и лямбда исчислению Чёрча.

Очень хотел изучить теорию категорий, но не нашёл никаких материалов объясняющих эту теорию простым и понятным языком. Я писал на Haskell всякие мелкие утилиты. В какой-то момент я наткнулся на вакансию Junior Haskell Developer прочитав требования я понял, что подхожу под все требования и решил попробовать. Написал резюме и откликнулся на вакансию. Думая, что мне пришлют для проверки навыков тестовое задание, я отрыл IDE, firefox + google и стал ждать ответа, ответ пришёл примерно через полтора часа где меня вежливо послали. Данная вакансия висела на сайте ещё год. Haskell стал моим основным языком и я начал писать на нём всё подряд.

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

function lineLength(line: Line) Real
    result = sqrt(sqr(line.a.x - line.b.x) + sqr(line.a.y - line.b.y))

В какой-то момент случился кризис и мои 800$ превратились в 400$, аренда комнаты 120$ + дорога на работу и с работы + коммуналка и с зарплаты остаётся примерно 250$. А зачем мне жить в арендной комнате и получать 250$, если я могу жить в нормальной квартире и получать примерно те же деньги у себя в городе? Я решил уволиться. После увольнения у меня оставалась некоторая сумма денег и подумав, я решил — сниму жильё в любом населенном пункте Беларуси и там, нигде не работая и не на что не отвлекаясь, допишу компилятор. Я нашёл в одном городке целый дом за 35$ в месяц. Дом не большой, старый, туалет на улице, нет душа и ванной комнаты. Но ценник был очень соблазнительный, да и хозяйка сказала, то могу выедать всё, что есть в огороде, а там было много овощей и фруктов, из-за чего я мог сильно сэкономить на еде. Я согласился и заплатил аренду за 2 месяца. На перевозку всех вещей у меня ушёл целый день и заселился я только ночью, из-за чего придя домой я сразу лёг на кровать и уснул. Проснувшись, я увидел, что хлеб, который я оставил в пакете на столе, погрызен крысами, «Ну и чёрт с ним, что крысы в доме. Буду прятать продукты в металлический холодильник» — подумал я в тот момент и пошёл на улицу. Выйдя на улицу, я почувствовал покусывания в ногах, закатав колоши, я увидел кучу блох (14 штук). Изучив квартиру, я обнаружил, что они обитают в определенном месте в доме, которое находится далеко от комнаты, где я сплю, но чтобы выйти на улицу, я должен пересечь их логово. В общем, большую часть времени я находился в безопасной комнате (и блох на мне действительно в это время не появлялось), а когда нужно было выйти на улицу, я быстро пробегал через блохастую комнату, иногда даже выходя на улицу не подцепив ни одной блохи, но чаще всего 1-2 все же цеплялись. Периодически я созванивался с матерью и в одном из разговоров я рассказал про блох. Пообщавшись, мы с матерью договорились, что я возвращаюсь домой, но 3 месяца не ищу работу, а буду писать компилятор и в это время она не будет меня донимать. Вернувшись домой, я менее чем за 3 месяца дописал компилятор. Прежде чем продолжить, я хочу вам рассказать о подходе который я использую при разработке. Свой подход я со временем выработал сам и старался всегда его придерживаться(хотя иногда меня заносит и я забываю его использовать).

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

  1. В языке должны быть только классы, свойства и методы(ничего больше).
  2. Каждый метод, в конкретном классе должен компилироваться в одну LLVM IR функцию. То есть, в классе A есть метод m, который в не зависимости от того какие аргументы ему будут переданы, всегда компилируется в единственную LLVM IR функцию, но если B наследует A, то метод m уже компилируется в другую LLVM IR функцию.
  3. Управление памятью должно быть автоматическим.
  4. Язык не должен иметь ссылок.

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

  • Как сделать аналог классов типов из Haskell?

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

    abstract class Printable
    
    require method (Printable) print()
    method (Printable) printLn()
        this.print()
        String.eol().print()
    

  • А если нужно унаследовать от абстрактного класса существующий класс?

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

    class Some(SomeParent)
        a, b String
    
    class Some(Some, Printable)
    
    override method (Some) print()
        this.a.print()
        this.b.print()
    

  • Как отказаться от ссылок?

    Работать с переменными только как со значениями(но 2 переменные могут содержать одно и то же значение, изменяя которое в одной переменной — изменяет и во второй).
  • А как без указателей передавать аргументы в функцию, которая должна менять эти аргументы?

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

    method (Some) foo(a :String, b String) // a - можно изменять, b - нет
        c := 10 // c можно изменять
        d .= 12 // d нельзя изменять
        с:someMethod() // вызывается метод someMethod, c передается как изменяемый объект
        c.someMethod() // вызывается метод someMethod, c передается как неизменяемый объект
        //2 метода выше, хоть и имеют одно имя, являются двумя разными методами, которые могут иметь разные сигнатуры
    

  • Как сделать дженерики?

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

    class Point
        x,y Number
    
    method (Some) foo(a Point<x UInt64, y UInt64>) //аргумент a является экземпляром класса, который является наследником класса Point, но с измененными классами свойств x и y. Разумеется новый класс свойства, должен быть наследником старого класса.
    
  • Логично, чтобы в классе Point свойства x и y всегда имели один тип.

    class Point
        x, y !Number // класс свойства x можно менять, а y всегда как x
    

  • А если свойства приватные?

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

    class Point
        numberClass #Number
        private x, y .numberClass
    
    method (Point) createPoint(x, y .numberClass) This //This - класс такой же как и у объекта к которому применяется метод
        result:x = x
        result:y = y
    

  • Как сделать так, чтобы любой метод конкретного класса имел только один вариант LLVM IR функции?

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

    method (Some) foo(a .z, b Point<numberClass .f>, c UInt64)
    //a имеет класс как у свойства z класса к которому применяется метод
    //b имеет класс который наследуется от класса Point но с измененным классом свойства numberClass, новый класс свойства имеет такой же класс как и свойство f класса к которому применяется метод
    //c всегда имеет класс UInt64, изменить его при наследовании нельзя
    

  • Как реализовать автоматическое управление памяти?

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

Концепт выглядит неплохо, приступил к разработке с нуля. Мои три месяца прошли и пришла пора искать работу. Время тяжёлое, работы нигде нет, ходят слухи, что даже работников отдела кадров, заставляют печатать фальшивые вакансии, чтобы создать видимость, что не всё так плохо. И я верю этим слухам, так как, часто звонишь по объявлению, а мне сразу говорят — вакансия не актуальна, хотя вакансия регулярно обновляется и висит на протяжении долгого времени. Поиск хоть какой-нибудь работы занял 5 месяцев. Устроился я в департамент охраны на должность контролёр КПП, на объект находящийся в туберкулёзной больнице. В мои обязанности входило: досмотр больных и посетителей. Зарплата — 170 $/мес. Несмотря на то, что часов работы стало больше, чем на предыдущих работах, времени на разработку тоже стало больше, поскольку работа была посменная. И вот я дописал весь код, создал стандартную библиотеку, написал для библиотеки тесты.

Запустив тесты я увидел множество ошибок, в процессе их исправления я понял, что большинство из них связаны с неопределенным поведением, а устранять их крайне тяжело. Например некоторые ошибки проявлялись через раз, некоторые проявлялись на уровне оптимизации O0 и O2, но не проявлялись на O1 и O3. Конца и края ошибкам я не видел, а толкового инструментария для поиска ошибок в LLVM IR, я не нашёл. Во время изучения мною LLVM IR, я смотрел, что генерирует clang из C. В какой-то момент я понял, что превращение из C в LLVM IR занимает крайне мало времени, а основную часть занимает оптимизация LLVM IR. Так зачем я использую LLVM IR? Ведь его оптимизация все равно будет происходить на компьютере конечного пользователя.

Так почему мне не использовать C вместо LLVM IR? Я вижу только плюсы при замене LLVM IR на C: нормальные макросы, упрощение написания кода, кучу инструментария, перспектива при необходимости использовать сторонние C библиотеки. И я начал переписывать компилятор заменяя LLVM IR на C. Когда я закончил замену, я быстро нашёл и исправил все ошибки найденные в тестах. Во время написания компилятора самой распространённой моей ошибкой было изменение какого либо значения по указателю, думая, что он уникален, а на самом деле на объект по указателю указывало несколько ссылок. Я решил изменить количество уровней мутабельности переменных, this объектов и аргументов методов с 2 (мутабельные и иммутабельные) до 4. В этой статья опущено множество деталей, так как объяснение всех нюансов и тонкостей на всех этапах создания языка, заняло бы 20 — 40 таких статей (которая и так получается огромной). Но для того, чтобы понять новые уровни, все таки необходимо уточнить некоторые детали. Когда я писал про то, что 2 переменные могут содержать одни и те же данные и изменяя одну переменную, вы можете повлиять на вторую, возможно вы подумали, что при создании переменной, в куче создаётся объект, а переменная хранит указатель на этот объект, но это не так. Я очень хотел, чтобы программы на моём языке были производительны, а выделять память под каждую переменную — далеко не производительно. Поэтому при создании переменной значение хранится в переменной, но в значении может быть указатель. При присвоении переменной какого либо объекта, значения объекта копируются в перемененную и все указатели указывают на одну и туже область памяти.

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

  • Можно менять значение переменной, но нельзя менять значения по ссылкам.
  • Нельзя менять значение переменной, но можно менять значения по ссылкам.

Возможно у вас возник вопрос — «Зачем учитывать ссылки, если язык их не поддерживает?». Отвечаю, их не нужно было учитывать, просто нужно было придерживаться нескольких правил, нарушая которые в большинстве случаев, была бы ошибка компиляции. Также мною была добавлена возможно указывать, что this объект в методе будет не читаем (по аналогии со свойством). Язык стал выглядеть так:

method (#Some) foo(a String, b `String, c ~String, d :String)
//this нельзя использовать
//a можно только читать
//в b можно заменить любой символ, но нельзя присвоить новую строку или изменить длину строки
//c может присвоить новую строку и изменить длину строки, но нельзя изменить символы в уже переданной строке
//d можно изменить, что угодно

Снова переписал компилятор и начал перепись стандартной библиотеки. Во время переписи обнаружил серьёзную проблему, дело в том, что если при вызове метода, аргумент которого (по сигнатуре) частично, либо полностью должен быть иммутабельным, но будет передан более мутабельный аргумент, то уровень его мутабельности для вызова снизится (что логично) и вот в чём проблема: предположим, что у нас есть полностью мутабельная переменная и мы применяем к ней метод, который применяется только к переменой с мутабельным значением, но с иммутабельными значениями по ссылкам, в таком методе будет легально присвоить в this полностью иммутабельный объект (так как значения копируются, а ссылки и там и там иммутабельны), но при завершении метода, мы получим полностью мутабельную переменную, в которой есть ссылка на иммутабельное значение, а это полностью всё ломает. Объяснение получилось достаточно запутанным, поэтому вот пример:

method (~Some) veryBadMethod(value This)
 this = value

method (#Some) foo()
    a := Some
    b .= Some#randomValue() //подразумевается, что с использованием b не возможно ничего изменить
    a~veryBadMethod(b)
    a:someMethod() //а вот здесь, вышеуказанное правило нарушается

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

Во время очередной переписи компилятора, я начал очень сильно кашлять, сопровождалось всё это высокой температурой. Кашель был настолько сильным, что я подумал «Все! Молодец! Поработал в туберкулёзной больнице.». Я пошёл в поликлинику, где мне сделали снимок лёгких и положили в больницу. Оказалось — острый бронхит. Во время пребывания в больнице, мне постоянно меряли давление, верхняя граница которого частенько была в диапазоне 150-180. Количество таблеток от давления и от бронхита в сумме составляла 11 штук в день. После выхода из больницы, у меня начались проблемы с когнитивными способностями, особенно это касалось памяти, у меня были такие ситуации когда я о чём-то думал и в процессе думания, забывал о чём и долго не мог вспомнить. В больницу я по этому поводу не пошёл (почему? в двух словах не рассказать, статью целую написать можно). Со временем мои способности начали восстанавливаться, но полностью до сих пор не восстановились. Вернувшись с больницы, плохо соображающий, почти 30-летний парень, живущий с матерью, на окраине мира, за 200$ в месяц (немного увеличилась зарплата), потративший свою молодость на то, что так и не смог сделать, на меня накатилось крайне депрессивное состояние.

Я начал прокрастинировать, в основном играя в компьютерные игры. В одной из игр (Disciples 3) был такой юнит — верховный вампир, когда он изрядно ранен, он становится гораздо сильнее и произносит фразу — «Погибну сражаясь!». Эта фраза меня вдохновила, ведь какой смысл был в моей жизни, если я не закончу то, что начал? Я закончу свой компилятор, чего бы мне это не стоило! Я продолжил разработку, причём если раньше я писал только по выходным, то теперь я частенько стал писать и после работы. Практически сразу после начала разработки, я подумал «Зачем я полностью копирую объекты? Ведь я могу сделать как в Haskell.». Если хаскелю дать сложить 10 чисел, то он их не сложит, а лишь пометит себе, что их надо сложить, но непосредственно сложение будет произведено в момент когда понадобится результат вычисления, а такое событие может и не произойти. Я могу сделать так-же, не копировать объекты, а пометить сколько объектов владеет областью памяти (тем более у меня есть счетчики, те самые которые обеспечивают автоматическое управление памятью) и если памятью владеет несколько объектов, и значения в этой памяти нужно изменить, то только тогда она будет скопирована.

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

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

type Point(a)
    x,y a

type SimplePoint
    x,y Double

//где-то в коде
a := Point(UInt64)

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

group Equal
//equal(a, a) -> Bool

То есть, если тип является членом группы Equal, то должна быть функция с именем equal, которая должна принимать 2 аргумента данного типа, и возвращать тип Bool.

В языке появились правила (rules) — это такой мини язык программирования, код которого выполняется во время компиляции. В этом коде можно добавить тип в группу. Пример:

rules
    1 = type == [_] //если некий тип является слайсом
    2 = type[0] > Equal //а его элементы входят в группу Equal
    3 = 1 & 2
    join 3 Equal //то добавить такой тип в группу Equal

Теперь может быть бесконечное множество функций и процедур с одинаковым именем. Для того, чтобы определить какую функцию из множества доступных вызвать, в функциях так же есть правила, которые оперируя типами передаваемых аргументов, могут определить — подходит ли функция к данным аргументам. У функций есть приоритеты, от 1 до 9 (по умолчанию 5), если при вызове функции, есть несколько подходящих варианта с одинаковым приоритетом, и нет подходящего варианта с приоритетом повыше, то это ошибка компиляции. Пример функции:

func notEqual(a, b)
    rules
        final = a > Equal & a == b
        result = Bool
    result = !(a == b) //! и == синтаксический сахар, данное выражение эквивалентно result = (neg(equal(a, b)) или a.equal(b).neg()

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

И вот наконец, я готов представить вашему взору: язык программирования cine, компилятор с таким же именем, сборщик и установщик проектов fei. Вот ссылки на github:

Инсталятор cine и fei.
Исходники компилятора.
Исходники установщика и сборщика пакетов.
Исходники стандартной библиотеке(я использую название модуль).
XML файл для создания подсветки синтаксиса в текстовом редакторе Kate.

Для установки и работы вам необходим Linux x86_64(к сожалению пока только так) и установленный clang.

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

Интересные факты:

  • Названия cine и fei произошли от сгенерированно самописным генератором случайных имен n-kine и enfei.
  • В коде на языке cine можно использовать код написанный на C.
  • Компилятор cine автоматически сортирует члены типов по выравниванию (от большего к меньшему).
  • Язык изначально назывался 4ernika, так как в момент когда я решил его создать, я ел чернику.
  • Когда язык был объектно ориентированным, была возможность при наследовании класса от нескольких классов, объединять их свойства. Например size и count объединить в одно свойство, то есть при обращении к свойству size или count, обращение происходило к одному и тому же свойству. Так же была возможность наоборот, создать класс в котором одно свойство имело несколько имен, а при наследовании, этим именам можно было назначить разные свойства.
  • С самого начала и до конца, в языке не было глобальных переменных (отказался от них ещё в лицее).
  • Во время написания одной из версий языка, я придумал новый алгоритм обучения нейронных сетей основанный на новом виде чисел, которые находятся над комплексными (все комплексные числа можно представить в виде новых чисел, но не все новые числа можно представить в виде комплексных). Мне очень хотелось попытаться реализовать этот алгоритм и попробовать его в деле, но поскольку это заняло бы немало времени, я сфокусировался на компиляторе. Но рано или поздно вернусь к этому алгоритму.
  • В языке cine нет специального типа для строк, строка в cine — слайс из элементов типа UInt8, но в каждом слайсе есть специальный флаг, которым помечаются строки.
  • Когда я перешел от использования LLVM IR к C, встал выбор об использовании clang или GCC. Написав несколько примеров, которые скомпилировал двумя компиляторами в ассемблерный код, просмотрев оба файла, я остановился на clang.
  • Хотя изначально язык затевался с целью возможности включения SIMD инструкций в код, в версии 0.1 нет явного использования SIMD (оно обязательно появится), но в одном из проходных вариантов языка, я не выдержал и реализовал поиск элементов слайса с использованием SIMD инструкций.

Комментарии (413)


  1. gentee
    20.12.2019 11:06
    +1

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


    1. mikhailian
      20.12.2019 12:44
      -1

      А для чего создавался Temple OS? А для чего животные дарили друг другу цветы в старом советском мультике?


      1. khim
        20.12.2019 18:34
        -1

        Не знаю что там в советсвом мультике, но TempleOS создал очевидно душевнобольшой человек — и она же, в кенечном счёте, его и погубила.

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

        Но вот это вот:

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

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


        1. Taetricus Автор
          20.12.2019 19:17

          Это просто пугает. Кому это нужно, зачем?

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


          1. inetstar
            21.12.2019 01:48
            +1

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


            1. Taetricus Автор
              21.12.2019 17:31
              -2

              Нужна отдельная статья про сам язык.

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

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

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


              1. Jef239
                22.12.2019 05:34
                +1

                Вам не кажется, что это очень пахнет BolgeOs?

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

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

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

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

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

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

                И так далее, и так далее, ниш очень много.


                1. Taetricus Автор
                  23.12.2019 09:05
                  -1

                  Вам не кажется, что это очень пахнет BolgeOs?

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

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

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

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

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

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

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


                  1. Jef239
                    23.12.2019 09:27

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

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

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

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

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


                    1. Taetricus Автор
                      23.12.2019 15:49
                      -1

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

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

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

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

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


                      1. Jef239
                        23.12.2019 18:50
                        +1

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

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

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


                1. stilic
                  23.12.2019 18:29
                  +1

                  Вам не кажется, что это очень пахнет BolgeOs?

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

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

                  Здесь же человек что-то делает. Сам делает.


                  1. Jef239
                    23.12.2019 18:47

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

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


                    1. stilic
                      23.12.2019 22:07

                      Компилятор сам, а язык? Паскаль с фигурными скобочками — это сам?


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

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

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


                      1. Jef239
                        23.12.2019 22:16

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

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

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

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


                        1. stilic
                          23.12.2019 22:27

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


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

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

                          type Object struct {
                             Field int
                          }
                          
                          var a Object
                          var b *Object
                          b = new(Object)
                          


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

                          
                          a.Field = 2
                          b.Field = 3
                          

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


                          1. Jef239
                            23.12.2019 22:34

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

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

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


    1. Taetricus Автор
      20.12.2019 14:12
      -1

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


      1. Hardcoin
        20.12.2019 16:38

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


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


        1. Taetricus Автор
          20.12.2019 18:55
          -1

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


          1. khim
            20.12.2019 19:04

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

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

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

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


            1. Taetricus Автор
              20.12.2019 19:22

              Но если вы хотите это «продать»…

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

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


              1. khim
                20.12.2019 19:36

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

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

                Возможно когда-нибудь вас жизнь этому научит… а может быть и никогда.


                1. Taetricus Автор
                  20.12.2019 22:23
                  +2

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

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

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


                  1. khim
                    20.12.2019 22:45
                    +3

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

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

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

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

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


            1. ch0mb0r
              20.12.2019 21:38

              Можно на клавиатуру глянуть?

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


              1. KvanTTT
                21.12.2019 16:48

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

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


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


                1. ch0mb0r
                  21.12.2019 17:30
                  +1

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

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

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

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

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

                  поэтому я и сделал идеальную раскладку, жду пока детали придут для кастомной механики, там уже с прошивкой на сях можно будет эксперементировать с раскладками на полную


                  1. asakasinsky
                    23.12.2019 10:42

                    Боюсь, что идеальной раскладки не существует.
                    Что хорошо для набора текста — плохо для написания кода.


                    1. ch0mb0r
                      23.12.2019 11:19

                      Кстати да, совершенно верно, даже более того — лейаут под питон и жс будет так же разным — решение — подгружаемые/подключаемые профили/слои

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


              1. kanazei
                22.12.2019 20:36

                Можно на раскладку глянуть?


                1. ch0mb0r
                  23.12.2019 11:25

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

                  вот ключевые моменты:

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


                  1. kanazei
                    23.12.2019 11:33

                    Понятно, минимальное изменение йцукен.
                    Если ещё не, то присоединяйся к любителям эргономики, в том числе и раскладок t.me/klavaorgwork


                    1. ch0mb0r
                      23.12.2019 12:41

                      Нет, это то что я оставил себе на повседнев при помощи куцого Xkeymap

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

                      а так у меня полностью переделанная раскладка когда было нужно много печатать по-русски

                      ок, загляну


            1. Joric
              21.12.2019 17:11
              +1

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

              Upd: если только это не thornik.livejournal.com/472554.html


              1. ch0mb0r
                21.12.2019 17:38
                +1

                ортолинейная клава — мусор, имхо

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

                есть тред на реддите с гораздо более ясным ангельским ;)


                1. Joric
                  21.12.2019 19:43

                  Ссылку на тред на реддите, пожалуйста.


                  1. ch0mb0r
                    21.12.2019 20:23
                    +1

                    www.reddit.com/r/MechanicalKeyboards

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

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


            1. VADemon
              22.12.2019 04:49
              -1

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


              1. khim
                22.12.2019 15:06
                -1

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


            1. orcy
              23.12.2019 19:55

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

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


            1. stilic
              23.12.2019 22:20
              -2

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


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

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

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

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

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

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

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

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

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

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


              1. khim
                24.12.2019 02:42

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

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

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

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

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

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


                1. stilic
                  24.12.2019 09:25
                  -1

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


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


                  Один — Dominic Beauchamp.

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

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

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

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

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


                1. stilic
                  24.12.2019 09:32
                  -1

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


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


                1. stilic
                  24.12.2019 09:37

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


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


                1. stilic
                  24.12.2019 09:43

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


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


          1. fougasse
            20.12.2019 22:05
            +1

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


            1. Taetricus Автор
              20.12.2019 22:29

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


              1. khim
                20.12.2019 22:47
                +1

                Ближе всего AOT, но компиляция производится перед установкой программы.
                Это то, что делает ART на миллиардах телефонов.

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


              1. kasthack_phoenix
                21.12.2019 04:05

                Ближе всего AOT, но компиляция производится перед установкой программы

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


                1. Taetricus Автор
                  21.12.2019 17:44

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


          1. edo1h
            20.12.2019 22:35
            +1

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

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


            1. Naves
              21.12.2019 01:33

              В 1С есть функционал для решения СЛАУ habr.com/en/company/1c/blog/420029


            1. Taetricus Автор
              21.12.2019 17:53
              -1

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

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

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


  1. Fregl
    20.12.2019 11:07
    -5

    Мда… что я только что прочитал? Компьютер Байт в 2001 году на 48 КБ? Серьёзно? Какая то непонятная биография, много воды…
    Паскаль не нравится, Си не нравится (боже мой, там же скобочки ставить надо), давай как запилю свой ЯП…
    У самого был напряг с доступом к компьютерам до поступления в ВУЗ, но уже в 2000 было много компьютерных клубов. ZX Spectrum у самого появился довольно поздно, где то в 1998, но на долго не хватило, уже тогда понимал какой это отстой, когда везде уже Sega и PlayStation на каждом углу (в каждом клубе были).
    Помню, как я думал что я очень умный и пришёл в институт на первую пару програмирования, а чувак на ассемблере за 10 минут наклепал скринсейвер в формате полёт к звездам. Вот тогда я понял, что я не ноль, а даже меньше в программировании. Было неприятно это осознавать, но у чувака компы был чуть ли не с рождения (и не сперктум, а ibm совместимые).
    Уже не первый раз встречаю здесь статью формата: паскаль не нравится, С++ не осилил, Джава сложно — буду писать что то свое… Пустая трата времени, лучше совершенствоваться в чем то перспективном или популярном. Но это мое мнение.


    1. aslepov78
      20.12.2019 18:01
      +1

      Плюсую… человек абсолютно точно болен, это раз. У человека не настолько высокая квалификация как он думает. Отсюда и на работу не берут нормальную. Нет, я не говорю что он дурак. Напротив. Но его компилятор его же и губит. А ему тут подливают еще, про Илона Маска… Срочно, срочно к психиатру.


      1. Taetricus Автор
        20.12.2019 19:01

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


        1. bugdesigner
          20.12.2019 20:00
          +1

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


          1. Veliam
            20.12.2019 22:29
            +1

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


            1. edo1h
              20.12.2019 22:51
              +4

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


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


              1. grinCo
                21.12.2019 03:23
                +1

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

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


            1. den_po
              20.12.2019 23:17

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


              1. PyerK
                21.12.2019 01:47

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


                1. den_po
                  21.12.2019 17:00

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


            1. PsyHaSTe
              21.12.2019 11:50
              +1

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


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


              1. DmitrySpb79
                21.12.2019 13:44
                +1

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

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

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

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


          1. Taetricus Автор
            20.12.2019 22:30

            Для этого нужны деньги и время, ни того ни другого не было.


            1. Kudesnick33
              21.12.2019 00:33
              +2

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


            1. smind
              21.12.2019 00:44

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


      1. xndr
        21.12.2019 17:56
        -1

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


      1. sandstramger
        21.12.2019 17:56
        +1

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


        1. khim
          21.12.2019 18:16

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

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

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


        1. aslepov78
          21.12.2019 18:37
          +1

          Почему-то я на сто процентов уверен, что нет


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

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


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


  1. almator
    20.12.2019 11:17
    +1

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


  1. svanichkin
    20.12.2019 11:38
    +1

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


    1. JustDont
      20.12.2019 12:29
      +2

      Но кто не останавливается тот добивается успеха.

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

      Починил.


      1. BOOMeranGG
        21.12.2019 17:57

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

        Дополнил


        1. JustDont
          21.12.2019 20:05
          +2

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

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


    1. Taetricus Автор
      20.12.2019 14:26

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


  1. Alesh
    20.12.2019 12:02

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


    1. Taetricus Автор
      20.12.2019 14:31

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


      1. smind
        20.12.2019 18:44
        +1

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


        1. Taetricus Автор
          20.12.2019 19:12

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


          1. kvk-2019
            20.12.2019 23:30
            +1

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


          1. KvanTTT
            21.12.2019 04:28

            это статья не биография и 99% процентов важных событий в жизни не упомянута.

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


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

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


            1. Taetricus Автор
              21.12.2019 18:08
              -1

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

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

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


      1. khim
        20.12.2019 18:54
        -1

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

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

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

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

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

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

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

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


        1. Taetricus Автор
          20.12.2019 19:41

          Будете ли вы дорабатывать свой «автомобиль» или нет

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

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


          1. khim
            20.12.2019 19:53

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

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

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

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


            1. Tolomuco
              20.12.2019 22:13

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

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


              1. Static_electro
                20.12.2019 22:41

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


                1. Tolomuco
                  21.12.2019 06:48

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


            1. Taetricus Автор
              20.12.2019 22:45

              Вы это проверяли? Сравнивали хоть с какими-нибудь вещами на 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
              

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

              Каких сборок? Вы ничего не поняли вот комментарий в котором я все подробно расписываю.


              1. 0xd34df00d
                21.12.2019 03:57

                Попробуйте написать это на JS или C++, сохранив структуру данных (список) и отсутствие мутаций.


                1. Taetricus Автор
                  21.12.2019 18:09
                  -1

                  А вы это к чему?


                  1. Yuuri
                    21.12.2019 20:44

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


                    1. Taetricus Автор
                      21.12.2019 23:03
                      -1

                      тогда надо попробовать.


            1. 0xd34df00d
              21.12.2019 03:56
              +2

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

              А вот тут вы не совсем правы. Личный опыт это несколько опровергает.


              1. khim
                21.12.2019 04:32
                -2

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

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

                А вот если есть только GitHub… ну вот не видел я таких случаев. Как бы… да нет — совсем не видел.


                1. 0xd34df00d
                  21.12.2019 05:03

                  Ну, например, пишут в почту из-за профиля на гитхабе. Или скипают phone screening. Или техническую часть интервью, про то самое «О большое», и мы просто с интервьюером трем за смишнявки в виде физзбазза на идрисе, переходя плавно к применимости вот этого вот всего в более, э, промышленном программировании.


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


                  1. khim
                    21.12.2019 18:29
                    -1

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


            1. KvanTTT
              21.12.2019 16:52

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

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


              1. khim
                21.12.2019 18:27
                -1

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

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

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

                Вот «O большое» (и отчасти GitHub профиль) — это о первой части «знать своё дело». А вот «уметь делать дело» — это как раз «10 лет работы». И тут GitHub как бы меньше котируется, а такой как у автора — как бы и отрицательных очков не дал.


            1. Praksitel
              23.12.2019 20:39
              +1

              Лет 15 назад я переписывался в фидо с парнем, написавшем kiev compiler. В конце концом. помню. его взяли на работу в некую очень крутую контору. Но там была, так сказать, java на стероидах, а не никому неизвестный язык :)


  1. shurkandak
    20.12.2019 12:32
    +1

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


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

    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.


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

    Очень интересная статья.


  1. Victor_koly
    20.12.2019 12:33

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

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

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

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


    1. Taetricus Автор
      20.12.2019 14:37

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


      1. Victor_koly
        20.12.2019 14:52

        У нас тоже в лицее были Pascal и Delphi, после него — чуток html.
        По поводу «получить $8 и более» — понял идею.


  1. jaiprakash
    20.12.2019 12:45

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

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


    1. Taetricus Автор
      20.12.2019 14:53

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


      1. vvzvlad
        21.12.2019 16:06
        +1

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


  1. DenomikoN
    20.12.2019 14:34

    Я смотрю БАЙТ в Беларуси много людей подтолкнул к программированию. Начало моей истории очень похоже)


    1. Taetricus Автор
      20.12.2019 19:45

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


  1. iago
    20.12.2019 14:40
    -1

    Автор, я конечно все понимаю, замечания по грамматике в личку, но читаю

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

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

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


    1. Taetricus Автор
      20.12.2019 15:29

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


    1. vvadzim
      20.12.2019 15:40
      +1

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


      1. nsmcan
        21.12.2019 06:46

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


  1. kryvichh
    20.12.2019 14:40

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


    1. KvanTTT
      21.12.2019 04:39

      А жаль, статья-то на самом деле о языке :)


      1. Taetricus Автор
        21.12.2019 18:14
        -1

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


  1. worldmind
    20.12.2019 14:47

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


    1. kryvichh
      20.12.2019 15:48

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

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


      1. DenomikoN
        20.12.2019 16:24

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


        1. Taetricus Автор
          20.12.2019 20:03

          При этом он бы получил знания по Lex & Yacc — это бы заняло меньше 12 лет точно.

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


      1. Taetricus Автор
        20.12.2019 19:53

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

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


        1. kryvichh
          20.12.2019 23:13

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


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


    1. Taetricus Автор
      20.12.2019 16:12

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


      1. worldmind
        20.12.2019 18:03

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


        1. Taetricus Автор
          20.12.2019 21:07

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

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

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

          Вы наверное не поняли суть, идея в том, что язык компилируется в промежуточной байт код (для этого в начале я использовал 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 простым языком, думаю не станет даже его самый преданный его поклонник. Так же не стоит забывать, что простота сильно влияет на скорость разработки.


          1. edo1h
            20.12.2019 21:52

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

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


            ./configure
            make
            sudo make install

            ?


            1. Taetricus Автор
              20.12.2019 23:05
              -1

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


              1. edo1h
                21.12.2019 00:21

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


                1. Taetricus Автор
                  21.12.2019 20:16

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

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

                  планируется просто распространять си библиотек в пакете вместе с Си файлом который генерирует cine.


              1. inetstar
                21.12.2019 01:59

                Я всё-таки не понял. Распостраняются Си-файлы или байт-код?


                1. Evir
                  21.12.2019 02:33

                  Как я понял, байт-кодом в его случае является «частично пре-компилированный» Си-файл с обвязкой, позволяющей получить разные бинарные файлы в зависимости от ответов на вопросы при установке.
                  Подразумевается, что при установке код будет собран; если считать Си-файл байт-кодом, то получается такой своеобразный Ahead-of-Time.


                  1. Taetricus Автор
                    21.12.2019 18:16
                    -1

                    Именно так.


          1. khim
            20.12.2019 21:58

            А на счёт того, что что у пользователя не будет компилятора, так для программа использующих .NET Framework тоже раньше нужно было устанавливать дополнительное ПО, а игры для которых нужен Direct X?, а программы для Java?
            И во всех трёх случаях решение было одно: нанять маркетологов, вбухать несколько миллиардов долларов в рекламу — и добиться того, чтобы CLR Runtime, DirectX и JRE стояли на миллиардах компьютеров.

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

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

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

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

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

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

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

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


            1. edo1h
              21.12.2019 00:23

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

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


              1. khim
                21.12.2019 03:20
                +2

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

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

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

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

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

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

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

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

                И так далее… работа проделана огромнейшая — но самое главное… даже не затронуто.


            1. Taetricus Автор
              21.12.2019 18:50
              +1

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

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

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

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

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

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

              Я никогда не работал с JSON, но знаю что он из себя представляет. Это текстовый файл на диске, как и исходники моего языка. Исходный код моего компилятора этим же компилятором прекрасно парсится, анализирует и считает всё, что нужно. Зачем для этого нужны ссылки?


              1. khim
                21.12.2019 20:48

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

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

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

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

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


                1. Taetricus Автор
                  23.12.2019 09:35
                  -1

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

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

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

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


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

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


                  1. khim
                    23.12.2019 19:04

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

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

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

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

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

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

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

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

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

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


                    1. worldmind
                      23.12.2019 19:18

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

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


              1. jMas
                22.12.2019 05:17

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


          1. Evir
            21.12.2019 02:30

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

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

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

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


            1. kasthack_phoenix
              21.12.2019 04:18
              +1

              Вообще, тот же C# мне не очень нравится именно из-за отсутствия модификатора const

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


              1. Evir
                21.12.2019 05:52

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


            1. Taetricus Автор
              21.12.2019 19:05

              Вот есть подобная функциональность

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

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

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

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

              Спасибо.


              1. Evir
                22.12.2019 08:23

                Так это безумие! Это очень сильно ударит по производительности.
                Почему? Посмотрите ещё раз пример, можете полистать список классов (см. тут; к сожалению, отдельную ссылку именно на список дать не могу – нет там якоря вроде).
                Подробнее под спойлером
                В 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).


                1. Taetricus Автор
                  23.12.2019 09:39
                  -1

                  если счётчик ссылок покажет

                  Я не знал, что в C++ есть счётчик ссылок.


          1. worldmind
            22.12.2019 17:12

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


            1. Taetricus Автор
              23.12.2019 09:43
              -1

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


              1. worldmind
                23.12.2019 10:14
                +1

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


                1. Taetricus Автор
                  23.12.2019 15:51
                  -1

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


          1. worldmind
            22.12.2019 17:18

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


            1. Taetricus Автор
              23.12.2019 10:14
              -1

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

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

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


              1. khim
                23.12.2019 19:06
                -1

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

                Ну… это вам ещё предстоит испытать…


          1. worldmind
            22.12.2019 17:20

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


            1. Taetricus Автор
              23.12.2019 11:01
              -1

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

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

              Будут.


              1. worldmind
                23.12.2019 11:13
                +1

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


              1. worldmind
                23.12.2019 15:26

                Будут.

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


                1. Taetricus Автор
                  23.12.2019 15:52
                  -1

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


      1. fougasse
        20.12.2019 22:12

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


        1. Taetricus Автор
          21.12.2019 19:21

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

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

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

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

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

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

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

          Подробней писал в этом комментарии(там где код написан, в коде есть комментарии)


          1. khim
            21.12.2019 19:39

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

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

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

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

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


            1. Taetricus Автор
              23.12.2019 11:09
              -1

              это называете ключевой особенностью языка

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

              Смотрите ответы на этот комментарий.


              1. khim
                23.12.2019 19:09
                -1

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

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


      1. Vitter
        21.12.2019 03:30

        добавьте это в текст статьи. Хотя бы в «P.S.»


        1. Taetricus Автор
          21.12.2019 19:21

          Там уже есть раздел «Интересные факты».


      1. Pavia00
        21.12.2019 19:22

        Жму вам руку. Я свой компилятор 3 года делал. Причем на отладки ссылок застрял на 1 год.
        Простату языка проще проверить на задачах из rosetecode.org там сразу видно какой язык проще.
        У Паскаля код длине чем у современных языков таких как Rust.


      1. worldmind
        22.12.2019 22:10

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


  1. worldmind
    20.12.2019 15:48
    +1

    Ну и вероятно автор не знаком со многими известными языками, что насчёт питона например?


    1. a1111exe
      20.12.2019 17:55

      Превед


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

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


      1. worldmind
        20.12.2019 17:57

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


        1. a1111exe
          20.12.2019 18:43

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


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

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


          1. ch0mb0r
            20.12.2019 22:02

            гуглите Nim

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


            1. Flying
              21.12.2019 19:47

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


        1. Taetricus Автор
          20.12.2019 21:12
          +1

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


          1. fougasse
            20.12.2019 22:15

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


            1. 0xd34df00d
              21.12.2019 04:03

              (тянет руку) А можно я?


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


              В рантайме это проверять уже поздно и вообще медленно.


              1. Taetricus Автор
                21.12.2019 19:26

                Вот прям с языка сорвали.


  1. rboots
    20.12.2019 17:15
    +4

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


    1. ZaMaZaN4iK
      20.12.2019 17:19

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


  1. MagicWolf
    20.12.2019 17:28
    +5

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

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

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

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

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

    В любом случае, удачи тебе в твоих делах.


    1. kryvichh
      20.12.2019 17:57

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


      1. worldmind
        22.12.2019 17:30

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


    1. CrushBy
      20.12.2019 20:55

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

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


    1. Taetricus Автор
      20.12.2019 21:33
      +1

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

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

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

      Спасибо.


      1. khim
        20.12.2019 22:03
        +1

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

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


        1. Taetricus Автор
          21.12.2019 19:38

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

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

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


          1. khim
            21.12.2019 19:57

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

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

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

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

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


            1. jMas
              22.12.2019 05:29
              -1

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


  1. a1111exe
    20.12.2019 18:33

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


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


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


    1. Taetricus Автор
      20.12.2019 21:51
      +1

      Я процитирую один из своих комментариев выше

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

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

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


    1. jMas
      22.12.2019 05:45

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


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

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


      1. Taetricus Автор
        23.12.2019 11:21
        -1

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

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


        1. jMas
          23.12.2019 20:35
          +2

          Вы статью хоть по диагонали читали? Для меня не было подходящего инструмента и я его сделал.

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


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


    1. perfect_genius
      22.12.2019 23:43
      -1

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


      1. a1111exe
        23.12.2019 15:22
        +1

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


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


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


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


        1. worldmind
          23.12.2019 15:58

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

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


          1. a1111exe
            23.12.2019 18:54

            извне никого похоже нет

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


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

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


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


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

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


            1. worldmind
              23.12.2019 19:04

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

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


              1. a1111exe
                23.12.2019 19:51

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


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

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


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


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


                1. perfect_genius
                  23.12.2019 21:13

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


                  1. khim
                    23.12.2019 21:21
                    +1

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

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

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

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

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


                    1. perfect_genius
                      23.12.2019 21:41
                      -1

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


                  1. a1111exe
                    23.12.2019 21:56

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

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


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

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


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

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


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


            1. 0xd34df00d
              24.12.2019 02:52

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


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


        1. 0xd34df00d
          23.12.2019 22:51
          +1

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

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


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

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


          1. a1111exe
            23.12.2019 23:25

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

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


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


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

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


            1. 0xd34df00d
              24.12.2019 02:59

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

              Зависит от упомянутой далее в предыдущем комментарии грани.


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

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


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


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

              Зависит от конкретной монады вычислителя.


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


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


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


              1. worldmind
                24.12.2019 10:34

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

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


              1. a1111exe
                24.12.2019 10:56

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

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

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


              1. a1111exe
                24.12.2019 11:19

                Аргумент рационален в рамках заботы о себе будущем.

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


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

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


  1. dernuss
    20.12.2019 19:10

    и невозможность сохраняться в играх

    ну в некоторых играх такая возможность была, сохраняли на магнитофон.
    Потом ещё и изменять сохранения научились;)


    1. SADKO
      20.12.2019 20:02

      А ещё был TR-DOSовский magic button, добавляющий возможность сохранения хоть куда.


    1. Taetricus Автор
      20.12.2019 21:54

      Ез всех игр которые мне нравились, такая возможность была только у laser squad(эх сколько времени я на неё потратил, больше только на lode runner).


  1. SADKO
    20.12.2019 20:38

    Грустная story, есть в ней что-то от поверженного демона Врубеля...


  1. Tereshkov
    20.12.2019 21:17
    +1

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

    Тем не менее, очень хотелось бы вам пожелать получить более фундаментальную подготовку и найти работу, достойную ваших способностей, чтобы ваша история была светлее «Моих университетов» Горького. Увы, любительские проекты почти никогда не получают отклика публики, соразмерного тем усилиям, которые вложил автор. Они — вещь глубоко личная, интимная, а признание в профессиональной среде приходится заслуживать чем-то другим.

    Удачи вам!


    1. Taetricus Автор
      20.12.2019 21:55

      Удачи вам!

      Спасибо.


    1. khim
      20.12.2019 22:12

      Однако самое большое удовольствие я находил в том, чтобы каждый байт моего компилятора был мне как родной, поэтому я с самого начала рассматривал компиляцию только в машинный код — без LLVM IR, C и ассемблера.
      Увы, ваше время ушло. Когда-то этот подход позволил Андерсу Хейлсбергу сделать компилятор и редактор, которые могли на машинке со всего-навсего 64KiB памяти редактировать и компилировать программы без необходимости даже использования дискет… но в сегодняшнем мире — это просто не нужно.


      1. Tereshkov
        21.12.2019 01:54
        +1

        В своё время Бертран Расселл говорил о ценности философии: философия нужна не человечеству — философия нужна человеку. К хобби-проектам применимо то же самое. Чтобы преподнести человечеству что-то полезное из области IT, придётся первым делом освоить массу готовых библиотек и фреймворков: если это компиляторы — то LLVM, если игры — какой-нибудь Unity 3D, если нейросети — PyTorch или TensorFlow. Иначе продукт неконкурентоспособен. С течением времени эти библиотеки всё усложняются и дают всё меньше шансов прикоснуться к сути вещей. Я не занимаюсь разработкой игр, но, кажется, сейчас можно сделать игру с хорошей физикой, даже не понимая, что такое тензор инерции и как решать дифференциальные уравнения. А ведь потребность в понимании сути остаётся! Но это потребность конкретного человека, а не человечества — и вот этот человек берётся за свой «ненужный» проект. Не знаю, согласится ли со мной автор публикации (кажется, его амбиции простираются дальше), но моя мотивация всегда была именно такой.


        1. khim
          21.12.2019 03:44

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

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

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

          Ну вот взгляните на историю создания Linux. Фактически первое же письмо обращается к довольно-таки большой аудитории (пользователи Minix) и предлагает им решение нескольких проблем, которые у них «поперёк горла» стоят: yes — it's free of any minix code, and it has a multi-threaded fs.

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

          Почему? Потому что Танненбаум создал Minix как учебный язык, он поставлялся вместе с книгой — но у него была большая проблема: лицензия не давала возможности распространять изменённые версии и при этом ради того, чтобы код оставался обозримум Танненбаум оказывался добавлять в операцонку многопоточную файловую систему.

          То есть тысячи людей оказались в ловушке — и они были хвататься буквально за соломинку.

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

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

          Распространять программу в виде C файла? Ну, блин, всю жизнь мечтал прямо. А работа с SSE — вроде как планируется, но что можно реально получить вот «прямо здесь и сейчас»… похоже не знает и сам автор…

          При этом использовать готовые библиотеки вроде как нельзя, кучи уже написанных библиотек на первое время (всякие JSON'ы, PNG и JPG и всё прочее что есть из коробки в том же Go)… тоже нет.

          Ну и кто тогда будет «первым заинтересованным пользователем»? И для чего он этот язык будет использовать?


          1. S-e-n
            21.12.2019 19:42

            Но вот получив такую штуку пытаться превратить её в что-то большое бессмысленно.
            Зачем обязательно большое? Зачем вообще за этим гоняться? Сделал для себя, а дальше, если кому-то ещё пригодилось — отлично, если нет — ну и ладно.

            Обучение, деньги, чсв и пр — это побочный профит.


            1. khim
              21.12.2019 20:03

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

              Обучение, деньги, чсв и пр — это побочный профит.
              Ну вот если рассматривать язык программирования именно так — то всё хорошо. «Я написал язычок-с, а вот он себя уже и компилирует-с, да я вообще крут! Ща подучу Flask (или Laravel или что там ещё) и пойду денег заработаю.» — это нормально.

              А вот «да мой язык уже даже может сам себя компилировать — я ща как расскажу как я крут, так все про C++ и Rust забудут и будут моё изделие использовать» — это нет.


              1. S-e-n
                21.12.2019 20:36

                Ну вот есть у некоторых людей такая потребность.
                А у некоторых — нет. Не стОит проецировать на всех.

                Ну вот если рассматривать язык программирования именно так — то всё хорошо. «Я написал язычок-с, а вот он себя уже и компилирует-с, да я вообще крут!
                Автор находится здесь. Всему своё время.


          1. Taetricus Автор
            21.12.2019 20:15
            -1

            Да и любой будет готов согласиться

            Вы ошибаетесь.
            Ну вот взгляните на историю создания Linux. Фактически первое же письмо обращается к довольно-таки большой аудитории (пользователи Minix) и предлагает им решение нескольких проблем, которые у них «поперёк горла» стоят: yes — it's free of any minix code, and it has a multi-threaded fs.

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

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

            А я вижу и уверен, что и таких как вы и таких ка я — много.
            Распространять программу в виде C файла? Ну, блин, всю жизнь мечтал прямо.

            Я мечтал, а никто не делал. Я не стал отчаиваться и сделал сам.
            А работа с SSE — вроде как планируется

            Во первых не SSE, а SIMD. Там будет поддержка вплоть до AVX512, во вторых всё это есть уже сейчас, просто инструкции вставляет clang, но в некоторых алгоритмах он не справляется и мне нужно будет вставить их в ручную.
            но что можно реально получить вот «прямо здесь и сейчас»… похоже не знает и сам автор…

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

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

            Ну и кто тогда будет «первым заинтересованным пользователем»? И для чего он этот язык будет использовать?

            Вообще то у меня вся личка на разных ресурсах(не только на хабре) и среди них есть как пользователи заинтересованные в изучении язык, так и пользователи которые хотят помочь в разработке.


        1. Taetricus Автор
          21.12.2019 19:53

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

          Я с вами не соглашусь. Нас 7,7 миллиарда вы всерьёз верите, что в мире много людей с проблемой которой нет у хотя бы миллиона людей? И если один человек решит проблему для себя, его опыт может помочь решить проблемы значимой части человечества. Почитайте историю Джефа Безоса и о том как он создал Amazon, и если вы считаете, что Amazon не решает многих проблем значимой части человечества, то извените, но нам с вами не по пути.


          1. khim
            21.12.2019 20:22

            Нас 7,7 миллиарда вы всерьёз верите, что в мире много людей с проблемой которой нет у хотя бы миллиона людей?
            Разверните ваше утверждение: нас 7,7 миллиарда человек — вы всерьёз верите, что за проблему, которую решили попробовать решить вы — никто другой ещё не брался?

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

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

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

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

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

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

            Ну и где у вас вот это вот всё?


            1. Taetricus Автор
              23.12.2019 11:30

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


              1. khim
                23.12.2019 19:16
                -1

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

                Вот какую лично вашу проблему решит тот факт, что cine задаёт какие-то вопросы при установке? Вам мало программ, которые это делают?

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


          1. Tereshkov
            22.12.2019 02:56
            +2

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

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

            Пока самые сомнительные для меня решения касаются именно удобства (на вопрос о производительности можно будет ответить только позже и с цифрами в руках):

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


            1. Taetricus Автор
              23.12.2019 12:03

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

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

              Вобщето было.
              1 — программы не используют всех возможностей компьютера на котором они используются.
              2 — ссылки и указатели приводят к большому количеству ошибок.
              Проблему номер 2 решают также rust и haskell, но на мой взгляд: rust — черезчюр сложен и неудобен, а так же имеет плохо читаемый синтаксис(когда я вижу код написанный на rust, у меня начинают глаза болеть), в haskell мне всё нравится, но без заморочек с оптимизацией, на самом популярном компиляторе(ghc) не получается писать эффективные программы.
              это очень громоздкий и многословный способ указывать типы аргументов функции
              Согласен. Я то же вижу эту проблему и для простых случаев я собираюсь все сделать менее многословным.
              компилируемый язык мне нужен именно затем, чтобы не носить с собой повсюду компилятор.

              Ну на счёт этого я уже писал, это будет как DirectX, JVM, .Net Framework. Один раз поставил и всё работает.


              1. khim
                23.12.2019 19:51
                +1

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

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

                Ещё раз скажу, почитайте историю Безоса.
                Вам тоже рекомендую. С чего он начал, обратили внимание? Ну когда его жена была водителем в поездке из Нью-Йорка в Сиэтл? Он продумывал дизайн веб-сайта? Или думал о том, где сервера разместить? Нет — он бизнес-план писал. Где было чётко написано — кто будет его клиентами, зачем они к нему придут и прочее.

                Когда он начинал, все ему говорили, что это бред, что он дурью мается, что никому это кроме него самого не надо и проще сходить в ближайший магазин, чем заказывать через интернет.
                И это было, до некоторой степени, правдой. Но, тем не менее, его неуверенность в бизнес-плане была не в этом. Цитата из вашей же, блин, книги:
                Сайт был запущен 16 июля 1995 года, хотя на тот момент он не был до конца закончен: к примеру, на нем можно было заказать отрицательное количество книг. Безос мотивировал это необходимостью опередить конкурентов.
                Вопрос был не в том — будут ли заказывать люди книги через Internet. Вопрос был: а успеет ли Безос раскрутить своё детище до того, как Barnes & Noble (и другие крупные ритейлеры) откроют подобный же сервис.

                Кстати именно потому что он начал с бизнес-плана он прекрасно понимал, что денег на книгах — он не сделает… и с самого начала планировал расширение на другие товары.

                Вообще всё что он делал — вертелось вокруг маркетинга… то есть того, о чём вы даже думать не хотите.

                А чем я рискую пробуя? Разрабатывать свой язык в серьёзный ущерб своей жизни я начал только последние 1.5 года.
                Более интересный вопрос: а что вы планируете выиграть в случае успеха? 1.5 года — это большой кусок жизни. Не огромный, но большой. Если уж вы его вкладываете, то хотелось бы понять — чего хотите получить взамен… Безос целился в то, чтобы стать ни много ни мало, а конкурентом крупнейшим сетям, рыночная капитализация которых — миллиарды. За это явно стоило рискнуть побороться… тем более он знал, что через год-два «окно возможностей» захлопнется.

                А чего планируете достичь вы? Даже если достигните успеха? Стоит оно нескольких лет вашей жизни?

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

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

                1 — программы не используют всех возможностей компьютера на котором они используются
                А это проблема? Почему это проблема? Для кого это проблема? Сколько люди готовы за её решение готовы потратить усилий? Главное: может ли Cine дать им хоть что-то? У вас же даже бенчмарков нет, а ведь ваше решение отказаться от ссылок приведёт к тому, что многие программы будут, мягко говоря, неоптимальными.
                2 — ссылки и указатели приводят к большому количеству ошибок.
                Вот только решение этой задачи напрямую противоречит решению предыдущей задачи. Rust потратил невероятно много усилий, чтобы добиться некоего компромисса.

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

                Ну на счёт этого я уже писал, это будет как DirectX, JVM, .Net Framework. Один раз поставил и всё работает.
                Вот только во всех трёх случаях тот факт, что его нужно ставить создавал, в какой-то момент, очень серьёзную проблему: люди не хотели ничего ставить.

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

                Откуда вы на это собираетесь брать деньги?


  1. 3263927
    20.12.2019 21:30
    +1

    на таких сумасшедших инженерах и держится мир! удачи вам, даже если это просто хобби — всё равно это вдохновляющая история!


    1. Taetricus Автор
      20.12.2019 21:56

      Спасибо.


  1. hrie
    20.12.2019 21:34

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


    1. Taetricus Автор
      20.12.2019 21:35

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


  1. AlexandrNikolaichev
    20.12.2019 21:36
    +1

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


    1. Taetricus Автор
      20.12.2019 21:43
      +2

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

      Я не совсем понял вашу метафору, но если вы имели в виду, что язык получился не очень, то вы пока не можете об этом судить. Хорошие знания этого языка в данный момент есть только у меня, на практике использовал его только я(переписав компилятор на cine). Разумеется я сужу предвзято, но мне язык очень понравился.


  1. gennayo
    20.12.2019 21:39
    +1

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


    1. Taetricus Автор
      20.12.2019 22:02

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


      1. gennayo
        20.12.2019 22:21

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


  1. overtest
    20.12.2019 22:15

    Когда я увидел на экране круг, я просто обомлел — это были непередаваемые ощущения.

    Дочитав до этой строки, вспомнил себя :)


  1. inferrna
    20.12.2019 23:04
    +1

    Выскажу своё никому не нужное мнение. Частично у меня есть нечто общее с автором с той лишь разницей, что я нахожу в себе силы вовремя остановиться. Сажусь писать что-то очень нужное, без чего вселенной ни куда (OpenCL реализацию нейронной сети) — через 2 года появляется нечто похожее, только гораздо лучше. Ок, выдыхаем, начинаем копать в другую сторону, благо идей полно. Год пишем нечто, в полной бесперспективности чего убеждаемся на деле (ага, торговый робот), выдыхаем, благодарим себя за бесценный опыт, двигаем дальше. Ну и непыльная работа, такая, чтобы сильно не мешала этим увлечениям, также присутствует.
    Полагаю, что я в этом плане куда более распространённый типаж.

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


    1. Taetricus Автор
      20.12.2019 23:24

      ни о каком FFI речи идти не может

      Так и есть, но немного помогает тот факт, что в cine можно использовать Си как инлайн ассемблер. Можно прям функции на си писать. Правда всё это не безопасно.
      Советую автору поискать другую цель в жизни

      Это не цель моей жизни.


    1. vaplite
      21.12.2019 20:19

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

      P.S. Можно на ваши проекты посмотреть?


      1. jMas
        22.12.2019 06:07

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


        1. vaplite
          22.12.2019 06:36

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


  1. vaplite
    20.12.2019 23:14

    «Как я 12 лет создавал свой ЯП и компилятор к нему» или «Как навязчивые идеи губят перспективы на будущее».


  1. pas9x
    20.12.2019 23:14
    -1

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


    1. Taetricus Автор
      20.12.2019 23:14
      +1

      Просто увлёкся. Я ведь — человек.


      1. KvanTTT
        21.12.2019 16:56

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


        1. Taetricus Автор
          21.12.2019 20:28
          -1

          На последнем все же нужно тщательней составлять и проверять текст.

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


  1. lavagod
    20.12.2019 23:15
    +1

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

    В данном случае, как мне кажется, к таким «безответным вопросам» относится как статья в целом, так и вопросы к ней. Хорошего кода!


  1. ooprizrakoo
    21.12.2019 00:12
    +2

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


    1. Taetricus Автор
      21.12.2019 20:30
      -1

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


      1. jMas
        22.12.2019 06:12

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


        1. Taetricus Автор
          23.12.2019 12:13

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

          Вы плохо читали статью, я пытался устроится на должность Junior Haskell Developer, всем указанным требованиям я соответствовал, но меня послали с порога. А теперь скажу то, что не написано в статье, я бы и на 400$ пошёл. Если вы считаете, что Junior Haskell Developer должен получать меньше — тогда да, у меня были завышенные требования.


          1. jMas
            23.12.2019 20:16
            +3

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


  1. DmitrySpb79
    21.12.2019 00:17
    +2

    Автору, спасибо что поделились. Писать код вечерами, разбираясь в LLVM и лямбда-функциях, а днем работать грузчиком — это сильно.

    Раз уж вы поделились с общественностью, наверно ждете фидбек. Напишу и свой.
    У меня для вас две новости — хорошая и плохая. С какой начать? Пожалуй с плохой.

    Плохая новость: новый язык программирования сейчас никому не нужен. Вообще. Их уже и так столько, что даже профессиональные программисты знают дай бог 5% от имеющихся языков. Ценность любого языка — в кодовой базе, наличии примеров, библиотек, готовых решений. Если у вас бюджет как у гугла и сотни программистов-олимпиадников, пишущих под новый язык — тогда на этот рынок можно войти. А так, с нуля, просто без шансов. Для серьезной математики сейчас используют вычисления на видеокартах или облачные сервисы, и просто еще один язык (даже если он по мнению автора, заточен под «высокую производительность»), просто никому не нужен — на видеокарте с 1000 ядер оно все равно в разы быстрее будет. Изучать кому-то новый синтаксис нигде не используемого языка? Извините, без шансов.

    Хорошая новость: время потрачено не зря, у вас уже сейчас фактически 12-летний опыт программирования, и даже несмотря на отсутствие «вышки» и записей в резюме, вы вполне сможете устроиться джуниором (или даже не-джуниором) на программиста. Ваш проект на гитхабе тут как раз пригодится, если покажете как все работает, и если это действительно работает, то проблем с трудоустройством не будет. Вы уже прямо сейчас реально можете перейти с зарплаты 200$ на 800-1000$, и это будет совсем другой уровень жизни. Целеустремленности вам не занимать, как и раньше, отложите все дела на 3-5 месяцев, подкачайте теорию и всякие там задачки про гномиков и занимайтесь только трудоустройством и рассылкой резюме. Даже если нет возможности уйти с работы, создайте CV (подробно расскажите в нем о используемых языках и технологиях) и рассылайте его по разным вакансиям хотя бы раз в неделю, это займет не больше 10 минут в день.

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

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


    1. 0xd34df00d
      21.12.2019 04:08

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

      Я бы, например, не отказался от general-purpose-языка с cubical type theory.


    1. S-e-n
      21.12.2019 19:57

      Плохая новость: новый язык программирования сейчас никому не нужен. Вообще. Их уже и так столько, что даже профессиональные программисты знают дай бог 5% от имеющихся языков. Ценность любого языка — в кодовой базе, наличии примеров, библиотек, готовых решений.
      Да? Я вот например, релиз JAI жду очень даже. Тем более, что у него интероп с C. Но он и затачивается изначально примерно под то, чем я занимаюсь.


    1. aleksandrkotlyarov9
      21.12.2019 20:31
      +1

      Он не сможет работать в команде.


      1. jMas
        22.12.2019 06:20

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


        1. Taetricus Автор
          23.12.2019 12:37

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

          который слышать не хочет о новых языках

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

          Экстросенсорика зашкаливает, определение характера через монитор. Я cine закончил недавно и всю жизнь использовал другие языки. Мои предпочтения: haskell, go.
          Что в прочем, объясняет почему он пошел на низко квалифицированный труд
          С удовольствие пошёл бы на высоко квалифицированный труд — не берут, сто раз пытался.
          просто потому что там нет конкуренции за то что он действительно ценит.
          Ну ка, проверим диванно-экстрасеннсорные способности: Что я действительно ценю?


          1. jMas
            23.12.2019 20:14
            +3

            С удовольствие пошёл бы на высоко квалифицированный труд — не берут, сто раз пытался.

            Вы сейчас серьезно или просто дурака валяете? Работы на рынке полно — в прямейшем смысле этого слова. Хочешь верстка, хочешь — QA, хочешь удаленно, хочешь в офисе. Есть HR который тебя пристроит на аутсорс. Все относится к IT и можно постепенно мигрировать в то что хочется. Вопрос вам: почему другим удается найти работу в 30, 40, 50 лет, а вам нет? Может быть вы просто не хочете делать то, к чему не привыкли?


        1. L3333437
          23.12.2019 17:32
          -1

          Как вы читаете статьи? Автор 10 раз говорил, что рад был поработать программером, но без образования в его глубинке никуда не взяли, поэтому пришлось работать грузчиком


          1. jMas
            23.12.2019 20:25
            +1

            Читаю вполне подробно. Я знаком с парой людей изначально не из IT и наблюдал как они приходили в программирование. Мое мнение — было бы желание, а способ найдется. Более того — сам автор был в Минске где квалифицированную работу уж точно можно найти. Мне кажется, автор просто не согласен на какую то начальную работу в сфере IT. Ему хочется чтобы сразу была работа на Haskel или Go. Но дело в том, что сначала нужно чем то простым заниматься, за пару лет обрасти опытом и спокойно пробовать искать желаемое.


  1. Strawb
    21.12.2019 00:43

    Компилятор cine написан на cine?
    Автор снимаю шляпу, но зачем вы написали эту статью? Вы же пожалуй достигли просветления?


    1. Taetricus Автор
      21.12.2019 20:32
      -1

      А почему не поделиться с людьми хорошей историей? :)


  1. sashavoloh
    21.12.2019 01:30
    +1

    Несмотря на длительный период разработки, вы создали свой аккаунт на гитхабе только 15 декабря 2019 года. Почему не раньше?
    Вы не думали о том, чтобы переехать в Минск и поработать С++ разработчиком или девопсом?


    1. Taetricus Автор
      21.12.2019 20:36
      -1

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

      Незачем было, ведь я один занимался разработкой.
      Вы не думали о том, чтобы переехать в Минск и поработать С++ разработчиком или девопсом?

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


  1. inetstar
    21.12.2019 02:01

    На Хабре есть возможность указать кошельки Вебмани и Яндекс.Деньги, чтобы получать пожертвования. Читая про ваши мытарства так и хочется задонатить.


    1. Taetricus Автор
      21.12.2019 21:22
      -1

      Хабр позволяет добавить: WEB Money, Яндекс Деньги, PayPal. В Беларуси можно открыть WEB Money только в белорусских рублях, кидать туда с российских кошельков — нельзя. Для того, что бы принимать деньги в Яндекс Деньгах нужно быть гражданином РФ, PayPal в Беларуси вообще ни как нельзя использовать. Сразу скажу, что все три валюты я в своё время пытался использовать. Единственное, что нормально можно использовать в Беларуси — Bitcoin. Его не запрещено хранить, его можно принимать физическим лицам, но запрещено юридическим, за исключением членов парка ПВТ. Если что, то вот — bc1qlc0q4heksc7etuyukdz5ts3u6cnd3uzsdt2d0w.


      1. inetstar
        21.12.2019 22:35

        Напишите кошелёк в профиле. Может у кого найдутся.


      1. spbislanders
        22.12.2019 20:34

        я из РБ, в Минске вам нужно просто верифицировать кошелек в ЯДеньгах, у яндекса офис на немиге, съездите с паспортом.После чего можно принимать RUB, снимать в местных банкоматах BYN


  1. shuhray
    21.12.2019 02:03

    Один студент в Англии решил экономить на еде. Купил мешок овсянки и ей питался. Заболел цингой (первый случай в Англии со времён войны)!
    Теорию категорий попробуйте поучить по моему учебнику
    github.com/George66/Textbook


    1. Taetricus Автор
      21.12.2019 20:45
      -1

      Спасибо, в свободное время посмотрю.


  1. Gorthauer87
    21.12.2019 02:07

    Кстати интересно, а llvm bitcode разве не решает эту же проблему с simd?
    Я уже не говорю про wasm даже


    1. khim
      21.12.2019 04:18
      +1

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

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

      Логично-то логично, но вот сам SIMD — нелогичен: в SSE2 можно узнать максимум из чисел со 16-битных чисел со знаком и 8-битных чисел без знака… и всё. А вот наоборот — нельзя. Это аж SSE4.1 требуется, чтобы для 16-битные чисел без знака максимум считать.

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

      Вот только она вообще никогда не работает с числами без знака! Только с числами со знаком — при этом сразу, прямо в SSE3 есть и 8-битовые и 16-битовые и 32-битовые варианты… а вот 64-битные — есть только в SSE4.2.

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

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

      Ну а если так… то о каком автоматическом выборе чего-либо и автоматическом подстраивании может идти речь? Разработчики wasm пытаются придумать что с этим можно было бы сделать… но пока в качестве решение предлагается «ход конём»: так как «фигурная нарезка» из «тут поддерживается, тут не поддерживается, тут рыбу заворачивали» — это, в основном проблема наборов SSE, в AVX2 и ARM'овском NEON'е всё довольно-таки ортогонально… то решение проблемы пока что предполгается напрашивающимся. Поддержим AVX2, NEON — а на всё остальное пока что «забъём». 99% рынка это покроет, а AVX512 добавим когда там свой, очередной, дурдом прекратится (ведь включение AVX512 сегодня ещё и частоту процессора снижает автоматом, так что если код плохо под AVX512 оптимизирован, то ещё и замедление, по итогу, может случиться!).


      1. Taetricus Автор
        21.12.2019 21:08
        -1

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

        Вообщето я работал с ними, и в учебниках по которым я изучал sse2 были указаны многие проблемы. Но мне не нужно о них беспокоиться, поскольку я не буду вставлять ассемблерные вставки с SIMD инструкциями, а буду использовать атрибут vector_size из clang, который позволяет создать тип который является вектором и с ним можно работать как с обычным числом, но если у процессора есть инструкция которая позволяет ускорить работу с эти вектором, то он её ускоряет, а если нет, просто традиционным способом исполняет код, без SIMD инструкций.
        понадеяться, что вам его компилятор как-нибудь да соптимизирует.

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

        А вот это не знал, возможно ограничиваюсь использованием AVX2


    1. Taetricus Автор
      21.12.2019 20:54
      -1

      Кстати интересно, а llvm bitcode разве не решает эту же проблему с simd?

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


  1. PyerK
    21.12.2019 02:20
    +1

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


    Я иногда читаю описания языков из 50х-60х, тогда присваивания данных было чем-то новым и непонятным, как и циклы :) и я верю что эволюция языков, в текущем виде, не остановится.


    1. khim
      21.12.2019 04:28

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

      Даже если интересные идеи в языке есть — про них никто не узнает…

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


      1. PyerK
        21.12.2019 10:18

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


        1. khim
          21.12.2019 16:21
          -1

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

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

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

          Создание TempleOS и выкладываение её на всеобщее обозрение, увы, к успеху не ведёт… даже если она реально содержит что-то интересное — на неё, скорее всего, никто смотреть не будет…


          1. PyerK
            21.12.2019 20:11

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


  1. grinCo
    21.12.2019 03:41
    +1

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


    1. Anrikigai
      21.12.2019 10:49

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


      1. grinCo
        21.12.2019 22:40
        -1

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


      1. Evir
        22.12.2019 08:41

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


        1. Anrikigai
          22.12.2019 09:50

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


    1. Taetricus Автор
      21.12.2019 21:27
      -1

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


  1. DeuterideLitium6
    21.12.2019 03:45

    Посмотрел на исходники по диагонали. Простой? Я что-то не заметил, во обще не понял как он работает. Какие преимущества перед другими ЯП? Не понятно.
    Вот я тут тоже решил свой ЯП замутить, очень простой, рабочие название HLMASM (High Level Macro ASseMbler), транслятор в низкий асм. Основа, ассемблер MASM, точней UASM. В этих ЯП есть высокоуровневые конструкции, .if, .while, invoke, в UASM есть ещё .for, .switch и т.д. В общем, надо довести эти конструкции до полноценного ЯП вроде Си, поддержка типов указателей, наследования классов, соответственно виртуальные функции ну и так далее. Всё, чтобы программирования на ассемблере, было бы таким же лёгким как на Си. Да, есть похожие ЯП, например С-- Сфинкс(занимает промежуточное положение между ассемблером и Си), но это не то, там проще сразу стандартный Си использовать. Синтаксис должен ближе с ассемблеру, а не собственно к Си.


    1. Taetricus Автор
      21.12.2019 21:33
      -1

      по диагонали

      Ясно. Продолжайте.
      Простой?

      Да, я в свой время работал со следующими языками:
      Asm, C, Pascal, Go, Haskell, Python, JavaScript, Java(совсем мало), Delphi.
      И из всех перечисленных — он самый простой.
      Вот я тут тоже решил свой ЯП замутить, очень простой, рабочие название HLMASM

      Успехов вам, надеюсь всё получится.


  1. Vitter
    21.12.2019 04:06

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

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

    Что касается самого языка — да, путь у него тернистый и легче не будет.
    Что необходимо сделать — дать описание языка(туториал) и примеры. Без этого никуда.
    А поскольку шансы языка взлететь близки к 0 (мы живём в эру переизбытка информации), лучше открыть код под какой-либо свободной лицензией, типа MIT, CC,… (смотрю вы уже это успели), может быть кто-то чем-то да воспользуется.


    1. Taetricus Автор
      21.12.2019 21:35

      Что необходимо сделать — дать описание языка(туториал) и примеры. Без этого никуда.

      Уже делаю.


  1. Rast1234
    21.12.2019 07:14

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


    1. Taetricus Автор
      21.12.2019 21:39

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


  1. roodz
    21.12.2019 09:45
    +1

    У самурая нет цели, только путь


  1. Epsiloncool
    21.12.2019 09:47

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

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


    1. Taetricus Автор
      21.12.2019 21:42

      А есть исходники этого чуда где-нибудь в гитхабе?

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

      Я это прекрасно понимаю.


  1. HellWalk
    21.12.2019 10:19

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


  1. rpiontik
    21.12.2019 11:31

    Несколько фактов:
    1. Работаю программистом с 16 лет в России (с 1996г.) Не разу не встретил трудностей при трудоустройстве программистом.
    2. Программистом в 2000х было быть вообще круто. Даже в армии ты был пристроен в штаб. Уже молчу про связи, которые тогда формировались;
    3. Без высшего образования достиг уровня Head of IT к 2009г в иностранной (крупной) конторе. После чего понял, что это не то, что я хочу.
    4. Встретил огромное количество успешных спецов из Беларуси без высшего образования. А также с высшим. В одних коллективах. Хорошо всем известная EPAM не зря там развернулась. Очень сильная школа ИТ.
    5. Крипта в Беларуси не то, что развита… я бы сказал, что весьма и весьма развита. Я лично работал с ребятами которые запилили свою биржу, майнера и т.п. создав экосистему.
    6. Большое количество народа в Беларуси работает на Запад. Вполне успешно.

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

    Учитывая большое количество несоответствий в статье и фактов, почему-то, скорее верится во второе, чем в первое. Но бывает всякое… посмотрим.


    1. Taetricus Автор
      21.12.2019 21:47
      -1

      Работаю программистом с 16 лет в России (с 1996г.) Не разу не встретил трудностей при трудоустройстве программистом.

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

      Каких? По подробнее пожалуйста.


      1. rpiontik
        21.12.2019 21:53

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


        Каких? По подробнее пожалуйста.

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


        1. Taetricus Автор
          21.12.2019 23:25
          -1

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

          Мне отказывали до интервью.
          Я внимательно прочел Ваш пост и Вы, пожалуйста, прочтите мой комментарий.

          Если вы имеете в виду то, что моя история не совпадает с вашим опытом, то вы же понимаете, что одного вашего опыта не достаточно для построения объективной картины, вы видели много программистов без ВО, но вы же не знаете сколько человек с навыками, но без ВО не смогли из-за последнего получить работу, а ведь соотношение может быть 1/100. Выше в комментариях был человек который тоже был без ВО и не мог найти работу, получил — нашёл. Плюс был комментарий про HR который не брал людей без ВО. Тут в комментариях много разных версий.


          1. rpiontik
            22.12.2019 08:53

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


            И для этого есть ряд коренных причин:


            1. ВО в период с 1995 до 2010 мало о чем говорит. Все покупалось и продавалось. Диплом можно было купить в переходе по пути на работу.
            2. На западе Российские вузы вообще не котируются.

            Из этих пунктов есть редкие исключения. Например МГУ. Но это исключения, а не общее правило.


            Чтобы найти работу удаленно, даже писать об образовании нет необходимости.


            Но определенные корочки действительно дают приоритет Вашей персоне. Но это приоритет при равных навыках. Например, сертификаты вендоров (Microsoft как пример).


            1. khim
              22.12.2019 15:19
              -1

              2. На западе Российские вузы вообще не котируются.
              Это… не совсем правда. Я общался с HR нескольких западных компаний (и работал тоже). У них нет общего правила для «российских ВУЗов». Есть список конкретных ВУЗов. Более того — даже для других стран (США, Великобритания) — есть список.

              Но определенные корочки действительно дают приоритет Вашей персоне.
              Голубую карту без «правильных» корочек очень тяжело получить. Это как пример. Да, там тоже список ВУЗов, не просто «российские корочки».


              1. rpiontik
                22.12.2019 15:36
                -1

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


            1. Taetricus Автор
              23.12.2019 12:44
              -1

              Вот комментарий человека и я такое мнение HR видел не раз.


              1. rpiontik
                23.12.2019 13:46

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

                Учиться нужно не у того, кто знает как заработать миллион, а у того, кто его заработал.

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

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

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


                1. Taetricus Автор
                  23.12.2019 15:57

                  что если ты даже для этого не напрягся, то какой из тебя сотрудник то?

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


                  1. rpiontik
                    23.12.2019 18:06
                    +1

                    Ну да. Ведь проблемы у меня? Я не умею читать.


          1. rpiontik
            22.12.2019 10:23

            Давайте, даже, далеко ходить не будем. Приведите пример с этого ресурса https://career.habr.com/ где требуется ВО.


            1. Taetricus Автор
              23.12.2019 12:49

              Написал Junior Developer (а именно на такое место я могу претендовать), вторая вакансия в списке https://career.habr.com/vacancies/1000055811. Квест пройден.


              1. rpiontik
                23.12.2019 13:41
                +1

                Вы торопитесь. С выводами. С какого раза вы нашли эту вакансию? Их было 50/50 с теми где требования нет? 80/20? 90/10? Учитывая то, что я вчера специально потратил время и за три страницы не нашел ни одного требования ВО, то скорее 90/10. И Вы нашли то самое, которое не нашел я…

                Тогда вопрос — что же Вы ищите? Проблемы? Если да, то логично их находить.

                P.S. Проверил по Вашему запросу. Примерно 70/30. В пользу вакансий без обязательного требования ВО. Да и даже в приведенной вами ссылке написано

                Высшее/ неоконченное высшее образование

                Т.е. и тут нет формального требования иметь ВО. Нужно стремление чего-то достигать.


                1. Taetricus Автор
                  23.12.2019 16:07

                  Приведите пример с этого ресурса

                  вторая вакансия в списке career.habr.com/vacancies/1000055811

                  Вы торопитесь. С выводами.

                  А где я вывод сделал. Вы торопитесь сделать вывод, что я делал вывод. Вы написали свой комментарий как будто найти вакансию с требованием ВО — это нечто нереальное. Я на это потратил 30 секунд.
                  С какого раза вы нашли эту вакансию?

                  С первого.
                  Учитывая то, что я вчера специально потратил время и за три страницы не нашел ни одного требования ВО, то скорее 90/10.

                  А какие вы смотрели? Мы же про меня общались, я могу претендовать только на джуна, а только такие вакансии и стоит смотреть. Понятно, что если ищут человека с 10 лет опыта то никто не будет указывать ВО.


                  1. worldmind
                    23.12.2019 16:23
                    +1

                    Ну не факт что на джуна, не надо себя недооценивать


                  1. rpiontik
                    23.12.2019 18:09

                    Во-первых, да, тут уже дали коммент. Не нужно искать должность джуна. Если Вы не джун.

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


        1. jMas
          22.12.2019 06:40

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


  1. sbnur
    21.12.2019 11:44
    +1

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


  1. PsyHaSTe
    21.12.2019 12:21
    +3

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


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


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


    Выход один: найти работу по специальности — и это не грузчик. На работе часто можно попиливать свой велосипед, особенно если он решает какую-то проблему. Если же никакую не решает — то это тоже урок и сигнал, что стоит что-то менять. С вашими навыками вы к текущему моменту спокойно могли бы иметь 3000-4000$ в месяц на руки. Проблема в том, что чем дальше, тем больше "сениор с 12 летним стажем программирования без единой записи в трудовой" будет вызывать вопросов.


    А еще медицина обычно недешевая. 120$ это даже не смешно. Для сравнения работники макдональдса получают порядка 500$, при том что они исторически считаются дном социального уровня (сам был школьником — там работал, знаю).


    1. Taetricus Автор
      21.12.2019 21:52
      -1

      Если же заниматься этим в свободное время, то, простите, когда жить?

      А зачем жить если за жизнь ни чего не сделал?
      но если не давать организму отдыхать

      моя текущая работа — 90% ничего не делание, я имею ввиду — ничего не делание, а не делай, что хочешь.


      1. PsyHaSTe
        21.12.2019 23:35
        +4

        А зачем жить если за жизнь ни чего не сделал?

        Жить надо для себя. Самореализация — одна из вещей, которые человеку нужно. Делать "вопреки" и "не взирая", а потом смотреть как плодом титаническим многолетних усилий никто не пользуется — печальное зрелище.


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


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


        А деятельность "вопреки" только усилит диссонанс "как же так, они меня не приняли".


        моя текущая работа — 90% ничего не делание, я имею ввиду — ничего не делание, а не делай, что хочешь.

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


        1. rpiontik
          22.12.2019 11:33

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


          Надо отметить, что и эта статья не намекает на желание работать с кем-то в команде.


          1. Taetricus Автор
            23.12.2019 13:01

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

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

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


            1. khim
              23.12.2019 20:00
              +1

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

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

              Ни ради того, чтобы получить работу (попытка искать вакансию какая вам нравится, а не какая есть… почему сразу Haskell, а не скажем, PHP или Python?), ни для того, чтобы привлечь кого-то к вашему проекту (вопросы при устновке — это типа круто… и пофиг, что почти никто из пользователей не хочет на них отвечать).

              Ну и какая это «работа в команде»?


        1. Taetricus Автор
          23.12.2019 12:56

          проблемы с коммуникацией

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


  1. pas9x
    21.12.2019 12:27
    +2

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

    По примерам исходников набросал это, но не завелось:
    image
    Видимо это из-за того, что не подключена стандартная библиотека. А как её подключить я не знаю. Читал документацию, но не нашёл там как подключить stdlib. Поэтому я заглянул в код OS.cine и решил сделать вывод строки в консоль таким-же образом:

    На этот раз ошибок синтаксиса не обнаружилось, но что-то пошло не так.


    1. Taetricus Автор
      21.12.2019 22:06

      Вы смотрели видео в блоге? Там в конце был для примера, запущен hello world.
      Вкратце как нужно сделать.
      cine на прямую вам никогда не нужно вызывать, все через fei
      Создаёте директорию(например hello), в ней открываете терминал и выполняете
      fei new hello-cine
      Эта команда создаст новый проект. Имейте в виду, что бинарник будет иметь путь /usr/bin/hello-cine и если вы назовёте проект ls — то он перезапишет /usr/bin/ls.
      Затем выполните fei build это соберет проект.
      Затем выполните sudo fei install pkgs/release.fpkg
      После чего просто выполните hello-cine. И ничего от рута делать не надо.
      И да в cine и в fei есть --help
      Пожалуйста как попробуете, напишите о результате. У меня и на реальной и на виртуальной машине всё отлично работало.


      1. Comdiv
        21.12.2019 22:53
        +1

        будет иметь путь /usr/bin/hello-cine и если вы назовёте проект ls — то он перезапишет /usr/bin/ls.
        Почему не в /opt/fei/bin или хотя бы /usr/local/bin?


        1. Taetricus Автор
          23.12.2019 13:11

          /usr/local/bin

          Забыл про него — исправлю.
          /opt/fei/bin

          Изначально так и было, но для fei install нужен sudo, а пути с которых sudo запускает программы, указаны в /etc/sudoers. Не менять этот файл.


          1. khim
            23.12.2019 20:04
            -1

            но для fei install нужен sudo
            Вы это сейчас всерьёз? Вы хотя бы понимаете, что эта идея явтоматически сокращает количество людей, которые могли бы в принципе задуматься над тем, чтобы для чего-то использовать ваше поделие раз в десять, если не в сто? Никакого sudo вы ни на iOS, ни на Android не получите. Как и возможности компилировать что-то во время установки (это прямо запрещено правилами AppStore, а в случае с Android — возможно, но очень проблемно).

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


          1. Comdiv
            23.12.2019 20:10

            Так сам fei можно установить в /usr/local/bin, а то, что он ставит — в его каталог


      1. Evir
        22.12.2019 08:51

        Это единственный вариант?
        Не то, чтобы я стремился попробовать, но просто звучит очень странно… Может, это потому, что у меня больше опыта по вебу, но у меня с моими «домашними поделками» до этапа установки никогда не доходило; на этапе экспериментов и дебага гораздо удобнее всё вызывать через ./, без задействования /usr/bin, /opt и прочих стандартных папок.


        1. Taetricus Автор
          23.12.2019 13:12

          К сожалению сейчас только так, потом добавлю возможность запуска без установки.


      1. worldmind
        23.12.2019 16:11
        +1

        Думаю лучше ставить в ~/.local/bin/ туда например ставить pip install --user без всяких sudo, и пусть к этой папке в убунте вроде по дефолту добавляется в юзерский PATH


  1. Panzerschrek
    21.12.2019 13:19

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


  1. JTG
    21.12.2019 14:21
    +2

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


  1. Dreamer_other
    21.12.2019 14:57
    +1

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

    for(IUpdatable entity : gameEntities)
    {
        entity.update(); //update - виртуальный
    }
    

    Как такое реализуется на cine?
    Являются ли в вашем языке функции объектами первого класса? Возможно ли писать в функциональном стиле с map и filter? Можно ли хранить ссылки на функции в объектах?


    1. Taetricus Автор
      21.12.2019 22:28
      -1

      А как у вас реализуется полиморфизм времени выполнения

      диспетчеризация методов всегда происходит статически

      виртуальных методах

      Язык не ООП, а функционально процедурный.
      Как такое реализуется на cine?

      Мягко и шелковисто — никак. Но с помощью костылей можно. Связанно это с тем, что в слайсах могут быть элементы только одного конкретного типа, но есть тип Fluid, который аналог гошного interface{}.
      Являются ли в вашем языке функции объектами первого класса?

      Да.
      Возможно ли писать в функциональном стиле с map и filter?

      Да, в стандартной библиотеке есть map — вот сдесь, а про filter я забыл, пометил себе, что нужно написать.
      Можно ли хранить ссылки на функции в объектах?

      Можно.


      1. Dreamer_other
        22.12.2019 00:00
        +2

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

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

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


        1. Evir
          22.12.2019 08:56

          Еще такой момент, я правильно понимаю, что в собранном exe будет присутствовать исходник сконвертированный в С?
          Нет, как я понял (и выше получил подтверждение от автора) – в Вашей терминологии правильнее было бы сказать, что исходный код программы на C будет в setup.exe.
          Вы не думаете, что таким образом сложно защитить свой код от взлома или исследования, если это требуется?
          Скорее невозможно; если, конечно, не удастся как-то мощно обфусцировать тот C-код, который будет сгенерирован для установки.


          1. Taetricus Автор
            23.12.2019 13:22

            Нет, как я понял (и выше получил подтверждение от автора) – в Вашей терминологии правильнее было бы сказать, что исходный код программы на C будет в setup.exe
            Вы возможно меня меня неправильно поняли(или я сейчас вас неправильно понимаю). Программы на cine распространяются в виде fpkg пакетов, которые можно даже текстовым редактором открыть и увидеть Си код. А на машине конечного пользователя, программа fei скомпилирует Си код в бинарник.


        1. Taetricus Автор
          23.12.2019 13:17

          А замыкания и лямбда-функции

          лябда — будут, замыкания нет.
          собранном exe

          в fpkg(не исполняемый)
          будет присутствовать исходник сконвертированный в С? Вы не думаете, что таким образом сложно защитить свой код от взлома или исследования, если это требуется?

          Я выступаю за open source. К тому же легко может написать обфускатор.


          1. Dreamer_other
            23.12.2019 19:21
            +2

            Я выступаю за open source. К тому же легко может написать обфускатор.

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


  1. KvanTTT
    21.12.2019 19:11

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

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


    1. Taetricus Автор
      21.12.2019 22:44
      -4

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


      1. wentout
        22.12.2019 00:59
        +2

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


        1. Taetricus Автор
          23.12.2019 13:58
          -3

          Про числа — никаких подробностей.

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

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

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


          1. Vitter
            23.12.2019 23:38
            +1

            числа даже не патентируются, поэтому заработать на них нереально сложно.
            А судя по вашей бизнесс-жилке (а судя по вытаскиванию денег у жуликов она у вас таки есть) можно с ними делать лишь одно — тайно (не открывая подробностей) создать НУЖНУЮ нейронку и продавать результаты её работы. Правда, ключевое слово «нужную».


          1. KvanTTT
            24.12.2019 00:16
            +1

            Верно: идею невозможно запатентовать.


            Фразочки про 100% попахивают дешевой рекламой.


            1. stilic
              24.12.2019 10:19
              -2

              Верно: идею невозможно запатентовать.

              Серьезно?
              habr.com/en/post/288364
              Apple таки получила патент на прямоугольник со скруглёнными уголками


      1. zaiats_2k
        23.12.2019 21:00
        +2

        1. KvanTTT
          23.12.2019 21:43
          +1

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


          P.S. Есть еще интересные и другие расширения: дуальные числа, сюррельные числа. Кроме того, существуют числовые системы, в которых можно измерять бесконечности: Порядковое число.


  1. TaF
    21.12.2019 22:28
    -5

    Ребята, не надо критиковать. Кто из нас не хотел сделать нечто подобное?
    Завидуйте молча))


    1. wentout
      22.12.2019 00:50
      +2

      Критика нужна, особенно конструктивная.
      Очевидно очень талантливый парень в глуши сидел, мира не видел, ни с кем толком не общался, писал «гениальную идею» много лет. Он или начнёт воспринимать нас всерьёз или уйдёт ещё больше в изоляцию. Первое, вроде бы как, — предпочтительней, — мы же тут, как бы, человеколюбивые, и всё такое… А ты бы хотел на его месте, чтобы тебя троллили, а ты только потом когда-нибудь понял, что это был такой «тонкий троллинг»?
      «Специалисту» покажись? циник… ;^)


  1. tsukanov-as
    21.12.2019 22:29
    -1

    Автор, продолжай делать то что делаешь. Борись до конца.

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


  1. 5e2d
    21.12.2019 22:29
    -2

    Автор, на самом деле, Вы – молодец! И никого не слушайте, особенно всяких «мамкиных» критиков (они просто не могут в одиночку реализовать большой проект, вот и завидуют), обращайте внимание только на критику по существу, а её пока что не так много.
    Судя по материалам, размещенным на github, язык у Вас (на мой взгляд) действительно получился весьма простым, красивым и практичным.

    Также возьму на себя смелость дать Вам ряд рекомендаций:

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

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

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

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

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

    Удачи и успехов!


    1. Taetricus Автор
      21.12.2019 22:33
      -2

      Обязательно напишите обучающие материалы

      уже делаю
      как можно более подробные и примерами

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

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

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

      Мне кажется это лишним, я никогда сам на них не был и даже примерно не понимаю, что там происходит.
      Удачи и успехов!

      Спасибо.


  1. caporegim
    21.12.2019 22:34
    +1

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


    1. khim
      21.12.2019 23:36
      +1

      Ну Перельман хоть сделал что-то, что реально кому-то помогло. Тут же очередная TempleOS с вероятностью 99%. Ну то есть история «как угробить свою жизнь без водки и наркотиков».

      P.S. Буду рад ошибиться, конечно… но пока симптомы не очень обнадёживают…


      1. L3333437
        24.12.2019 11:49

        Насчет вас например все понятно.


  1. codefather-labs
    21.12.2019 22:34
    -1

    Статья очень классная. Очень лампово. Спасибо. Читал с удовольствием


  1. d3n-nc
    21.12.2019 22:34
    -1

    Ура! Теперь можно на этом языке написать наикрутейший CineOsCineNginxCineRedisCinePostgresql!


  1. foxiko
    21.12.2019 22:34

    Вам бы в репозиторий побольше информации добавить…


    1. Taetricus Автор
      21.12.2019 22:36
      -1

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


  1. chvv
    21.12.2019 22:36

    Тяжело читать такого рода текст, это посильнее Джокера будет.

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

    В нормальном социальном обществе (точно пока не в Белорусии и не в России) таким людям, как автор, оказали бы первичную помощь, поместили бы в условия с нормальным питанием, комфортным существованием, психологической и психиатрической поддержкой. Дали бы возможность заниматься тем, что ему нравится (изобретение ЯП) и мягко бы выправляли психологические травмы. Возможно, через какое-то время он бы действительно смог бы социализироваться настолько, чтобы найти удаленную работу программиста.

    На текущем уровне это просто невозможно.

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

    Грустно, и не вижу что можно сделать в такой ситуации.
    PS: А начинали мы с ним одинаково, со Спектрума, Бейсика и Турбопаскаля.


    1. Taetricus Автор
      21.12.2019 22:42
      -2

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

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


      1. chvv
        22.12.2019 00:13
        +1

        Извините, я не хотел вас обидеть ни в коем разе.

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

        Приношу свои искренние извинения! И, разумеется, желаю вам всего самого хорошего!


        1. Taetricus Автор
          23.12.2019 14:39
          -1

          Извините, я не хотел вас обидеть ни в коем разе.

          Вы меня не обидели, просто из-за большого количества комментариев которые говорят о мне чушь я был зол. И я не говорю, что все комментарии критикующие меня — чушь, вовсе нет. Просто люди прочитав мою статью по которой можно крайне поверхностно понять кто я, но люди начинают мнить себя великими философами и психологами и начинают писать откровенную чушь. Люди пишут «Он не сможет работать в коллективе». У меня было 13 работ, на многих у меня были коллективы, я прекрасно в них вписывался, общался с коллегами даже после работы. А иногда бывают такие «самородки» которые пишут, что если бы я работал программистом, то впаривал бы тимлиду, что нужно использовать мой язык на работе. Я даже не могу понять с чего нужно начать думать, чтобы додуматься до такого бреда. Ну самый шик это фразы типа «Хотел бы найти работу — нашёл», очень хотел, искал, в статье только два примера на которые по моему мнению я подошел бы 100%, а были десятки попыток устроится на вакансии где я свои возможности оценивал гораздо ниже. Многие живут своей жизнью и проецирую её на меня, они не знают, что такое заплатить за коммуналку и денег остается только на еду, они не знают взгляда работодателя когда он видит много записей в трудовой, они не видели лица работодателя когда он доходит до строчки грузчик в трудовой. Ну и на последок, человек прочитал статью и написал мне в личку о том, что ему кажется, что мы очень похожи и нам есть, что обсудить. Он написал о себе несколько фактов, прочитав которые мне показалось, что мы не очень похожи и я написал несколько фактов о себе, после которых он мне больше не писал.
          P.S. Если вы прочитав статью представили какого то человека, вы должны знать, что это не я. И даже на него не похож.


    1. khim
      21.12.2019 23:40
      -1

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

      Грустно, и не вижу что можно сделать в такой ситуации.
      Такие истории — они всегда так устроены: вроде как и хочешь помочь… но совершенно неясно как.


      1. chvv
        21.12.2019 23:57

        Нам ближе, мне кажется, скандинавские страны.
        В штатах много чего «не слава богу».


        1. stilic
          24.12.2019 12:06
          -2

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


          1. Whuthering
            24.12.2019 12:41
            +2

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

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


          1. worldmind
            24.12.2019 12:55
            +1

            Вам платят за распространение басен?


      1. S-e-n
        22.12.2019 00:13

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


        1. chvv
          22.12.2019 00:21

          Ну если кто из Белоруссии взвалит на себя этот крест. Или хотя бы попробует.
          Тут нужно личное общение, не через форум.


          1. S-e-n
            22.12.2019 00:34

            Так ему уже предлагают, судя по комментам, т.е. нашлись люди.

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


            1. chvv
              22.12.2019 02:28
              +1

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

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


    1. L3333437
      24.12.2019 11:53

      Доктор, предъявите сперва свою справку.


  1. Zar13st
    21.12.2019 23:27
    +1

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


    1. Taetricus Автор
      21.12.2019 23:28
      -1

      В-общем я совсем не понимаю автора в его желании жить на гроши в жопе мира

      Нет такого желания


      1. PsyHaSTe
        21.12.2019 23:57
        +1

        Ну так вы же ничего не предпринимаете чтобы это поменять. Значит вас всё устраивает.


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


        Хорошая статья с правильным посылом: вы там где вы хотите быть. Ваши действия правдивее ваших слов.


        1. vaplite
          22.12.2019 06:44

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


        1. Taetricus Автор
          23.12.2019 14:49

          Ну так вы же ничего не предпринимаете чтобы это поменять. Значит вас всё устраивает.

          Я устал отвечать на бредовые комментарии поэтому вот — https://habr.com/ru/post/481276/#comment_21050484


  1. wentout
    22.12.2019 01:51
    -2

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

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

    Вопрос: можешь ли ты переписать свой Transpiler так, чтобы его можно было исполнять в VM в JavaScript (Node.js или Браузер — не суть), или же, что может быть намного лучше — для TypeScript?

    Видишь ли, Deno уже на подходе, а значит VM на Rust очень скоро поедет у кого-нибудь в Prod…
    С~C++ — это сложная и многоликая аудитория, они могут всё, и даже больше чем хотят. Пока ты учил компиляторы, многие остальные люди учили «популярность», «маркетинг» и прочие странные нам, инженерам, вещи.

    В мире много языков программирования, и ещё один язык общего назначения нужен мало кому. В мире JavaScript народ попроще будет, да и народа намного больше. Банальнальная статистика подсказывает, что вероятность, что кому-нибудь понравится твоё видение прекрасного, увы, намного выше, чем то, как оно может быть использовано сейчас. Заодно профессию получишь, востребованную, сразу, сходу. Не знаю, стал ли бы я на твоём месте «играться», в эту подмену «чистого искусства» на бытовые радости, и стоит ли эта игра свеч в принципе, но почему бы не попробовать? Умение добиваться поставленных целей, ответственность и собственный взгляд на искусство программирования могли бы быть приятным дополнением к, например, такой строке в резюме: «написал свой транспайлер в TypeScript т.к. мне хотелось писать на мной созданном языке» — это сразу покажет людям уровень твоей квалификации. И хоть скорее всего это не будет не так сложно и возвышенно, как создание собственного компилятора, но, по крайней мере людям будет понятно с кем они имеют дело, и почему он уверен, что заслуживает внимания и прочее, тому подобное, коммуникабельное и измеримое.


    1. chvv
      22.12.2019 02:43

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


      1. wentout
        22.12.2019 02:47
        -1

        Не знаю, мне всё равно, лишь бы автор прочёл.
        Но, всё же, может быть потому, что не верят :)
        Хотя, что правда, то правда, на LLVM ничего не собирал, и на С~C++ не пишу.


    1. khim
      22.12.2019 15:36
      -1

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

      Если специально — так тем более обидно: такие мозги — да в мирных бы целях…


    1. Taetricus Автор
      23.12.2019 14:57

      Вопрос: можешь ли ты переписать свой Transpiler так, чтобы его можно было исполнять в VM в JavaScript (Node.js или Браузер — не суть), или же, что может быть намного лучше — для TypeScript?
      Нет такой цели, но Си можно компилить в WASM.
      В мире JavaScript народ попроще будет
      Сколько я не видел каких либо интервью JS-никами, у меня всегда складывается впечатление, что они вообще не смотря в сторону других языков.


  1. Dreamer_other
    22.12.2019 02:03

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

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


    1. wentout
      22.12.2019 02:17
      -1

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


  1. Evir
    22.12.2019 09:29
    -1

    Вообще, складывается ощущение, что сейчас (12 назад этого ещё не было в достаточном виде) можно было бы реализовать cine/fei как надстройку над Nim.
    Сборка в C – есть (см. compileToC/compileToCpp), возможность сделать собственные кастомные операторы – есть (":", ":=", ".=" и собственную вариацию "."); есть куча вариантов макросов во всех вариациях, в том числе и уровня работы с AST, когда можно в compile-time блок кода как угодно с ног на голову переворачивать. Опять же, есть условная компиляция через when, так что если устанавливать через пакет Nim-кода вместо C-кода – можно так же избежать попадания ненужного кода в итоговый бинарник.


  1. RationalBot
    22.12.2019 13:01

    Грустная история…
    «Стратегия без тактики — это самый медленный путь к победе. Тактика без стратегии — это просто суета перед поражением.“ — Сунь Цзы.

    Александр, я бы посоветовал миссию с ЯП считать выполненной, поставить жизненную цель и идти к ней с тем же упорством.
    Чем больше времени уходит, тем меньше шансов устроиться на любую квалифицированную работу.
    Даже если вы доведете свой проект до совершенства, ни одна вменяемая организация не предложит вам работу программистом.
    Я не HR, но отсею по резюме. И не из-за отсутствия высшего образования, а из-за недостатка требуемых компетенций для решения производственных задач. Даже если дойдете до этапа технического интервью, то шансы прости его успешно не очень большие.
    Несколько замечаний по самому проекту.
    То, что оно транслируется в С, не делает программы заведомо эффективными.
    Скажем, тривиальный hello world транслируется в 30 КБ кода на С (вместо 60 байт). И результирующий бинарник получается в 3 раза больше.
    Бенчмарк идиотский, конечно, но других пока нет.
    standart-test генерирует код, который не собирается (или собирается с 1799 варнингами после магии с ключами компиляции). Причем, размер С файла уже под 2.5 МБ. Оно точно будет быстро?
    В чем магия пакаджей и fei я просто не понял. Почему бы просто не генерить С и make файлы для clang, зачем это в один файл сливать? По крайней мере, на данном этапе?
    Баг: если в программе только инлайн С, то она не собирается (выше пример про printf), если потом добавить вызов printLn, то собирается.
    Совет про сравнение с NumPy — очень правильный. Никто же не требует, чтобы оно сходу было быстрее, но база для сравнения должна быть?


    1. Taetricus Автор
      23.12.2019 15:23
      -1

      поставить жизненную цель и идти к ней с тем же упорством.

      Она есть уже давно. (Не cine)
      То, что оно транслируется в С, не делает программы заведомо эффективными.

      Это очевидно.
      Скажем, тривиальный hello world транслируется в 30 КБ кода на С (вместо 60 байт). И результирующий бинарник получается в 3 раза больше.

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

      Надо глянуть, у меня вроде всё нормально.
      Причем, размер С файла уже под 2.5 МБ.

      Повторюсь, размер бинарника не влияет на производительность.
      В чем магия пакаджей и fei я просто не понял. Почему бы просто не генерить С и make файлы для clang, зачем это в один файл сливать? По крайней мере, на данном этапе?

      И в статье и в комментариях указанно неоднократно, fei при установке пакета спросит вопросы, ответы на которые влияют на сборку. Просто ни fei ни cine — не спрашивают ничего.
      если в программе только инлайн С, то она не собирается (выше пример про printf), если потом добавить вызов printLn, то собирается.
      Проверю.


      1. rpiontik
        23.12.2019 21:51

        Она есть уже давно. (Не cine)

        Интересно — какова она?


  1. berqman
    22.12.2019 20:32
    -2

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

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

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

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

    У многих из вас хватило бы терпения потратить столько времени на реализацию своего проекта? Очень сомневаюсь.

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


    1. chvv
      23.12.2019 10:51

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

      Сейчас совсем другие времена.

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

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

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

      Автор некоторое время проживал совсем в скотских условиях.

      Автор не может устроится на работу по специальности.

      Автора такая ситуация не вполне устраивает.

      Видимо, но это неточно, у автора отсутствуют люди, с которыми он может коммуницировать.

      И, судя по комментариям более разбирающихся людей, чем я, автор, к сожалению, далеко не Перельман. Что будет с таким человеком через 5-10 лет — большой вопрос.

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

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


  1. perfect_genius
    23.12.2019 00:01
    -1

    Очередной язык одиночки, очередное сопротивление народа — значит, с людьми всё в порядке.
    Я тоже такой же романтик, у меня тоже был юношеский максимализм, тоже работаю не по специальности (завод, общепит, склад), тоже поздно сел за ПК, и даже возраст тот же. Свой язык делаю почти 10 лет и конец только наметился, а вы уже «релизнулись», поздравляю. Не все доходят до этого.
    Но вы поторопились рассказать историю создания, будто язык уже стал успешным-известным. Ну хоть в комментариях попытались раскрыть особенности языка. Если упор на SIMD остался, то как думаете, почему другие тоже не додумались включать его? Разве процессоров без него достаточно много?

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


    1. Taetricus Автор
      23.12.2019 15:39

      Если упор на SIMD остался, то как думаете, почему другие тоже не додумались включать его? Разве процессоров без него достаточно много?
      Потому что со временем стала более популярна jit и aot компиляция, которая решает проблему.
      Отсутствие пробела перед открывающей скобкой — это у вас профдеформация?
      Всегда ставил, а во время написания статьи, почему то перестал.
      С чем могли бы вам помочь другие, кроме поиска багов?

      Ну очевидно, когда будут написаны туториалы. С написанием модулей для языка. Написании тестов, там где их не хватает. Написание программ на cine.
      Или всё хотите делать сами?

      Ни капли.
      Ну и важный вопрос на случай, если вдруг ваш язык таки выстрелит — как на русском звучит название языка? :)

      Я произношу как кайн. Очень похоже произносит слово kine google translate если выбрать английски.


  1. worldmind
    23.12.2019 15:07
    +1

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


    1. worldmind
      23.12.2019 16:17
      +2

      Но настойчивость должна помочь.


    1. worldmind
      23.12.2019 16:22

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


  1. erdemus
    23.12.2019 15:26

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


    1. Taetricus Автор
      23.12.2019 15:41
      -2

      А расскажите, как с вашим опытом юниксов мимо вас прошла профессия сисадмина?

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


      1. F0iL
        23.12.2019 21:21
        +4

        У меня нет принтера я не умею с ними работать, то же со сканером.
        Простите, что? Обслуживание принтеров и сканеров — это работа эникейщика, а не сисадмина.


  1. serge-sb
    23.12.2019 18:34
    +1

    Внимательно прочитал [почти] все комменты, и у меня только один (в сущности) вопрос. Если я правильно всё понял, то программы на вашем языке «дособираются» уже на конечном компьютере перед установкой? Значит про portable-версии программ можно забыть? Как вообще происходит синхронизация исполняемого кода с железом, на котором код запускается? Или подразумевается, что аппаратная конфигурация компьютера неизменна?


  1. Whuthering
    23.12.2019 22:11
    +3

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

    1. Спрос на программистов сейчас огромен, в том числе и в Беларуси. Мидлы и синьоры нарасхват, джуниоры нужны меньше, но есть важный нюанс — по сравнению с большинством джунов, у вас в результате работы над своим творением есть какие-никакие (а скорее даже весьма ощутимые) знания computer science, понимание структур данных и алгоритмов (опыт их использования и изобретения новых), понимание работы ОС и компиляторов, живое представление об особенностях языков программирования и парадигм, хорошее знание Linux-систем в конце концов. И это очень и очень большой плюс вам по сравнению с конкурентами.

    2. Советую для старта выбрать какой-нибудь очень мейнстримовый стек, типа Java, C#, JS, Python, C++ — что больше понравится. Go, про который вы говорили — тоже ок, но «мейнстримом» я бы его не назвал, потому что позиций по нему гораздо меньше, чем по перечисленным выше языкам. А «количество вакансий» в вашем случае очень важно, потом объясню почему.
    По выбранному языку берете книги или онлайн-курсы и натаскиваетесь на базовый уровень — просто чтобы уверенно отвечать на вопросы на собеседованиях, когда до них дойдет дело.

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

    4. Составьте хорошее резюме. Инструкций в интернете навалом. В вашем случае важно акцентировать внимание не на том, чего у вас нет, а на том, что у вас есть. Места работы оставьте хоть сколь-нибудь связанные с IT, ничего страшного, если это будет список всего на половину страницы. Еще половина страницы — общая информация о себе (как зовут, сколько лет, где живешь, колледж/лицей где учился), еще половина — краткое описание вашего детища-компилятора, причем непосредственно на описание можно потратить 1-2 абзаца (и дать ссылку на гитхаб и блог, если вдруг заинтересуются), а остальное — перечисление или ключевые слова, что из общеизвестных инструментов вы использовали для разработки своего творения (в том числе и старых версий) — Go, LLVM, Linux, другие библиотеки и инструменты, можно 1-2 слова для каждого пункта о том, как именно и для чего именно, туда же можно дописать какие алгоритмы и структуры данных вам пришлось использовать и имплементировать (все что сложнее стандартных сортировок и поисков). Цель этого — чтобы человек, читающий ваше резюме зацепился за знакомые слова, и понял, что ему будет о чем с вами поговорить на равных.
    Как сделаете резюме, обязательно отправьте его на ревью кому-нибудь уже давно работающему в отрасли разработки ПО, лучше нескольким людям, и отредактируйте исходя из обратной связи. В крайнем случае мне в личку скиньте, чем смогу помогу.

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

    6. «Будьте в струе», как говорится. Вполне возможно, что «варясь в собственном соку» вы упустили огромную часть современного IT-мира. Выше вон, например, говоря про работу сисадминов вы упомянули принтеры и сканеры — ну это же вообще дичь какая-то :) Читайте профессиональные ресурсы и форумы, именно не про языки и технологии, а «о жизни», например упомянутый dev.by, читайте хабы «Карьера в IT» и «Учебный процесс в IT» на Хабре, смотрите видео с митапов и конференций, как по интересующим вам языкам и технологиям, так и просто, например, о командной работе, методологиях разработки, о тестировании, о CI, и т.д.

    7. Будьте упорным. Позиция, что вы описали «я подавался в несколько мест, в одном мне отказали так, в другом вообще не ответили, все тлен» — абсолютно провальная. Не получилось с одними — получится с другими. Выбираете 20 компаний, подаетесь на позиции. Отказали, проигнорировали? Выбираете следущие 50. И так далее. Чем больше у вас есть вариантов, тем лучше. Упорство, массовый перебор всех вариантов, долбление даже казалось бы в закрытые двери — рано или поздно наткнетесь на то, что сработает. И это самый важный пункт.

    8. Если вам отказали — просите фидбэк. Большинство промолчат, но некоторые ответят, и этот ответ может оказаться очень ценным.

    9. И еще, если в описании вакансии в требованиях написано «высшее образование» — подавайтесь на нее все равно. Если по списку технических требований вы попадаете хотя бы на 50% того, что написано — подавайтесь без сомнений. Очень часто список требований в опиании означает не «обязательно», а «неплохо бы».

    Удачи.