1:37. Разница между двумя строками в том, что верхняя хардкодится в исходник по адресу, а нижняя подменяет все a, которые появятся дальше по коду на 5.
@@IT_Shkolnik это же препроцессор... он конкретно подменяет во время работы дериктивы и их упоминания на результат. То есть все инклюды буквально компонуют несколько файлов в 1 перед обработкой остальной частью компилятора.
Боже мой, парень, ты просто невероятно хорош! Когда смотришь твои видео, понимаешь что нет ничего невозможного) Спасибо тебе огромное и удачи в развитии канала🔥
1:01 Препроцессор - программа, которая выполняет предобработку кода. Библиотеки подключает, раз уж на то пошло, линковщик, который связывает символы из разных объектных файлов
@@IT_Shkolnik и не только! Препроцессор - это первая стадия компиляции. Препроцессор не занимается тем, чтобы подключать файлы. Команды препроцессора в C: #if - как if, только обрабатывается препроцессором. #else - как else, только выполняется препроцессором. #ifdef - если объявлен макрос N выполняет действие. #ifndef - если не объявлен макрос N выполняет действие. #endif - конец if блоков выше #define - объявляет макрос. #undef - удалить макрос созданный #define #include - включает файл в программу. Круто, что ты увлекаешься C(это мой любимый язык). Удачи в создании новых проектов. Советую почитать какую-нибудь хорошую книгу или статьи о C, чтобы лучше понять, как там всë устроено.
Препроцессор не "подключает" библиотеки. Препроцессор обрабатывает макросы. В частности команда #include означает, что препроцессор должен вместо этой строчки вставить содержимое файла. В заголовочных файлах (внезапно!) находятся только заголовки. А непосредственно "подключение" (правильнее сказать "связывание") скомпилированных объектных файлов осуществляет линковщик. P.S. В заголовочных файлах писать код можно, но оправданно оно только в случае написания глобальных шаблонных функций или классов на языке С++.
Так то по общему определению препроцессор просто обрабатывает текст программы в другой текст программы, заместь тех же инклудов ставит текст заголовка, а заместь названий констант - их значения. Можно вообще в константы целые строки кода записывать насколько я помню
6:53 Да это прям блюпринты в Unreal Engine. Они также работают. А вообще, у меня давно была похожая идея сделать такой компилятор, но как-то руки не доходят.
С блюпринтами и Unreal Engin'ом я не сильно знаком, но рад что вы нашли такую интересную связь. У меня тоже до некоторых запланированных проектов долго руки не доходят, НО. Здесь просто нужно перебороть самого себя и заняться этим делом. Когда я начинаю что-то делать то всё идёт в гору, но если я только думаю как я это буду делать то я могу потратить много времени впустую. Если вы правда хотите сделать компилятор ( любого уровня ), и у вас есть время на это, то смело делайте, таков мой совет )
Не тратьте время, насколько я поняла, он написал программу, которая читает документ и в зависимости от слов, которые находит в документе активирует нужные функций на языке C.
Думаю, особой разницы не сыграло бы, ведь большую часть процессорного времени в обоих случаях будут занимать системные вызовы. Да и Ассемблер я тогда ещё не особо хорошо знал, потому выбор пал именно на Си
1:13 это означает только то что препроцессор буквально возьмет все что есть в файле stdio.h и вставит вместо директивы include, и ничего ты тут не подключаешь
1. Копирование содержимого из 1 файла в другой называется его «включением» или «подключением». 2. В книге по С Брайана Кернигана и Денниса Ритчи это называется подключением. 3. include переводится как «включить» или «подключить».
@@IT_Shkolnik include это именно "включить"(содержимое) как часть целого. В твоем случае stdio часть стандартной библиотеки а её подключать не надо. Включая заголовочный файл ты лишь копируешь определения функций и структур из этого файла в свой translation unit. + препроцессор в принципе не способен подключать библиотеки, только ctrl+c/ctrl+v
Скажем так. Реализация и идея хрень. НО! Интеллект - это способность решать не стандартные задачи нестандартно... Мне кажется ты доказал что будь у тебя достаточно времени и знаний ты бы написал намного лучше. Продолжай )
Отличная работа 🚀, но кажется точнее будет называть твой "компилятор" транслятором. Бьёрн Страупструп тоже первую рабочую версию языка С++ реализовал как транслятор с С++ на С. Желаю удачи и самое главное - не бросай подобные затеи.
Спасибо большое. Бросать я не собирался, а вот от ютуба немного отошел. Но я возвращаюсь и буду продолжать снимать видео. Замечание про транслятор верное!
Если говорить точнее, Бьярне создал транспайлер, это транслятор, транслирующий один высокоуровневый язык, в другой высокоуровневый язык, либо в самого себя, но потом он создал полноценный отдельный от Си компилятор.
Ну, если делать прям по фен-шую, то генерировать надо не сишный код. Нет смысла спускаться на уровень ассемблера (придется тогда под разные ос и архитектуры практически заново писать), лучше использовать LLVM IR для этого
@@IT_Shkolnik ну, писать компилятор сразу в ассемблер это тяжко не только с точки зрения того, что это язык сложный, а с точки зрения того, что под каждую архитектуру нужно будет писать свой компилятор почти с нуля, а llvm будет низкоуровневой прослойкой.
Привет. Крутое видео. Занимаюсь программированием 2 года. Сейчас мне 14. Я делал 2 своих языка программирования которые были компиляторами и переводились в c++ и c#. 2 язык был намного сложнее, там был кроме компилятора еще и лексер который разбивал код на токены и образовывал AST (абстрактное синтаксическое дерево). Hello world на моём 2 языке: main: print("Hello World") end
@@lizbertarian не знаю что такое LL и LR. Лексер в моём языке это и лексер и парсер вместе. Писал его без кодогенераторов. Использовал рекурсию. Больше не помню потому что это было год назад. Надо смотреть код
Ммм за 4 дня сделать свой яп с интерпретатором. Ничего себе. Я ток за минут 10 сделал калькулятор на языке си. До этого 4 года программировал на python. Понял, что задачи, для которых он сделан не подходят для меня. Потом перешёл на c++. Попробовал си. Все мифы, что якобы он очень сложный развеялись. До этого вывел строку на голом железе на fasm. А потом узнал о roadmap'ах и понял, что я нихрена не знаю, пон.😂😂😂
У тебя по сути получился интерпретатор. Для компиляции нужно учить Ассемблер. И типа пишешь CLS а в коде Ассемблер, вызываешь очистку экрана. Ну и компилятор Ассемблера, везде участвует, даже в Си и в Си++ ;)
Если так докапываться, то у него получился транслятор. Но по сути у него смесь транслятор/компилятор, так как в любом случае мы получаем испольняемый файл, которой не нужен интерпретатор (виртуальная машина) для работы.
Твое решение конечно интересно, но если кто то будет пользоваться твоим языком. То пользователю придется понимать ошибки языка C. Так что предлагаю посмотреть в сторону байткод. Работает это очень просто так вот: твоя программа превращает код понятный пользователь в менее понятный для пользователя, и более простой. А потом твоя программа может выполнять этот байткод.
Мой язык там работает 1 программа: Code = () String =0 Event =input() Code.append(event) def FileAnalysis() : file=open("main.txt") def FileAnalysis() : File =open("main.txt") print("ошибка в коде") if('form ' (big) ') mainloop #команды языка print("input", programma) это программа выводит, то что в ней написано. IT_школьник пж заметь
Это не язык программирования а команды. В целом думаешь правильно. Только создавая язык, создавай язык, не его функции. А то не создав язык до конца ты уже создаёшь функции. Они будут потом, сначала создай сам фундамент, а функции придут со временем. Делать язык тупо для команд, то лучше взять какой то пайтон, он же будет лучше чем скачивать твой. Но если всерйоз то сделать свой яп было бы круто и что бы была главное сво идея, зачем кго делаешь. В противном случае язык ради языка - такое
Я не собирался делать серьёзный ЯП, который будет использоваться людьми по всему миру. Это тестовый язык, чтобы попробовать себя в написании транслятора и реализации
@@IT_Shkolnik ты написал детское говнище, я таким баловался еще когда начинал свой путь проганья. У тебя нет ничего, из чего обычно делают ЯП, т.е. нет лексера парсера и тд
@@IT_Shkolnik - скажи, ты знаешь такого типа с юзернеймом Кибердед (а зовут его Масалович А.И. ) ? Если да - то что скажешь о нем (охота инсайдов от тех, кто общался с ним вживую ) ,
Тоже верно. Наверное С - средний уровень. Да и вообще попробовав Ассемблер в первый раз, потом перейдя на Си кажется что как будто за рулем летающей машины с автопилотом
Сейчас я делаю свою игру на движке unity. Думаю бесполезно делать свой язык программирования, т.к. есть очень много готовых языков. Даже крупной компании jetbrains, было сложно делать язык kotlin. Лучше писать библиотеки для готовых языков (например python). Думаю добавить в свою игру API для написания модов на python
Получилось мего кал где ты говоришь много воды да и то не правду язык СИ никогда не был низкоуровневым это высокоуровневый яп и точка. Низкоуровневый только языки ассемблера выбираешь любой понравившийся транслятор и погнали. Интерпретируемый язык будет выполнен быстрее в первый раз, а компилятор будет долго компенлировать но после его код будет быстрее поскольку ему не нужно перекомпилировать код. Что ты написал это просто кусок кала на СИ где ты определил транслятор как if else нету никаких оптимизаций бизнес логика и интерфейсы вместе короче получился медленный переводчик встречающихся слов в команды си и это никаких образом языком яп назвать нельзя, для этого надо писать на ассемблере и знать computer science на хорошем уровне. И это не хейт просто мнение, а так ты красава учишь в начале СИ это хотябы нормальный язык, а не всякие новомодеые языки с кучей абстракцей для смузихлебов
Не сказал бы что язык СИ высокуровневый, даже в википедии и некоторых книгах сказано, что он именно низкоуровневый, так как может работать напрямую с железом. Можно ещё точнее сказать, что он среуровый, между ассемблером и допустим питоном. По компилятор и интерпретатор согласен не полностью. Если виртуальная машина, тобишь интерпретатор будет тяжелым, то он сперва запускается долго, а потом ещё запускает исходник. Но если он написан хорошо, то по скорости после долгой загрузки он может довольно таки быстро запускать программы, которые могут быть близки к скорости компилируемых языков, но по своей природе никогда их не догонят. А компилированный файл может запуститься сразу. Как видишь вместо двух операций как в интерпретируемых языках идет только одна в компилируемом.
И ещё, для разработчика будет проще писать именно на интерпретируемым языком по многим причинам, например, как ты и сказал, я просто неправильно сперва понял, но это не отменяет сказанные мною слова ранее. Так вот, ты говорил именно про разработку, да, на интерпретируемых языках если интерпретатор работает на фоне, то он быстрее запустить программу, так-как основная часть, тобишь интерпретатор работает, как в то время компилятор только только будет компилировать программу. Но после запуска, скомпилируемая программа будет работать быстрее интерпретируемой. И да, я знаю что VM это разновидность интерпретаторов, навсякий. Буду открыт к критике со стороны и поправке, если я где-либо ошибся
@@tailogs5825 Так во первых круто что ты умеешь работать с критикой. Далее язык СИ это сложный высокоуровневый яп. Я не совсем понял аргумент про то что СИ может работать напрямую с железом, любой современный по голу выпуска язык может в той или иной мере это делать даже тот же Js в окружение Node может всё то что и СИ. Только язык ассемблера является низко уровневым, поскольку он имеет возможность напрямую работать с системными вызывами, при этом он самый понятный язык пр и лёгкий в освоении как бы это глупо не звучало для тебя, я имею опыт и помимо своего мнения вижу такое у других. После языка ассемблера были созданы не менее прекрасный паскаль, бейсик, fortran, ada, которые даже по коду они имеет в себе кучу уже написанных декларативных частей, в том то и дело что и низко уровневым языке Ассемблера ты всë пишешь сам. СИ не стоит посередине между python и языком ассемблера скорее ADA
@@motopers @user-pk8hj8lp3e Я сам учил множество языков и пробовал писать программы на всех сказанных тобой языках, разве что на ассемблере поюзал на пк, но особо не зашло, так как используя реализацию в виде fasm приходилось работать именно с си функциями, а не напрямую допустим с прерываниями, как в операционной системе ms dos или тем же linux (как я слышал там это возможно) (я там не программировал не на одном языке, но пользовался самой ос). Насчет си, почему ты настолько уверен в том, что он относиться именно к высокоуровевым, если абстркции там поменьше, чем в любом из языков, да и есть множество ресурсов упомянающих его как именно среднеуровневый и низкоуровневый, стоит просто загуглить и все становиться ясно. Но после сказанных тобой слов я задумался и думаю, что все же он больше всего относиться к среднеуровневым. Во всем остальном ты прав, как и в железе, тут я сглупил.
@@motopers А, еще забыл упомянуть, на fortran что-то да учил, но особо не пользовался, так как нет надобности в этом. Да и это косается многих языков ... У меня такая проблема, что я постоянно учу языки, чем пишу на них что-либо. Такими темпами я затронул уже больше 40 языков и продолжаю это делать ... У меня просто нет идей для программ, кроме рабочих. А если они появляются, то они слишком сложные, а простое ... ну ты понял. Но как только я выбираю какой-либо язык и убираю другой, то ощущаю фантомную боль и рано или поздно возвращаюсь к изучению языков ... Не знаешь как с этим можно справиться? Я просто устал ...
ССЫЛКА НА АРХИВ - disk.yandex.ru/d/qHIqBk7tJOc4Uw
ССЫЛКА НА GCC - www.equation.com/servlet/equation.cmd?fa=fortran
Лучше выкладывать код на github. Там есть и комменты, ветки и всё такое. А в яндекс диске нету
@@feviend8265 я уже на гитхаб все выкладываю :)
Ну Президента туркмении тебе не обогнать. Он единственный кто смог написать нейросеть на html
Никита, случайно наткнулся на твоё видео и у меня восхищение. Ты огромный молодец!
Спасибо за приятные слова!
1:37. Разница между двумя строками в том, что верхняя хардкодится в исходник по адресу, а нижняя подменяет все a, которые появятся дальше по коду на 5.
Немного не так. Под верхнюю выделяется место на стеке как под обычную переменную, только её нельзя менять через её символ. А нижняя хардкодится
@@IT_Shkolnik это же препроцессор... он конкретно подменяет во время работы дериктивы и их упоминания на результат. То есть все инклюды буквально компонуют несколько файлов в 1 перед обработкой остальной частью компилятора.
@@stalker32041 дефайн - да, согласен. Под const память выделяется
Спасибо, я понимал конечно что такое компиляции и интерпретация, но плохо. А теперь ты все разложил, и стало все понятно!
Я рад, что вам помогло моё объяснение! И конечно спасибо за комментарий, только так ютуб понимает что мои ролики интересны
Боже мой, парень, ты просто невероятно хорош!
Когда смотришь твои видео, понимаешь что нет ничего невозможного)
Спасибо тебе огромное и удачи в развитии канала🔥
Супер, шикарно объясняешь!
Спасибо!
1:01 Препроцессор - программа, которая выполняет предобработку кода. Библиотеки подключает, раз уж на то пошло, линковщик, который связывает символы из разных объектных файлов
Я имел ввиду что в С препроцессор подключает заголовочные файлы с функциями
@@IT_Shkolnik и не только! Препроцессор - это первая стадия компиляции. Препроцессор не занимается тем, чтобы подключать файлы.
Команды препроцессора в C:
#if - как if, только обрабатывается препроцессором.
#else - как else, только выполняется препроцессором.
#ifdef - если объявлен макрос N выполняет действие.
#ifndef - если не объявлен макрос N выполняет действие.
#endif - конец if блоков выше
#define - объявляет макрос.
#undef - удалить макрос созданный #define
#include - включает файл в программу.
Круто, что ты увлекаешься C(это мой любимый язык). Удачи в создании новых проектов. Советую почитать какую-нибудь хорошую книгу или статьи о C, чтобы лучше понять, как там всë устроено.
Слушай было достаточно интересно! Продолжай в том же духе!😉
Спасибо, друг!
О привет, как поживаешь?
Препроцессор не "подключает" библиотеки. Препроцессор обрабатывает макросы. В частности команда #include означает, что препроцессор должен вместо этой строчки вставить содержимое файла. В заголовочных файлах (внезапно!) находятся только заголовки. А непосредственно "подключение" (правильнее сказать "связывание") скомпилированных объектных файлов осуществляет линковщик.
P.S. В заголовочных файлах писать код можно, но оправданно оно только в случае написания глобальных шаблонных функций или классов на языке С++.
Ага. И ещё в случае однострочных инлайн функций
Так то по общему определению препроцессор просто обрабатывает текст программы в другой текст программы, заместь тех же инклудов ставит текст заголовка, а заместь названий констант - их значения. Можно вообще в константы целые строки кода записывать насколько я помню
6:53 Да это прям блюпринты в Unreal Engine. Они также работают. А вообще, у меня давно была похожая идея сделать такой компилятор, но как-то руки не доходят.
С блюпринтами и Unreal Engin'ом я не сильно знаком, но рад что вы нашли такую интересную связь. У меня тоже до некоторых запланированных проектов долго руки не доходят, НО. Здесь просто нужно перебороть самого себя и заняться этим делом. Когда я начинаю что-то делать то всё идёт в гору, но если я только думаю как я это буду делать то я могу потратить много времени впустую. Если вы правда хотите сделать компилятор ( любого уровня ), и у вас есть время на это, то смело делайте, таков мой совет )
Не тратьте время, насколько я поняла, он написал программу, которая читает документ и в зависимости от слов, которые находит в документе активирует нужные функций на языке C.
я думаю на ассемблер(вместо с) легче было бы переводить там потом все понятно команды идут сразу в проц
Думаю, особой разницы не сыграло бы, ведь большую часть процессорного времени в обоих случаях будут занимать системные вызовы. Да и Ассемблер я тогда ещё не особо хорошо знал, потому выбор пал именно на Си
Если ты дальше этим будешь заниматься , тебя ждет большое будущее !
В самом с++ настолько много инструментов и возможностей что сам c++ можно переделать в другой язык.
если знаешь где найти полную вики со всеми инструментами и возможностями скинь.
1:13 это означает только то что препроцессор буквально возьмет все что есть в файле stdio.h и вставит вместо директивы include, и ничего ты тут не подключаешь
1. Копирование содержимого из 1 файла в другой называется его «включением» или «подключением».
2. В книге по С Брайана Кернигана и Денниса Ритчи это называется подключением.
3. include переводится как «включить» или «подключить».
@@IT_Shkolnik если ты напишешь
#include то ты подключишь библиотеку ?
@@IT_Shkolnik include это именно "включить"(содержимое) как часть целого. В твоем случае stdio часть стандартной библиотеки а её подключать не надо. Включая заголовочный файл ты лишь копируешь определения функций и структур из этого файла в свой translation unit.
+ препроцессор в принципе не способен подключать библиотеки, только ctrl+c/ctrl+v
Скажем так. Реализация и идея хрень. НО!
Интеллект - это способность решать не стандартные задачи нестандартно... Мне кажется ты доказал что будь у тебя достаточно времени и знаний ты бы написал намного лучше.
Продолжай )
Отличная работа 🚀, но кажется точнее будет называть твой "компилятор" транслятором. Бьёрн Страупструп тоже первую рабочую версию языка С++ реализовал как транслятор с С++ на С. Желаю удачи и самое главное - не бросай подобные затеи.
Спасибо большое. Бросать я не собирался, а вот от ютуба немного отошел. Но я возвращаюсь и буду продолжать снимать видео. Замечание про транслятор верное!
@@IT_Shkolnik возвращайся
Если говорить точнее, Бьярне создал транспайлер, это транслятор, транслирующий один высокоуровневый язык, в другой высокоуровневый язык, либо в самого себя, но потом он создал полноценный отдельный от Си компилятор.
Ну, если делать прям по фен-шую, то генерировать надо не сишный код.
Нет смысла спускаться на уровень ассемблера (придется тогда под разные ос и архитектуры практически заново писать), лучше использовать LLVM IR для этого
Вообще была у меня идея генерировать ассемблер, но на момент создания этого видео я ещё про него почти ничего не знал)
@@IT_Shkolnik ну, писать компилятор сразу в ассемблер это тяжко не только с точки зрения того, что это язык сложный, а с точки зрения того, что под каждую архитектуру нужно будет писать свой компилятор почти с нуля, а llvm будет низкоуровневой прослойкой.
Привет. Крутое видео. Занимаюсь программированием 2 года. Сейчас мне 14. Я делал 2 своих языка программирования которые были компиляторами и переводились в c++ и c#. 2 язык был намного сложнее, там был кроме компилятора еще и лексер который разбивал код на токены и образовывал AST (абстрактное синтаксическое дерево).
Hello world на моём 2 языке:
main:
print("Hello World")
end
Как ты строил AST? Какой тип парсера использовал (LL или LR)?
@@lizbertarian не знаю что такое LL и LR. Лексер в моём языке это и лексер и парсер вместе. Писал его без кодогенераторов. Использовал рекурсию. Больше не помню потому что это было год назад. Надо смотреть код
@@lizbertarian у тебя есть telegram?
@@feviend8265 @ lizzy_weiss
Обзор сделаешь на свое творение ?
Ммм за 4 дня сделать свой яп с интерпретатором. Ничего себе. Я ток за минут 10 сделал калькулятор на языке си. До этого 4 года программировал на python. Понял, что задачи, для которых он сделан не подходят для меня. Потом перешёл на c++. Попробовал си. Все мифы, что якобы он очень сложный развеялись. До этого вывел строку на голом железе на fasm. А потом узнал о roadmap'ах и понял, что я нихрена не знаю, пон.😂😂😂
Ваш комментарий можно использовать как идеальный ответ на "Что такое программирование в двух словах"
Я тоже все время изучал питон, а теперь начал джаву. Я понял что она тоже больше подходит для меня.
У тебя по сути получился интерпретатор. Для компиляции нужно учить Ассемблер. И типа пишешь CLS а в коде Ассемблер, вызываешь очистку экрана. Ну и компилятор Ассемблера, везде участвует, даже в Си и в Си++ ;)
Если так докапываться, то у него получился транслятор. Но по сути у него смесь транслятор/компилятор, так как в любом случае мы получаем испольняемый файл, которой не нужен интерпретатор (виртуальная машина) для работы.
Со всеми согласен, в моей реализации смесь из транслятора и интерпретатора. А про ассемблер видео дальше будут
Если говорить правильно, то не компилятор ассемблера, а а ассемблер :)
Конвертор*
Работа интерпретатора основана на VM
Привет, я новенький на твоём канале. Расскажи пожалуйста, сколько ты учишь С?
Привет, спасибо за комментарий. Я учу Си два с половиной года
Ждем ролик о создании современного языка программирования PETOOH
Спасибо! Вы с GitHub я так понимаю?)
аааахахаххааха
Koo KoO koo kOk kooo
Красавчик
Отлично!
Спасибо!
силен!
Сильно!
Твое решение конечно интересно, но если кто то будет пользоваться твоим языком. То пользователю придется понимать ошибки языка C. Так что предлагаю посмотреть в сторону байткод. Работает это очень просто так вот: твоя программа превращает код понятный пользователь в менее понятный для пользователя, и более простой. А потом твоя программа может выполнять этот байткод.
Спасибо за идею!
А ты код пишешь на ноутбуке или ПК
Очень круто! Но где-то слишком усложнил. В остальном молодец.
Старался, спасибо!
Мой язык там работает 1 программа:
Code = ()
String =0
Event =input()
Code.append(event)
def FileAnalysis() :
file=open("main.txt")
def FileAnalysis() :
File =open("main.txt")
print("ошибка в коде")
if('form ' (big) ')
mainloop
#команды языка
print("input", programma) это программа выводит, то что в ней написано.
IT_школьник пж заметь
Я так понял ты программируешь на python'e да?
Блин, хотелось бы поюзать
Слушай, а расскажи как собрать установщик под программу
4:40 ENTER - (17) ???
Спасибо за вашу бдительность, исправил в описании
Это не язык программирования а команды. В целом думаешь правильно. Только создавая язык, создавай язык, не его функции. А то не создав язык до конца ты уже создаёшь функции. Они будут потом, сначала создай сам фундамент, а функции придут со временем. Делать язык тупо для команд, то лучше взять какой то пайтон, он же будет лучше чем скачивать твой. Но если всерйоз то сделать свой яп было бы круто и что бы была главное сво идея, зачем кго делаешь. В противном случае язык ради языка - такое
Я не собирался делать серьёзный ЯП, который будет использоваться людьми по всему миру. Это тестовый язык, чтобы попробовать себя в написании транслятора и реализации
@@IT_Shkolnik ты написал детское говнище, я таким баловался еще когда начинал свой путь проганья. У тебя нет ничего, из чего обычно делают ЯП, т.е. нет лексера парсера и тд
спасибо
Написал недавно свой интерпретатор, для выполнения json-файла😂😂
Возможно, это звучит глупо, но это ускоряет написание простых программ))
Ух ты, наверное классно получилось!
у тебя it_батя? колись.
монтируешь сам?
Монтирую сам. Батя - хардварщик
@@IT_Shkolnik азахах
@@IT_Shkolnik - скажи, ты знаешь такого типа с юзернеймом Кибердед (а зовут его Масалович А.И. ) ? Если да - то что скажешь о нем (охота инсайдов от тех, кто общался с ним вживую ) ,
Думаю что язык С не является таким уж низкоуровневым, низкоуровневый скорее Assembler
Тоже верно. Наверное С - средний уровень. Да и вообще попробовав Ассемблер в первый раз, потом перейдя на Си кажется что как будто за рулем летающей машины с автопилотом
@@IT_Shkolnik си - высокоуровненвый яп
Сейчас я делаю свою игру на движке unity. Думаю бесполезно делать свой язык программирования, т.к. есть очень много готовых языков. Даже крупной компании jetbrains, было сложно делать язык kotlin. Лучше писать библиотеки для готовых языков (например python).
Думаю добавить в свою игру API для написания модов на python
Ну как прогресс?
А ты хорош
Чуть чуть медленнее с расстановкой.
Спасибо за совет
перекинь свой компилятор на гуглдиск потому что у меня в стране заблокали всё русское😢
У меня тоже много что заблокировали
Езжайте в укр
@@seekyboi23 разве это не под запретом? Только при наличии родственников. Я думаю не у каждого есть такая возможность.
@@addblocker6634 запрет? Родители будут только рады такому событию
поставь браузер Опера хоть на компе, хоть на телефоне (там есть встроенный VPN, включи его - и все загрузится/скачается ) ,
Получилось мего кал где ты говоришь много воды да и то не правду язык СИ никогда не был низкоуровневым это высокоуровневый яп и точка. Низкоуровневый только языки ассемблера выбираешь любой понравившийся транслятор и погнали. Интерпретируемый язык будет выполнен быстрее в первый раз, а компилятор будет долго компенлировать но после его код будет быстрее поскольку ему не нужно перекомпилировать код. Что ты написал это просто кусок кала на СИ где ты определил транслятор как if else нету никаких оптимизаций бизнес логика и интерфейсы вместе короче получился медленный переводчик встречающихся слов в команды си и это никаких образом языком яп назвать нельзя, для этого надо писать на ассемблере и знать computer science на хорошем уровне.
И это не хейт просто мнение, а так ты красава учишь в начале СИ это хотябы нормальный язык, а не всякие новомодеые языки с кучей абстракцей для смузихлебов
Не сказал бы что язык СИ высокуровневый, даже в википедии и некоторых книгах сказано, что он именно низкоуровневый, так как может работать напрямую с железом. Можно ещё точнее сказать, что он среуровый, между ассемблером и допустим питоном.
По компилятор и интерпретатор согласен не полностью. Если виртуальная машина, тобишь интерпретатор будет тяжелым, то он сперва запускается долго, а потом ещё запускает исходник. Но если он написан хорошо, то по скорости после долгой загрузки он может довольно таки быстро запускать программы, которые могут быть близки к скорости компилируемых языков, но по своей природе никогда их не догонят. А компилированный файл может запуститься сразу. Как видишь вместо двух операций как в интерпретируемых языках идет только одна в компилируемом.
И ещё, для разработчика будет проще писать именно на интерпретируемым языком по многим причинам, например, как ты и сказал, я просто неправильно сперва понял, но это не отменяет сказанные мною слова ранее. Так вот, ты говорил именно про разработку, да, на интерпретируемых языках если интерпретатор работает на фоне, то он быстрее запустить программу, так-как основная часть, тобишь интерпретатор работает, как в то время компилятор только только будет компилировать программу. Но после запуска, скомпилируемая программа будет работать быстрее интерпретируемой. И да, я знаю что VM это разновидность интерпретаторов, навсякий. Буду открыт к критике со стороны и поправке, если я где-либо ошибся
@@tailogs5825 Так во первых круто что ты умеешь работать с критикой. Далее язык СИ это сложный высокоуровневый яп. Я не совсем понял аргумент про то что СИ может работать напрямую с железом, любой современный по голу выпуска язык может в той или иной мере это делать даже тот же Js в окружение Node может всё то что и СИ. Только язык ассемблера является низко уровневым, поскольку он имеет возможность напрямую работать с системными вызывами, при этом он самый понятный язык пр и лёгкий в освоении как бы это глупо не звучало для тебя, я имею опыт и помимо своего мнения вижу такое у других. После языка ассемблера были созданы не менее прекрасный паскаль, бейсик, fortran, ada, которые даже по коду они имеет в себе кучу уже написанных декларативных частей, в том то и дело что и низко уровневым языке Ассемблера ты всë пишешь сам. СИ не стоит посередине между python и языком ассемблера скорее ADA
@@motopers @user-pk8hj8lp3e Я сам учил множество языков и пробовал писать программы на всех сказанных тобой языках, разве что на ассемблере поюзал на пк, но особо не зашло, так как используя реализацию в виде fasm приходилось работать именно с си функциями, а не напрямую допустим с прерываниями, как в операционной системе ms dos или тем же linux (как я слышал там это возможно) (я там не программировал не на одном языке, но пользовался самой ос). Насчет си, почему ты настолько уверен в том, что он относиться именно к высокоуровевым, если абстркции там поменьше, чем в любом из языков, да и есть множество ресурсов упомянающих его как именно среднеуровневый и низкоуровневый, стоит просто загуглить и все становиться ясно. Но после сказанных тобой слов я задумался и думаю, что все же он больше всего относиться к среднеуровневым. Во всем остальном ты прав, как и в железе, тут я сглупил.
@@motopers А, еще забыл упомянуть, на fortran что-то да учил, но особо не пользовался, так как нет надобности в этом. Да и это косается многих языков ... У меня такая проблема, что я постоянно учу языки, чем пишу на них что-либо. Такими темпами я затронул уже больше 40 языков и продолжаю это делать ... У меня просто нет идей для программ, кроме рабочих. А если они появляются, то они слишком сложные, а простое ... ну ты понял. Но как только я выбираю какой-либо язык и убираю другой, то ощущаю фантомную боль и рано или поздно возвращаюсь к изучению языков ... Не знаешь как с этим можно справиться? Я просто устал ...
Всё круто, но звук ужасный.
Купи хороший микрофон.
Рад что вам понравилось видео. Да, я уже подумывал над покупкой микрофона, думаю скоро куплю. В любом случае буду всем делиться в телеграмм канале