24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
А КАК СОЗДАЮТ ЯЗЫКИ ПРОГРАММИРОВАНИЯ? Типа через другие языки программирования? А самый первый как с
>>300283994 (OP) Можешь считать что первый язык это примитивный файл из нулей и единиц. Плюс в процессоре уже зашиты намертво команды, с этого начинается низкоуровневое программирование.
>>300284491 нет. Первая программа это вполне себе дохуища математических формул для нахождения чисел Бернулли. Никаких тебе операторов, переменных и прочих классов и библиотек. Зато есть цикл.
>>300284848 При чем тут какие то "первые программы", мань? Мы тут не абстрактные вычислительные машины обсуждаем, а вполне себе конкретные, как минимум ЭВМ, если че это не синоним слова компьютер - компьютер может быть и аналоговым.
А Ада просто манятеоретик, как она могла что то написать в "машинных кодах" если машины тогда не существовало?
>>300284555 процессор состоит из разных модулей, где например есть арифметика,модуль переводит электро сигнал в 0 и 1, а там он может уже работать этим либо слать инструкции дальше
>>300284985 Она описала алгоритм. Это главное. А как уже его "впихивают" в ЭВМ - дело десятое.
Тот же бейсик в ПЗУ спектрума - тоже алгоритм. Без понимания что такое алгоритм прогромирование не возможно в принципе.
И если сейчас команды "зашиваются" в процессор на этапе создания его архитектуры, а фищически при процессе фотолитографии, то ПЗУ програмировались "прожигателями". А потом придумали IO.sys и все заверте....
>>300283994 (OP) Пишут парсер синтаксиса. С помощью имеющихся инструментов, типа bison и yacc. А потом руками наваливают вообще всё - коллекции, потоки, сети и прочее.
>>300283994 (OP) > А КАК СОЗДАЮТ ЯЗЫКИ ПРОГРАММИРОВАНИЯ? Типа через другие языки программирования? Берут и придумывают. А потом создают для него компилятор - да, сначала на другом языке программирования, а потом на нём же самом (как тут уже указали, раскрутка компилятора).
>А самый первый как создали? Смотря что считать языком программирования. До появления высокоуровневых языков был язык ассемблера, т.е по сути машинные инструкции, записанные мнемониками, чтобы их проще было читать. Первый ассемблер (т.е. программа, транслирующая язык ассемблера в машинный код) был очевидно написан прямо машинным кодом.
>>300285180 > Она описала алгоритм. > Это главное. Алгоритм описывал ещё Евклид, блять. Какое это имеет отношение к рассматриваемому вопросу?
> А как уже его "впихивают" в ЭВМ - дело десятое. Да не существовало блять тогда ЭВМ! И АВМ тоже. И даже машину Бебиджа вокруг которой они тогда носились - так и не построили. Это было чисто теоретизирование.
> > И если сейчас команды "зашиваются" в процессор на этапе создания его архитектуры Про архитектуру это сильно упрощённо, потому что во всяком случае в инцелах подаваемые туда CISC команды ещё транслируются во внутренний RISC под воздействием прошивочки, наверное в том числе потому что они уже вкусили говна допустив какую то там ошибку с операцией деления которую кажется было не исправить так как аппаратная.
Хуйня из 19го века, все эти счетно-арифметические машины нас не интересуют. Тьюринг свою машину придумал в 1936м только.
>>300285383 > Например вижуал студия компили бейсик, и на каком языке она написана? Она проприетарная пойди у МС спроси. Скорее всего на крестах или сишке, как и 99% всего.
>>300285319 Не важно. Важно то, что это подразумевает большой объем вычислений, чтобы выполнить который требуется алгоритм. Его и описала Ада в виде таблицы. А как алгоритм представить машине - зависит от конструкции машины. Тут анон правильно про агалоговые упомянул, но машины могут быть не только аналоговые, но и механические, к примеру. Тот же "Феликс", например. И вся суть машин сводится к тому, что они работают по алгоритму. А программа - и есть алгоритм, только он описывается языком прогромирования со своими правлами, например синтаксис, набор операторов и аргументов и .п. И каждый язык прогромирования разрабоатывается под конкретную задачу. Это не значит, что он только эту задачу может решать, но ту, для решения которой он создан - решает лучше (эфективнее) другой, для которой не создан.
"железу" - компу - пофиг на чем ты там кодишь. Ему все равно нули и единицы нужны.
Видел тут недавно, как один анон nand game советовал. Прошёл запоем за вечер до ассемблера, весёлая штука, для чуть более общего понимания можно пройти.
По логике - по архитектуре подбирают формализованный алгоритм. Далее определяют уровни абстракции. Создают правила и компилятор для кода, написанного по правилам.
>>300285682 > Только Евклид не для вычислительной машины алгоритм писал. Человека вполне себе можно считать вычислительной машиной, и с некоторой натяжкой даже электронной. Ну а чё, по нервам электрические сигналы летают. Разве что не цифровая.
>>300285744 > Человека вполне себе можно считать вычислительной машиной, мы и есть вычислительные машиы. только прогромируемся крайне высокоуровневыми языками такими как религия, этика, нравственность, обвчаи и прочее обществнное гавно.
И мы сови поступки совершаем и даем им оценку с позиций того, что нам привили при воспитании (прогромировании)
>>300285881 > только прогромируемся крайне высокоуровневыми языками такими как религия, этика, нравственность, обвчаи и прочее обществнное гавно. Это не программирование, а просто воздействие. Так то вроде по определению алгоритма результат должен быть детерминирован. Если ты в симсах пошел и персонажу разные черты и характеристики понатыкал это не значит что ты его там понапрограммировал, во всяком случае не в контексте вопроса из ОП-поста.
>>300285881 >мы и есть вычислительные машиы. >только прогромируемся крайне высокоуровневыми языками такими как религия, этика, нравственность, обвчаи и прочее обществнное гавно. Не, совсем не так. Человек в одинаковых условиях может сделать одно, а может совершенно другое.
Пиздец бля. Создал тред, читаю ответы и ВООБЩЕ нихуя не вдупляю. Какие-то редупликаторы, репликанты, компиляторы, циклы говна, модуль, Бейсик, хуейсик, архитектура какая-то блять, мы программирование обсуждаем или здания ебаные, я в ахуе
>>300286092 > Человек в одинаковых условиях может сделать одно, а может совершенно другое. под воздейсвтием внешних факторов - да. Это как стрелочками персом в игре управлять. >>300286065 > Это не программирование, а просто воздействие. категорически не согласен. Вот возьмем две основных заповеди из практически любой современной распространенной религии: не убей не украти
Именно эти основные "запрета" определяют поведение людей. Ты (если не еблан) никогда не убьешь и не ограбишь другого человека. Просто потому, что на этих двух правилах держится все современное общество: ценность человеческой жизни и незыблемость права собственности.
Для какого-нить аборигена с тихоокеанских островов вообще не факт, что нельзя убивать соседа, у которого можно что-то нужное отобрать.
И он пойдет на убийство с целью получить вещь, если считает ее нужной себе, вообще без размышлений "тварь я дрожащая или право имею". Он и слов то таких не знает.
>>300286957 >>300287029 Правда по определенным правилам, с учетом конструкции ЭВМ. То есть не в случайном месте, а именно в том, где нужно. Потом решили, что жырявить перфокарты это геморой и придумали транслятор языка погромирования.
>>300286957 Ты тупой? Изучай "Машина Тьюринга" и тему полупроводников, по ходу изучения темы найдешь незнакомые слова их тоже изучай, так дойдешь до современного состояния программирования.
>>300287169 Я изучал машину тьюринга, даже экзамен сдавал. Там нету этого. Ты мог бы еще посоватовать Коран почитать чтобы Аллах мне озарение послал. Потом совет почитать это не ответ на вопрос, можешь сразу нахуй идти с советами почитать.
>>300287181 Они отличаются от ЭВМ, прогромируемых с помощью перфокарт только значительно бОльшим количеством нулей и единиц, которые им требуются чтобы работали твои игори
>>300287344 сидел чувак. Возмодно на горшке. Думал. Придумал, что если он в перфокарте в нужных местах проделает дырдычки, то машина сделает то, что от нее нужно. Вспомнил опыт тысячелетий, про ткацкие станки. Они так же работали. А еще вспомнил про телетайп, который к тому времени был уже отработанной инадежной технологией. Придумал как расположить контакты, чтобы удобно было прокалывать дырдычки. Нарисовал чертеж, попросил других чуваков помочь Договорились. что контакты будут делать на всех ЭВМ этой марки точно так же. Все.
>>300287344 А потом явились чуваки, явно троли какие-то, которые предложили вместо двоичной системы счисления использовать троичную. То есть -1 0 и 1. Попробовали. Вроде заработало, но потом их нахуй послали
>>300287937 Это: 1.Правила о том, что должен писать человек и как (операторы, команды, синтаксис) 2.Правила о том, как то, что написал человек, переводится в машинный код. То есть что именно делает машина чтобы выполнить print "hello world".
Кстати, имеется древний программатор. У него нет никаких запоминающих устройств. "Прошивка" набирается вручную с клавы тупо цифрами. Значение, сдвиг адреса. И потом прожиг пзу.
Это Оп-хую, если он не вдупляет как тот же биос создать если есть только проц и больше нихуя.
ваще первые штуки создавались на перфокартах, а как последовательность пустоты и не пустоты превратилось в прогу это да хз не понятно даже мне. другие языки создаются из уже имеющихся
>>300286346 > Всё еще ни одного ответа на ОП вопрос в треде. А я уже статью про Аду на википедии осилил. Полно ответов, мань. Сто раз уже написали и про машинный код и про раскрутку компилятора.
>>300288284 А команда это что? А архитектура? Ну архитектура я примерно понимаю что это и есть то как физически транзисторы расположены на камне. Но это нерелейтед, мы все еще совершили рывок от текста к 0-1.
>>300288292 но он включает в себя транслятор или интерпретатор его еще называют для того, чтобы то, что ты написал на бейсике перевести в машинный код. Сам по себе интерпретатор - не язык прогромирования, а программа, алгоритм. То есть ты пишешь: 10. принт "хело ворлд" а интерпретатор переводит это в кучу нулей и единиц по определенному алгоритму и скармливает компьютеру, а тот читает нули и единицы и выводит тебе на экран "хело ворлд". Все.
>>300288292 Ну есть процессор, условно такая сложная-сложная микросхема. У него есть набор инструкций, т.е. длинный список правил о том какие значения (команды) ему можно подавать на вход и какие значения при этом будут получаться. Как это реализовано - вопрос уже не из области программирования, а из области схемотехники и электроники. Далее, процессор просто считывает это команды из памяти и выполняет их
>>300285499 > Теоретизирование Ващета адины погромирования проверили на собранной машине Бэббиджа лет 7 назад или что-то такое. И они работали без дебага. Ещё раз: Ада написала программу для ещё нереализованной архитектуры, без возможности эмуляции этой архитектуры на чём-либо, кроме как в уме, и этой программе не потребовалось отладка.
>>300288636 Что такое набор инструкций? >Как это реализовано - вопрос уже не из области программирования, а из области схемотехники и электроники. Это и есть вопрос в ОП. Понадобилось 85 ответов чтобы первый отвечающий понял что спрашивали.
>>300288359 Дурак? Команда это блять команда, то что может выполнять эта железка. Например "сложить число с числом", "сравнить число с числом, если больше - перейти по такому адресу", "записать/прочитать ячейку памяти по такому адресу". Команды кодируются числами (это и есть те самые "машинные коды"), операнды (то с чем оперируют команды - числа которые ты складываешь, адреса в памяти) - тоже, все это лежит в памяти и процессор просто идёт и поочереди смотрит - ага блять, команда 1488 - и электронно транзисторами выполняет соответствующую хуйню, на базовом уровне там всякие триггеры, сумматоры и подобная поебень. Потом выполняет следующую команду и так далее.
>>300288648 > Ада написала программу для ещё нереализованной архитектуры, без возможности эмуляции этой архитектуры на чём-либо, кроме как в уме, и этой программе не потребовалось отладка. Так она не майнкрафт и не фаерфокс написала, это вообще не компьютер в полноценном понимании, это блять арифметическая вычислительная машина по сути.
>>300288359 давай определимся в терминологией, для начала. Команда это то, чо ты даешь машине, когда пишешь в командной строке "ран МсДОС.бат". (или когда кликаешь мышкой по ярлычку) Оператор это то, что ты пишешь в тексте программы и к чему прикручиваешь аргумерты по определенным правилам (синтаксис) Программы состоят из операторов. команды - даются машине. Архитектура - схема хуевой тучи транзисторов и прочей шняги в микросхеме.
Вот и получается ты сначала пишешь программу. Потом даешь машине команду эту программу запустить Как только она запускается транслятор (интерпретатор) языка погромирования ее переводит в кучу нулей и единиц, которые скармливаются микросхеме в виде импульсов тока на определенных контактах и благодаря им в микросхеме переключаются по разному транзисторы и на выходе микросхемы получается дохуя импульсов тока, но уже не таких как на входе, а полученных в результате работы кучи переключателей (транзисторов) в микросхеме. Этот результат опять поступает в интерпретатор и он уже выводит результат на устройство ввода-вывода в человечковоспринимаемом виде.
>>300288810 При чем тут зависть? У тебя наглядный пример. Оп-дегенерат-поридж, который родился в век комплюхтеров и телебонов, окруженный техникой с детства, имеющий доступ в инет где есть все ответы и куча инфы и... он нихуя не может найти. Он даун.
А теперь берем бабу, которая жила в век кухарок, а комп был мифическим устройством, к которому мало кто мог подойти в принципе. Ну да, верим что она писала софт сама. Вот в современных пёзд ещё можно поверить. Выучить жабу они вполне могут. Но сеньорами им не быть. Мозги не так устроены.
>>300288714 Я тебе ответил 24-ым постом, ты меня проигнорировал.
>Что такое набор инструкций? Ну смотри, давай представим простейший процессор, точнее даже не процессор а просто микросхему-исполнитель команд с лампочкой. У неё есть три контакта, на каждым из которых может либо быть сигнал, либо не быть сигнала. Их можно записать как последовательность трёх цифр. И вот у этой микросхемки есть документация где написано: 000 - лампочка не горит 001 - лампочка горит красным цветом 010 - лампочка горит зелёным цветом 011 - лампочка горит жёлтым цветом Это и есть набор инструкций вот этой микросхемки.
Теперь представь что мы будем подавать на эту микросхему следующий поток команд 001011001011001011 Получается лампочка будет мигать красным-жёлтым. В процессоре по сути то же самое, только кодируется не цвет лампочки, а более сложные действия, например сложить два числа и записать их в определённый регистр, взять число из регистра и записать его в определённую ячейку памяти, сложить число со значением регистра А и записать его в регистр Б и т.д. Примерно так и выглядит набор инструций процессора
>>300283994 (OP) Ну смотри, ебать. Я конечно бухой в зюзьгу, но попробую пояснить. Сначала были полупроводники. Те самые ламповые лампы и прочая полупроводниковая шляпа. И туда пихались перфокарты. Такие листы с дырками. Листы замыкали и размыкали определённую хуйню, выдавался на выходе определённый результат. Если сильно упрощать, что такое проц? Куча полупроводниковых перемычек, к которому на шину поступает всякое питание-хуяние, и он перемыкаясь, в оперативку высерает определённый результат, ещё и в оперативке замыкая то или иное говно. Всё это хуё-моё раньше работало через те самые пресловутые мосты, сейчас там наверное всё в один чип запаяно мелкий, или вовсе в проц, похуй.
Ну так вот, перфокарты не самый удобный способ ввода, придумали всякие клавиатуры-хуйлатуры, но как их заставить обрабатывать буковки в действия? Оч просто, ебать. Внутри машины зашит какой-нибудь basic, он наверное был самым простым и примитивным. Начинка компа понимает какие клавиши ты нажимаешь и записывает их в хуйню к себе, ёпта. Потом ты клацаешь на кнопку, и результат преобразуется в сигналы для соседнего проца, комп там внутри делает хуё-моё, а результат вычисления на экране.
Бля, пизедц коречно написал, но надеюсь ты примерно понял. Постарюсь создать тред когда протрезву.
>>300289117 Ада не более чем тухлая сельдь. Якобы написала программу для компьютера, придуманного Бэбиджем. Ага, Бэбидж такой - придумаю ка я компьютер, хз для чего, ведь программы то ещё не изобрели. Во люди дебилы что в такое верят.
>>300289244 Че ты несёшь. Бэбидж же компьютер создавал а не ткацкий станок. А если ты считаешь что перфокарты для ткацкого станка это программы, то получается что первые программы писала всё равно не Ада
>>300289250 на старых компаз, на спектрумах, например, - это микросхемаПЗУ, в которой алгоритим (инструкции) того же бейсика были прошиты физически. То есть взята микросхема определенной архитектуры, в которой было дохуя нихромовых перемычек, вставлена в специальный "прожигатель", в него путем натыкивания кнопок была введена человеком инструкция какой электрический ток подать на мигросхему, потом была жмакнута кнопка "прожиг" и в микросхеме ПЗУ навсегда был залит интерпретатор бейсика.
На современных компах используются операционные системы, которые взаимодействуют с железом, а все интерпретаторы языков являются программами, которые взаимодействуют с операционной системой.
правда сейчас придумали УЕФИ - это прокладка медлу операционной системой и железом
>>300288781 Посмотрел бы я на тебя, пишущего на листочке бумаги не требующие отладки программы в машинном коде для 8086 или хотя бы для z80 — даже обложившегося документацией.
>>300289479 > Посмотрел бы я на тебя, пишущего на листочке бумаги не требующие отладки программы в машинном коде для 8086 или хотя бы для z80 — даже обложившегося документацией. Ну, в вузике на лабах так и писали. Архитектуру точно не помню, наверное 8051. Вопросы?
>>300289534 Он придумывал вычислительное устройство в принципе, на котором может работать какая-нить программа. Ада написала программу. Точнее математическую формулу в виде табюлицы, которую можно было превратить в программу, с учетом конструктивных особенностей машины.
"Изобретателем дельтаплана считается Аббас ибн Фирнас, который совершил первый полёт на нём в 875 году[6]."
"К 1831 году она смогла передвигаться на костылях." "а в её голове созревала идея о конструкции летательного аппарата, который приводился бы в движение паром[13]. В феврале 1828 года она начала воплощать задумку в жизнь с построения крыльев. Для этого она изучала разные материалы и долго подбирала размер. Среди предполагаемых материалов для крыльев были бумага, масляный шёлк, проволока и перья. Для соблюдения пропорции она изучала анатомию птиц."
То есть не реальные наработки по крыльям, а хуйнёй стардала птичек рассматривая. И что-то ничего не высрала по итогу. Вообще.
"За несколько лет до вступления в должность Бэббидж закончил описание счётной машины, которая смогла бы производить вычисления с точностью до двадцатого знака" Мужик сделал машину, сделал описание. "изобретатель Чарльз Уитстон, попросил графиню Лавлейс перевести записи Менабреа на английский и сопроводить текст комментариями." Опять, мужики всё делают, пизда просто прокладка. "В одном из своих комментариев Ада описывает алгоритм вычисления чисел Бернулли на аналитической машине." "машина Бэббиджа так и не была построена при жизни Ады."
И? Это хуйня, а не программа. По сути, бабе дали перевести инструкцию калькулятора, а она написала нажать 2 нажать + нажать 2 нажать =. И всё, пограмиздка, лол. И это явно делал автор машины и прочие. Всё хуйня, бабы говно без задач.
>>300289666 >И? Это хуйня, а не программа. По сути, бабе дали перевести инструкцию калькулятора, а она написала нажать 2 нажать + нажать 2 нажать =. И всё, пограмиздка, лол. Тебе сказали что она была самым скилловым программистом за всю историю? Нет, только первым. Несёшь хуйню, кстати.
>>300289739 > Тебе сказали что она была самым скилловым программистом за всю историю? Нет, только первым. Несёшь хуйню, кстати. А те кто жаккардовы станки погромировал - тогда кто?
>>300289328 Я не тот, с которым ты спорил, но я дрочил эту хуйню на ИВТ четыре года плюс прочел книжку по истории компов не для того, чтобы игнорировать подобное. Ада придумала концепцию программирования, то есть вычислителя с заданной программой, а не просто калькулятор типа машины паскаля. Также она предвосхитила идею о том, что разные объекты могут быть выражены в виде чисел, например музыка. Ада предложила идеи ветвления, цикла и подпрограмм, в частности, предложила, как можно вычилять числа Бернулли с помощью вычислителя общего назначения. Все это из-за того, что у нее дома проводили вечеринки, на которых в том числе демонстрировали машину для подсчета уравнений. То есть она придумала, как абстрагироваться, вместо того, чтобы строить новую машину для каждой задачи. Жаль, что померла в 36. А не трахни Байрон свою сестру или кого там, она, скорее всего, увлеклась бы литературой и не сделала бы всего этого, потому что ее мамка не огораживала ее от любого интереса к гуманитарным наукам.
>>300290015 >Ада придумала концепцию программирования Что могла придумать пизда переводчик? Что за бред ты несешь блять. Баба даже не понимала как этот арифмометр работает. Его не было в наличии.
>вычислителя с заданной программой До неё уже всё было. Автоматоны та же программа.
>например музыка. Автоматоны уже играли. Хуйню, но тем не менее. Баба сосет и только. Во всем.
>демонстрировали машину для подсчета уравнений Которую не построили при её жизни? Ебать, да она ещё и во времени телепортировалась. Какие же фемки дегенераты блять.
>>300289925 >Первым для этой машины был мужик создатель. И никак иначе. Говоришь, как Чарльз Бэббидж. Ссу тебе на ебало, чмоня. Не опубликуй Ада свои примечания, капчевал бы сейчас с помощью бумаги и чернил
>>300290153 > Запускал? Работало без отладки? Запускал. Это микроконтроллер, восьмибитный, примитивный донельзя, как ты себе отладку на нем представляешь? Это ж не пека в ИДЕшечке писать.
Был тестовый стенд с тумблерами как устройство ввода и лампочками как устройство вывода, на нем и запускали.
>>300290425 Нет. Даже не погромизд. Но набросать говноскрипт могу. Баб не признаю ни в одной точной или сложной науке до современности. У них не было на то возможностей. Это сейчас их с кухни выпустили и они могут продавать пизду на онлифансе или даже пройти в макаку ойти, но не в сеньора.
>>300290360 >Подобная херня есть и от черножопых которые пытались форсить что лампочку придумал нигер. На деле это просто пиздеж, как и с адой. Подобная херня есть и от ЦК которые пытались форсить что лампочку придумал Яблочков. На деле это просто пиздеж, как и с нигером
>>300290492 >но не в сеньора. Ты не прав. Оно и видно, что ты не особо в теме. Не нужно быть гением, чтобы стать сеньором. Особенно в мире, где таким словом могут обзывать условного миддла.
>>300290492 Вероятно, тебя просто сильно обидели бабы в детстве, вот ты и бесишься. Воспитывали мама и бабушка, девочки не замечали и или дразнили, вот ты и бесишься. Ты здорово похож на радфемку. Ты даже называешь всех, кто тебе не нравится баборабами. У них тоже есть слово для нормальных женщин, которые не ненавидят всех мужиков. Но пожалуйста, не выдавай свою веру за объективную истину
>>300290540 Блять, зачем я спорю с каким-то ребенком? Во-первых, эта была шутка. Во-вторых, Эдисон украл это у Соуна. А ильича я даже не упоминал. И вообще, ты, кажется, не излагаешь точку зрения, а просто какой-то поток сознания пишешь, нахуй это все
С лампочкой вообще похуй, ибо там дохуя кто пытался. Когда есть электричество, что-то поджечь вопрос недолгого времени. Даже резистор светится, когда ты рукожоп. Далее просто искали то, что не сгорает сразу, а может светиться поярче и подольше. Вариантов из чего делать нить много перепробовали. И тут как брать. То что светится или то что хотя бы сутки работает не сгорая. Человек от этого будет разный.
>Типа через другие языки программирования Да. По сути, в каком-то смысле ты можешь создать свой язык программирования на листочке, тупо перечисляя команды и процедуры и то, что они делают. Но чтобы твой язык работал тебе нужно написать программу, которая перегонит твою хрень в низкоуровневый код, понимаемый процессором. На выходе ты получишь цепочку нулей и единиц, которые понимает процессор. На самом деле все гораздо сложнее, но в одном после всего не расскажешь.
>А самый первый как создали? Если упростить, то вручную создавали комбинации нулей и единиц, которые являлись инструкциями для процессора. Так же и написали первый компилятор для первого языка программирования
>>300283994 (OP) языки бывают низкого и высокого уровня берем базированный язык СИ он транслируется в асемблер а ассемблер потом в байт код, а байт код уже сам комп выполняет
>>300289029 Ты живешь в век технологий, а не знаешь наверняка нихуя. Ада Лавлейс была дочерью Байрона. Она была в высших кругах общества. Ее отчим занимался автоматонами и вычислительными машинами. На росла в среде самой близкой к науке, в которой только возможно, и активно интересовалось вопросом. Она собственноручно опубликовала научную статью с рядом оригинальных и прорывных идей, за которые ее уважали задолго до появления феминизма, как такового, еще в эпоху, когда женщинам не было доступно высшего образования. но конечно же она не могла хоть в чем-то обойти тебя, баба же. Ебучий компенсатор. Обиженка. Такие же, как ты, злятся на евреев или детей. Надеюсь, своих детей у тебя не будет, иначе ты всю жизнь будешь отрицать их достижения.
Я понимаю, что ОП решил потролить, но вкину немного своей жопоболи. Я не погромист ни разу, просто интересно, как все это вот работает. Ты не представляешь, сколько говно литературы пришлось перелопатить, чтобы понять основную концепцию - для каждой команды ассемблера есть конкретная схема на транзисторах внутри процессора. Т.е. список команд ассемблера в спецификации это набор схем на транзисторах, с которыми ты работаешь.
Когда я открыл очередную книгу и нашел это простое высказывание, да ещё с примерами на схемах я немного электрик и люблю, когда все в схемах , я прослезился, блядь. И наконец сложился пазл, как и почему работает набор строчек на листочке внутри железки
>>300283994 (OP) Сначала был IBM. И был он огромен. Чтобы посчитать например 2 числа, надо было буквально передёргивать рычаги, коих было много. Это офк господа мочёные делегировали на женщин, далее некоторые часто используемые комбинации 0 и 1 (т.е вкл и выкл рычаг) просто объединили в одну логическую инструкцию. Далее набор таких инструкций объединили и получился первый ассемблерный язык. А далее на ассемблере написали компилятор Shortcode, ну и попёрло
>>300283994 (OP) Есть машина. Она понимает только нули и единицы. Есть логические вентили. Это физические объекты, которые взаимодействуют с током внутри процессора. Они преобразовывают сигналы - принимают ввод и в зависимости от того, какой сигнал получают, дают 0 или 1. 0 - сигнал есть, 1 - сигнала нет. При помощи вентилей можно делать увлекательные вещи с током. Есть ассемблер. Это низкоуровневый язык программирования, то есть максимально приближенный к машинному коду, проще этого может быть только переписывание отдельных нулей и единиц. Собственно, это ассемблер и делает: ты пишешь ему английские букавы и составляешь из них слова, а он понимает каждую команду как определённую инструкцию, по которой определённым образом переписывает нули и единицы. Он не был написан ни на чём, его создатель буквально строчил нули и единицы. Как он таким образом создал язык программирования? Хуй его знает. Но именно так он и работает. Остальные языки программирования пишут на других языках программирования =Да-да, не удивляйтесь=. То есть, С, например, написан на ассемблере, а пайтон написан на С.
>>300283994 (OP) Вводили команды процессора прямо тумбоерами, как вот на альтаире https://youtu.be/ZKeiQ8e18QY Потом придумали записывать состояния на перфокарты и магнитную ленту и понеслась.
Сраграмисты, вы даже не знаете, кто придумал концепцию исходного кода и компиляции его в исполняемый. Сейчас других вариантов просто нет, поэтому вы считаете это единственной возможностью.
>>300295014 > Сраграмисты, вы даже не знаете, кто придумал концепцию исходного кода и компиляции его в исполняемый. Это очевидная идея на поверхности, похуй кто там ее "придумал"
>>300295296 > Это очевидная идея на поверхности Нет, школьничек. Ты так говоришь, во-первых потому что это уже придумано. Во-вторых, других вариантов ты просто даже представить себе не можешь.
>>300283994 (OP) Инженеры-компьютерщики и электрики компаний Intel, AMD или других компаний-поставщиков процессоров разрабатывают проект процессора. Различные аспекты ЦП составляют его архитектуру: разрядность регистров и шины, порядок байтов, какие кодовые номера соответствуют тому или иному поведению и т. д.
Последняя часть, «какие кодовые номера соответствуют тому или иному поведению», представляет собой архитектуру набора команд. Я собираюсь немного солгать и сказать вам, что двоичные числа напрямую управляют действиями оборудования в зависимости от того, как оно устроено. В архитектуре x86 используются командные слова переменной ширины, поэтому некоторые инструкции имеют размер одного байта, а некоторые — огромные, и Intel приложила немало усилий для их оптимизации. Другие архитектуры, такие как MIPS, имеют 32-битные или 64-битные командные слова фиксированной ширины.
Инструкция — это отдельная единица вычисляемых данных. Он включает в себя фактическое поведение ЦП, информацию, описывающую, откуда данные извлекаются и куда идут данные, числовые литералы, называемые «немедленными», или другую информацию, необходимую для работы ЦП. Инструкции представляют собой просто двоичные числа, представленные в формате, определенном архитектурой набора команд ЦП.
Людям трудно работать с этими числами, поэтому мы создали концепцию под названием «язык ассемблера», которая создает сопоставления 1:1 между машинным двоичным кодом и (полу) читаемыми человеком словами и понятиями. Например, это инструкция MIPS, которая запрашивает сложение addi r7, r3, $20содержимого регистров 3 и (32), и этот результат сохраняется в регистре 7.0x20
Два примитива потока управления — это компараторы и перемычки. Все остальное построено на этих двух фундаментальных моделях поведения.
Все процессоры определяют операторы сравнения и операторы перехода.
Язык ассемблера позволяет нам присваивать определенные адреса памяти человеческими метками. Ассемблер может выяснить, каков фактический адрес этих меток во время сборки или компоновки, и заменить его jmp some_labelбезусловным переходом по адресу или jnz some_other_labelусловным переходом, который будет выполнен, если нулевой флаг регистра состояния ЦП не установлен ( это совсем другая тема, не беспокойтесь об этом, спросите, если вам интересно).
Сборка сложная и не портативная.
Поэтому мы написали ассемблерные программы, которые сканировали текст в английском стиле на наличие определенных фраз и символов и создавали для них ассемблер. Так родились первые языки программирования: программы, написанные на ассемблере, сканировали текстовые файлы и выгружали ассемблер в другой файл, а затем ассемблер (другая программа , написанная либо на ассемблере, либо в шестнадцатеричном формате младшим инженером, которому серьезно недоплачивают) переводил файл сборки в двоичный формат, а затем компьютер сможет его запустить.
Как только, скажем, компилятор C был написан на ASM и способен обрабатывать весь объем языка C (спецификация ключевых слов, грамматики и поведения, которую Кен Томпсон и Деннис Ритчи составили, а затем опубликовали), программа могла бы быть написан на C, чтобы делать то же самое, компилироваться с помощью C-компилятора в ASM, и теперь есть C-компилятор, написанный на C. Это называется boostrapping.
Сам язык — это просто формальное определение того, какие ключевые слова и грамматика существуют, а также правила того, как их можно комбинировать в исходном коде, чтобы совместимая программа могла превратить их в машинные инструкции. Спецификация языка также может утверждать соглашения, например, о том, как выглядят вызовы функций, какие библиотечные функции предполагаются доступными, как взаимодействовать с ОС и т. д. Стандарты C и POSIX тесно взаимосвязаны и обеспечивают инфраструктуру, на которой построена большая часть наших современных вычислительных систем.
Язык сам по себе чертовски бесполезен. Итак, библиотеки существуют. Библиотеки — это коллекции исполняемого кода (функций), которые могут вызываться другими функциями. Некоторые библиотеки считаются стандартными для языка программирования и, таким образом, становятся неотъемлемой частью языка. Функция printfне определена компилятором C, но она является частью стандартной библиотеки C, которая должна быть в допустимой реализации C. So printfсчитается частью языка C, хотя это не ключевое слово в спецификации языка, а скорее имя функции в libc.
Компиляторы должны уметь переводить исходные файлы на своем языке в машинный код (часто ASM-текст больше не генерируется в качестве промежуточного шага, но может быть запрошен) и должны уметь объединять несколько пакетов машинного кода в единое целое. Этот последний шаг называется связыванием и позволяет объединять библиотеки с программами, чтобы программа могла использовать библиотеку, а не изобретать велосипед.
>>300283994 (OP) >А КАК СОЗДАЮТ ЯЗЫКИ ПРОГРАММИРОВАНИЯ? Через булеву алгебру и базовый ассемблер, дальше идет мантисная надстройка с применением высокоуровенвых моделей и абстракции.
>>300295406 > Нет, школьничек Уверен что я гораздо старше тебя, поридж
> Ты так говоришь, во-первых потому что это уже придумано Действительно, "чёт писать циферки бред какой то ебаный, может промежуточный язык сделать" это же такая ни разу не очевидная мысль...
> Во-вторых, других вариантов ты просто даже представить себе не можешь Других вариантов и нет. Все что ты тут высрешь - все равно сведётся к этому варианту.
>>300295574 > Других вариантов и нет. Все что ты тут высрешь - все равно сведётся к этому варианту. Ты не прав, пердёж. Просто ты не можешь мыслить вне этой парадигмы.
>>300283994 (OP) В ЦП компьютеров жестко запрограммирован набор инструкций, определяющих виды операций, которые может выполнять компьютер. Например, сложение двух чисел.
Эти инструкции закодированы в двоичном формате. Например, инструкция по добавлению двух чисел в память (вместе с необязательной константой) может выглядеть так:
0010000XXXXXYYYYYZZZZZZZZZZZZZZZZZ
Где X обозначают место, где можно найти первое число. Y представляет собой место, где можно найти второе число, Z представляют третью константу, а 0010000 сообщает компьютеру, что это операция сложения.
Это не особенно интуитивное представление. Поэтому вместо этого мы могли бы захотеть представить это чем-то более похожим на язык, например:
«ДОБАВИТЬ XY Z»
Но теперь нам нужна программа, которая преобразует "ADD XY Z", который мы понимаем, в "0010000XXXXXYYYYYYZZZZZZZZZZZZZZZZ", который понимает компьютер. Итак, мы создаем программу, которая делает это, напрямую программируя ее с помощью машинного кода.
Так появились ассемблеры . Этот язык немного более высокого уровня назывался Ассемблер, а программы, которые преобразовывали ассемблер в машинный код, назывались ассемблерами.
Языки более высокого уровня делают команды еще более понятными и запоминающимися, преобразуют их в несколько инструкций машинного уровня с помощью одной команды высокого уровня, а также оптимизируют и упрощают код.
Первые языки высокого уровня программировались на ассемблере вместе с программами для преобразования языка высокого уровня в машинный язык, называемыми компиляторами.
Сегодня мы используем языки высокого уровня для создания других языков высокого уровня.
>>300293066 Нет никакого С. Есть компиляторы С, которые написаны на чем попало от ассемблера, С, плюсов до жаб, Шарипов и хаскелей.
Есть некоторое мнение что и самого С не существует, потому что в стандарте дохуища всяких implementation defined вещей, которые в каждом компиляторе могут быть реализованы по разному и поэтому есть только диалекты С конкретных компиляторов (и далее конкретных их версий)
>>300293735 Удивительно что тебе пришлось перелопатить тонну литературы прежде чем ты наткнулся на, наверное, самую известную и популярную вводную книгу
>>300296354 > Нет никакого С. Есть компиляторы С, которые написаны на чем попало от ассемблера, С, плюсов до жаб, Шарипов и хаскелей. Ну компиляторы и имеются в виду. Можно считать большинство, можно взять самые известные gcc/clang.
> Есть некоторое мнение что и самого С не существует, потому что в стандарте дохуища всяких implementation defined вещей, которые в каждом компиляторе могут быть реализованы по разному и поэтому есть только диалекты С конкретных компиляторов (и далее конкретных их версий) Но стандарт то есть.
>>300295808 Тащемта, вот это хорошее объяснение. Потом уже на одном из ассемблеров написали части С, с помощью которых дописали весь остальной язык. Ну а С уже это база для всего на свете. 90% процентов языков на нем базируются
>>300296402 > Удивительно что тебе пришлось перелопатить тонну литературы прежде чем ты наткнулся на, наверное, самую известную и популярную вводную книгу Ну не тонну, я слегка напиздел. Но пару книг и десяток видосов на Ютубе подпалили мне пердак. Что куча воды и нихуя не понятно. Помог как всегда Двач - образовательный.
Вообще, по моему нахрен не нужному мнению, это современная проблема - найти годное пособие по интересующей теме. Любой теме
>>300296527 Угу, стандарт есть, а прям конкретного языка, считай, нет. Потому что один и тот же код, скомпиленый разными компиляторами может ввести себя по-разному. Но это, в принципе, заёб чисто сишный и местами плюсовый. Следующие языки уже нормально проектировали
>>300297129 Ну пара книг это немного. А на Ютубе найти что-то глубже "для домохозяек за 5 минут" где нихуя толком не объясняют вообще практически невозможно. У всех каналов с нормальными объяснениями по 40 лайков и по паре тысяч просмотров
>>300297164 > Угу, стандарт есть, а прям конкретного языка, считай, нет. Потому что один и тот же код, скомпиленый разными компиляторами может ввести себя по-разному. Не должен, если это не UB. А с UB компилятор имеет право делать что захочет. > Следующие языки уже нормально проектировали Но UB это нормальное проектирование, оно позволяет всю эту хуйню оптимизировать. Просто не надо так писать через жопу.
>>300297400 > Но UB это нормальное проектирование, оно позволяет всю эту хуйню оптимизировать.
Сомнительно. В других языках UB в стандартах нет, а оптимизировать их как-то получается.
> Просто не надо так писать через жопу.
Просто берешь и пишешь без UB. Звучит хорошо, но в реальности не работает, поэтому все в 33 слоя обмазываются всякими санитайзерами, валграйндами, анализаторами, сочиняют мисры и все равно где-нибудь стреляет в конце-концов.
Всё-таки мне кажется что язык спроектирован жопой (ну на те года это может и норм было, не спорю), раз за десятилетия до сих пор не решили проблему с кусающим за жопу UB несмотря на все слои обмазывания сторонним инструментарием.
>>300297717 > Сомнительно. В других языках UB в стандартах нет, а оптимизировать их как-то получается. Так я других таких же языков и не знаю. Раст разве что? Ну хуй знает как там дела обстоят и что там с оптимизацией, но там вроде вообще стандарта нет и реализация только одна.
>>300297972 Ну в смысле? Жаба, шарпы, практически все остальное существующие же. Там либо в стандарте точно специфицировано поведение, либо потенциальное уб разрешено только в специально огороженных блоках.
У пацанов, живущих в будущем, типа хаскелистов, агдистов и прочих борщехлебов вообще UB не выразимо в их модели вычислений.
>>300283994 (OP) До того как языки программирования появились на любой вкус, программировали чаще всего на ассемблере под конкретный процессор. Разные процессоры поддерживали разные команды, и большая часть из них была своеобразным синтаксическим сахаром, чтобы программистам было удобнее писать на ассемблере. Трансляция из ассемблера в машинный код очень примитивная.
>>300298190 > Ну в смысле? Жаба, шарпы, практически все остальное существующие же. Так они не нативные, кресты с сишкой хуярят сразу машинный код, это ЯП системного уровня, в отличие от твоих жав с шарпами.
>>300298398 Ну хаскель и агда хуярят в машкод, и? Жабошарпы во время жит-компиляции хуярятся в машкод тоже. Я сейчас даже не знаю есть ли что, что честно интерпретируется в свитч кейсах на 100%, а не жититься в машкод. Ну кроме петов разве что.
>>300283994 (OP) В основном современные япы пишут на си с вкраплениями ассемблера, но если интересно как создали ассемблер и как все в целом тут устроенно, читай ссылку выше и учи матчасть
Типа через другие языки программирования? А самый первый как создали? Я вообще не понимаю.