Создание своего языка программирования | Компилятор LLVM IR, NASM

Поділитися
Вставка
  • Опубліковано 12 січ 2025

КОМЕНТАРІ • 28

  • @Kai41k
    @Kai41k День тому +6

    Пишешь такой мвой язык программирования, написал, а потом такой, о, теперь я напишу свою операционную систему, на своём же языке 😄

    • @random_company
      @random_company 7 годин тому +1

      А я ведь так и сделаю, правду первую низкоуровневую часть кода написал на чистом C и GAS с NASM, GAS отвечает за загрузку операционной системы, за все остальное NASM и C, более высокоуровневые вещи буду писать на RL ( мой компилируемый объектно ориентированный язык программирования ), драйвера буду писать также на C, визуальный движок я буду писать также на RL, я решил использовать веб - дизайн для визуального движка, т.к будет html, css и rl файлы, я думаю в веб дизайне будущее, можете посмотреть что получилось за неспешную работу за лето в одном шортсе)

  • @yashenkin
    @yashenkin День тому +3

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

  • @Dranrel
    @Dranrel 13 годин тому +1

    Написание чего-то своего - это почти всегда и самое лучшее, что ты можешь начать делать и самое разочаровывающее, когда все не получается сразу, сходу или если ты не видишь бесконечных перспектив у своего детища.
    Ваша идея с "патч-языком" весьма интересна на уровне концепции.
    Любую часть кода можно изменить и если я правильно понял - изменить на лету, пересобрав нужную часть с учетом "патча".
    И если бы удалось сделать его "прозрачным" на "патчирование" - тогда вообще был бы шикос. Под прозрачностью я подразумеваю постоянный указатель на "точки" патча, сродни git diff.
    Если подобный язык сделать высокопроизводительным и легким - его вполне себе можно было бы взять на замену Lua, как основу для модинга и модификации БЕЗ изменения ядра продукта(что является частой проблемой, если быть честным).
    А если любое поведение программы можно было бы модифицировать и модифицировать "вложенно"(вносить патч в уже примененный патч) и откатывать целиком - это могло бы иметь успех, на мой взгляд, во фреймворках или движках.
    Весь вопрос только в том.... А есть ли у этого достаточные перпективы, чтобы как решить современные проблемы, так и стать хорошей заменой многим современным языкам?
    Думаю если бы вы смогли довести язык до рабочего состояния, хотя бы с минимумом жизненно-важных функций и попытались бы внедрить его в потенциально успешнный проект, то его может быть даже получиться сохранить на плаву и развивать через комьюнити.
    А под слоган взять "модификация без потери производительности, с минимумом кода"(чтобы попытаться привлеч как "задротов", так и "лентяев") :)

  • @kingmang_it
    @kingmang_it 12 годин тому +2

    Интересно получилось

  • @cavesalamander6308
    @cavesalamander6308 23 години тому

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

  • @sergeyb2823
    @sergeyb2823 21 годину тому

    В 90-х работал я в одной конторе и там чувак один тоже начал писать свой язык программирования. Я к нему ходил иногда подсматривал - там и операнды свои были, и синтаксис, и компилятор, всё по взрослому.. А потом его уволили. Я спросил у начальника - а почему уволили? Начальник ответил "потому что занимался хернёй".

  • @ИбрагимДринкерманн

    Писать свой ЯП это не самая дичь, полезно в принципе, если делать нефиг.

  • @grandlagging0zero175
    @grandlagging0zero175 14 годин тому +1

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

  • @АндрейГорабунков
    @АндрейГорабунков 2 дні тому +1

    Вау! Очень круто! Снимай еще, с меня лайк и подписка! Ты такой умный!

  • @АндрейМалышев-я3з
    @АндрейМалышев-я3з День тому +1

    Круто, продолжай!

  • @semyonivanov57
    @semyonivanov57 16 годин тому

    Это будет убийца жабаскрипта или си крест крест??

  • @CJSurv
    @CJSurv 19 годин тому +1

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

  • @PimPumSObaka
    @PimPumSObaka День тому

    Прикольно, я сам щас делаю свой язык на базе LLVM IR и с идеей поддержки C и разных фич из Раста и шарпа. Ток угарно видеть static class с static методами, который по факту то можно и в обычный класс переделать и странный концепт контекста, а не Stream в который просто пишешь данные и в случае ошибки просто Flush :) Как будешь реализовывать рантайм ошибки и ошибки компиляции? Сколько времени потратил на компилятор из конца видоса?

  • @el-purr
    @el-purr День тому +1

    Прикольно

  • @yashenkin
    @yashenkin День тому +1

    на вот ещё по LLVM материал
    ua-cam.com/video/yEdoXnEaMrw/v-deo.html

  • @Smalin777
    @Smalin777 13 годин тому

    Нихрена не понятно, но очень интересно.

  • @sib3546
    @sib3546 День тому

    О! тебе нужен HiASM 🤣

  • @zeganstyl
    @zeganstyl День тому

    С концепцией языка не очень понятно. Чем он будет отличатся от остальных? Лучше расскажи подробнее про Harmony, что это и как оно работает.

    • @gerodstudio
      @gerodstudio День тому +1

      Это просто идея, которая должна быть материальна в миг твоей карьеры. Зачем, для чего - неважно! Главное, что ты написал язык! Свой!

  • @Al_K_WIW
    @Al_K_WIW 3 дні тому +2

    Интересно, почему все пишут: "создаю свой ЯП", "создаю свою ОС", "создаю свою игру". И только бил гейтс говорил: "пишем ОС для всех".

    • @user-jd1mq8gg7e
      @user-jd1mq8gg7e День тому +5

      Потому что гейтс сам не писал ОС, а купил ее чтобы самому делать бабло

    • @Happy-Gappy
      @Happy-Gappy День тому +3

      Ты хоть видел что собой в итоге представляют все эти "свои ОС", "свой ЯП", "своя игра"? Вот, вот, и я о том же :) На Хабре я насчитал больше 8 топиков где кто то брался писать "свою ОС", но в итоге забрасывали это делать, потому что это очень даже сложно. А если кто то и делал до конца, то это не ОС была от слова совсем по сути своей. Потому что ОС, языки програмирования это достаточно непростая задача.

    • @bipolar-fox
      @bipolar-fox 10 годин тому +1

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

    • @random_company
      @random_company 6 годин тому +1

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

  • @ТимурШакиров-ж7в

    очень интересно, но ни фига не понятно.

  • @zxclyric_
    @zxclyric_ 3 дні тому

    Очень интересно