Нет ни капли, мне наоборот хотелось поделиться. К тому же почитайте вот этот комментарий, то, что там перечисленно это 1/1000 плохих вещей которые со мной происходили, я давно ничего не боюсь.
Я это понимаю. Но возможно, даже если язык не обретет популярности, какие-то фишки моего языка станут использовать в других языках, в cine есть много ново и интересного. В этом случае я не зря жизнь жил, ведь я сделал мир лучше чем он был до меня.
Я подумываю попробовать стать go backend разработчиком, знания и небольшой опыт go имеется(компилятор cine я переписывал с go + некогда были написаны несколько программ).
только за ней оказался редкий лесок с одиноким прудом
Я не совсем понял вашу метафору, но если вы имели в виду, что язык получился не очень, то вы пока не можете об этом судить. Хорошие знания этого языка в данный момент есть только у меня, на практике использовал его только я(переписав компилятор на cine). Разумеется я сужу предвзято, но мне язык очень понравился.
Но мне кажется, что твоя слабость в том, что ты чересчур увлекаешься деталями. ИМХО сейчас новые языки программирования мало кому нужны, если за плечами разработчиков не стоит крупная организация или сообщество.
Я это понимаю. Но возможно, даже если язык не обретет популярности, какие-то фишки моего языка станут использовать в других языках, в cine есть много ново и интересного. В этом случае я не зря жизнь жил, ведь я сделал мир лучше чем он был до меня.
Может стоит больше обсуждать с другими людьми для чего и что ты делаешь?
Если ты про жизнь, то как бы пафасно это не звучало, я очень необычный человек, со взглядами сильно отличающимися со взглядами 99.999% людей, советы других людей для меня зачастую не применимы, я в лет 15-20 прислушивался к советам, каждый раз разочаровывался результатом. Если ты про программирование, то в моём окружении есть только один человек умеющий программировать, но он самую малость программирует на PHP для WordPress, разница в нашем знании программирования — пропасть, он не понимает о чём я говорю.
У тебя очень хорошие способности в программировании, раз ты сумел столько всего выучить и использовать. Может тебе сконцентрироваться на поиске такой работы? Далеко не везде требуют образование. И в коллективе ты лучше начнешь видеть свои слепые пятна. А они есть у всех людей.
Я подумываю над этим, но здесь есть много нюансов.
Я питон изучал только ради любопытства, не знаю зачем его упомянул. Питон повлиял на меня только в том плане, что я понял то, что в моём языке динамической типизации точно не будет(мне она жутко не понравилась).
При чём тут язык? Перекомпиляция под платформу это не про язык, а про дистрибутивы и всё такое
Вот цитата из моего комментария:
Киллер-фичи языка и компилятора:
Здесь связка язык + компилятор.
Перекомпиляция под платформу это не про язык, а про дистрибутивы и всё такое, у конечного пользователя и компилятора-то может не был, ничего у него не скомпилируется.
Вы наверное не поняли суть, идея в том, что язык компилируется в промежуточной байт код (для этого в начале я использовал 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 простым языком, думаю не станет даже его самый преданный его поклонник. Так же не стоит забывать, что простота сильно влияет на скорость разработки.
При этом он бы получил знания по Lex & Yacc — это бы заняло меньше 12 лет точно.
Самая сложная часть компилятора — это превращение структур, полученных в результате парсинга, в код на: asm, llvm ir, c. Lex & Yacc не особо мне бы в этом помогли. А парсинг и структурирование исходных кодов я сделал за неделю, как говорится «без пап, мам, лексов и яков».
это рассказ о своей жизни программиста-самоучки из провинции без специального образования, или такой тонкий пятничный троллинг?
Это рассказ о том, как я создавал язык программирования, а истории из жизни приведены по тому, чтобы было понятно как я пришёл к тем или иным решениям, почему так долго и почему я не программист. Если бы я хотел писать о жизни, я бы не писал сюда, так как эта не тематика сайта, но даже если бы я писал, я бы упомянул совершенно другие факты, читайте вот этот комментарий.
Байт выпускался на заводе в Бресте, поэтому в Беларуси он и получил широкое распространение(у меня у нескольких соседей и у лучшего друга, то же был Байт) и если не ошибаюсь, эта книга по программированию была в комплекте.
Будете ли вы дорабатывать свой «автомобиль» или нет
Одназначно буду! Я не вижу хороших альтернатив моему языку(разве что Haskell + декларативное программирование, но такой код очень тяжело скомпилировать в эффективную программу, для этого надо в ghc влить больше денег, чем за всё время в JavaScript влили).
С другой стороны — вероятность того, что вы сможете на этом самодельном автомобиле или даже вашем языке заработать — равна нулю.
Я не пытаюсь на нем заработать, всё бесплатно и по лицензии gpl3 (стандартный модуль MIT).
Но если хотите найти работу — вам нужно, условно, стать слесарем. И как «самодельщик» может искренне считать что «Toyota, по сравнению с моим пепелацем, дерьмо»… при этом искренне… но зарабатывать на жизнь он будет дорабатывая и/или ремонтируя вот это вот «дерьмо»… в программировании — всё точно так же.
Я это понимал и когда создавал язык, я мог легко выучить мэйнстримовые технологии и найти работу, но на это нужно много времени, а я хотел закончить язык, а профиль на гитхаб с компилятором был бы большим плюсом в резюме. Я не плохо знаю go(и в том числе писал на нём многопоточное приложение), возможно выучу SQL и попробую поискать работу.
Я не пытаюсь никому ничего продать, я даю людям выбор, которого у меня не было.
ну был у меня один знакомый, который носился с идеей «идеальной клавиатуры». У меня даже где-то его драйвер и наклейки на клавиши есть… разумеется удалось его убедить в том, чтобы эту его клавиатуру использовать новно нуль человек за 20 лет.
Если бы не такие люди, которые придумывают и воплощают идеи, то мы бы до сих пор в лесу с копьями на лосей охотились.
Мне это было нужно, но никто не делал. Я решил, что раз никто не делает — сделаю сам. А поскольку результат превзошёл все мои ожидания, то если в текущем времени есть такие люди как я в то время, у них хотябы будет возможность использовать язык который им нравится.
Я рад за вас(без иронии), но у меня нет ни времени, ни денег. Да и смысла я уже особого не вижу, это статья не биография и 99% процентов важных событий в жизни не упомянута. За все время у меня было где-то 13 мест работы, 10 из них есть в трудовой. Примерно на 9 из 13 работ, когда я увольнялся, меня работодатели очень просили остаться и предлагали увеличение зп(я хороший работник, не пью не курю и очень ответственный), но я всё время уходил, поскольку ненавидел то, чем занимался, а смена работы на некоторое время заглушала ненависть. Из-за такого количества записей в трудовой, когда я устраиваюсь на работу, на меня смотрят как на прокажённого, сомневаюсь, что меня уже высшее образование поможет.
У человека не настолько высокая квалификация как он думает.
А как я думаю? Я не упомянул в статье о том, что я думаю на счёт своей квалификации. Не надо придумывать и гадать.
Отсюда и на работу не берут нормальную.
Одного работодателя не устроило то, что нет высшего образования, другой работодатель даже не стал проверять мою квалификацию. Повторюсь, не надо придумывать и гадать.
Дело не в том, что есть -msse2. Объясню на современном примере, поскольку sse2 сейчас активно используется. У меня зарплата 200$ / месяц и даже с такой зарплатой я смог позволить себе компьютер с процессором Ryzen 2200G. У этого процессора есть поддержка инструкций AVX2, а теперь вопрос: «В каком количестве программ, распространяемых автором через бинарники, есть поддержка AVX2?». Недавно была новость о том, что какой-то человек предложил в Fedora компилировать программы в репозитории с поддержкой AVX2, ему быстро объяснили что к чему. Я хотел создать язык, котрой похож на паскаль, но у которого слайсы вместо массивов и строк, кавычки вместо begin end и который компилируется в какое-то промежуточное представление, которое на машине конечного пользователя скомпилируется до конца с учетом того, есть ли у него поддержка тех или иных технологий. И вы меня не огорчите, потому такой подход всё ещё актуален(хотя и не так сильно как в те времена), а так же потому, что за 12 лет язык оброс такими фишками, сочетания которых я не вижу не в одном языке до сих пор. Самые основные я перечислил в этом комментарии.
Киллер-фичи языка и компилятора:
1 — Программы компилируются в код на Си, но код на Си компилируется на компьютере конечного пользователя с флагом '--march=native', который позволяет задействовать в программе инструкции процессора, которые не были бы задействованы при распространении обычного бинарника.
2 — При установке программ, конечному пользователю будут заданы вопросы. Во что скомпилируется код на Си, зависит от ответа на вопросы. Например: у пользователя можно спросить, что задействовать, opencl или cuda? И если пользователь выберет например opencl, то с большой вероятностью в бинарнике даже упоминания о cuda не будет.
3 — поскольку язык изначально заточен под создание производительных приложений, а так же учитывая два выше приведенных пункта, программы на cine(если в него вложить столько сил, сколько вложенно в раст) могут оказаться самыми производительными, среди других программ написанных в той же манере, но на других языках.
4 — Язык чертовски прост(даже проще go).
5 — В языке нет ссылок и множества проблем, которые из-за них возникают.
6 — На уровне языка(но не программ) незвозможно изменяя один объект, изменить другой объект. А у меня это самая частая ошибка.
Спасибо.
Я подумываю попробовать стать go backend разработчиком, знания и небольшой опыт go имеется(компилятор cine я переписывал с go + некогда были написаны несколько программ).
Спасибо за приятный комментарий.
Я не совсем понял вашу метафору, но если вы имели в виду, что язык получился не очень, то вы пока не можете об этом судить. Хорошие знания этого языка в данный момент есть только у меня, на практике использовал его только я(переписав компилятор на cine). Разумеется я сужу предвзято, но мне язык очень понравился.
Я это понимаю. Но возможно, даже если язык не обретет популярности, какие-то фишки моего языка станут использовать в других языках, в cine есть много ново и интересного. В этом случае я не зря жизнь жил, ведь я сделал мир лучше чем он был до меня.
Если ты про жизнь, то как бы пафасно это не звучало, я очень необычный человек, со взглядами сильно отличающимися со взглядами 99.999% людей, советы других людей для меня зачастую не применимы, я в лет 15-20 прислушивался к советам, каждый раз разочаровывался результатом. Если ты про программирование, то в моём окружении есть только один человек умеющий программировать, но он самую малость программирует на PHP для WordPress, разница в нашем знании программирования — пропасть, он не понимает о чём я говорю.
Я подумываю над этим, но здесь есть много нюансов.
Спасибо.
Вот цитата из моего комментария:
Здесь связка язык + компилятор.
Вы наверное не поняли суть, идея в том, что язык компилируется в промежуточной байт код (для этого в начале я использовал FASM, затем LLVM IR, затем Си), а затем этот байт код компилируется в исполняемый файл, но перед компиляцией пользователю задаются вопросы и в зависимости от ответов, будет генерировать разный код. И такой подход, это дефолтный способ распространения программ на cine, т.е. фактически этот промежуточный байт код с вопросами и должен распространятся. Если вы правильно поняли, то почему при установке приложений на rust(я такие использую), они меня не спрашивают, что использовать: alsa или pulseaudio?, X Org или Wayland?, а тупо устанавливаются бинарником(ELF)? Я понимаю, что это можно сделать с помощью создания настроек, но в cine эти настройки можно указывать при установке и в бинарнике не будет даже упоминания неиспользуемой технологии. Неговоря о том, что сейчас при компиляция бинарных сборок программ, даже AVX2 не принято использовать, а в cine хоть AVX512 вставляй, просто при установке если они явно буду использоваться(например с помощью аттрибута типа vector_size) их пользователь сможет отключить при установке, а если неявно(например при векторизации циклов), то clang сам разберётся какие инструкции ему использовать. А на счёт того, что что у пользователя не будет компилятора, так для программа использующих .NET Framework тоже раньше нужно было устанавливать дополнительное ПО, а игры для которых нужен Direct X?, а программы для Java?
И что? Когда раст был теорией C++ уже был и что, автору раста нужно было его не создавать?
Пока в языке нет поддержки многопоточности, но особенности языка позволяют запускать потоки, не используя мутексы(в языке, внутри программы они будут), и не боясь одновременного обращения для записи и чтения(это не возможно из-за особенностей языка) и я уже сейчас знаю как это всё реализовать.
Ничего из этого. Все объекты рассматриваются как значения, т.е.
Cine решает много проблем, которые решает и Rust, но они решают эти проблемы разными способами. Но благородя тем способам которые использует Cine, язык может решать эти проблемы оставаясь простым, назвать Rust простым языком, думаю не станет даже его самый преданный его поклонник. Так же не стоит забывать, что простота сильно влияет на скорость разработки.
Самая сложная часть компилятора — это превращение структур, полученных в результате парсинга, в код на: asm, llvm ir, c. Lex & Yacc не особо мне бы в этом помогли. А парсинг и структурирование исходных кодов я сделал за неделю, как говорится «без пап, мам, лексов и яков».
Это рассказ о том, как я создавал язык программирования, а истории из жизни приведены по тому, чтобы было понятно как я пришёл к тем или иным решениям, почему так долго и почему я не программист. Если бы я хотел писать о жизни, я бы не писал сюда, так как эта не тематика сайта, но даже если бы я писал, я бы упомянул совершенно другие факты, читайте вот этот комментарий.
Одназначно буду! Я не вижу хороших альтернатив моему языку(разве что Haskell + декларативное программирование, но такой код очень тяжело скомпилировать в эффективную программу, для этого надо в ghc влить больше денег, чем за всё время в JavaScript влили).
Я не пытаюсь на нем заработать, всё бесплатно и по лицензии gpl3 (стандартный модуль MIT).
Я это понимал и когда создавал язык, я мог легко выучить мэйнстримовые технологии и найти работу, но на это нужно много времени, а я хотел закончить язык, а профиль на гитхаб с компилятором был бы большим плюсом в резюме. Я не плохо знаю go(и в том числе писал на нём многопоточное приложение), возможно выучу SQL и попробую поискать работу.
Я не пытаюсь никому ничего продать, я даю людям выбор, которого у меня не было.
Если бы не такие люди, которые придумывают и воплощают идеи, то мы бы до сих пор в лесу с копьями на лосей охотились.
Мне это было нужно, но никто не делал. Я решил, что раз никто не делает — сделаю сам. А поскольку результат превзошёл все мои ожидания, то если в текущем времени есть такие люди как я в то время, у них хотябы будет возможность использовать язык который им нравится.
Киллер-фичи языка и компилятора:
1 — Программы компилируются в код на Си, но код на Си компилируется на компьютере конечного пользователя с флагом '--march=native', который позволяет задействовать в программе инструкции процессора, которые не были бы задействованы при распространении обычного бинарника.
2 — При установке программ, конечному пользователю будут заданы вопросы. Во что скомпилируется код на Си, зависит от ответа на вопросы. Например: у пользователя можно спросить, что задействовать, opencl или cuda? И если пользователь выберет например opencl, то с большой вероятностью в бинарнике даже упоминания о cuda не будет.
3 — поскольку язык изначально заточен под создание производительных приложений, а так же учитывая два выше приведенных пункта, программы на cine(если в него вложить столько сил, сколько вложенно в раст) могут оказаться самыми производительными, среди других программ написанных в той же манере, но на других языках.
4 — Язык чертовски прост(даже проще go).
5 — В языке нет ссылок и множества проблем, которые из-за них возникают.
6 — На уровне языка(но не программ) незвозможно изменяя один объект, изменить другой объект. А у меня это самая частая ошибка.