Скромный гений

Страницы: 1 2 3  ОТВЕТИТЬ НОВАЯ ТЕМА
Domatsu 17 июн 2026 в 11:32
Оналитег и психолаг  •  На сайте 8 лет
1
Цитата (basterr @ 17 июн 2026 в 09:21)
Цитата
Всегда был интересен вопрос.
Мы изучаем среды программирования, команды, символы и т.д. Чтобы написать программу надо выучить команды среды программирования. Но вот вопрос.
А сама среда программирования на чем и как написана? Почему компьютер, когда я пишу "do" понимает это как делай, а не как остановись или иное. Где и как написаны среды программирования, и как эти команды компьютер, работающий на 0 и 1 понимает. Кто был первым, научившим компьютер понимать наши команды, придумавшим как соединить человеческий язык и язык нулей и единиц?

Жааль в статье ответа нет, но хоть имя этого гения узнал.

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

Ты так написал, словно интерпретаторы не делают ровно того же. :)

И самое забавное во всех этих штуках, что очень многие воспринимают тот же ассемблер как язык, на котором работает процессор. На самом деле это ведь тоже программная надстройка для преобразования кода в машинный язык, только структурно с близким к машинному языку синтаксисом.
DIMONSTRATOR 17 июн 2026 в 11:38
Ярила  •  На сайте 4 месяца
1
Цитата (EVPATORIETS @ 17 июн 2026 в 00:21)
Деннис Ритчи изобрел C в 1972 году, был соавтором Unix в 1969 году,

Вот на таких людях держится мир, а не на "великих" политиках и "успешных" бизнесменах, они просто пользуются плодами их труда.
"С" действительно отличный язык для написания программ, причем изначально там не было ООП, но написать можно все, что хочешь.
Peredvan 17 июн 2026 в 11:41
dw = |Ψ|² dV  •  На сайте 4 года
0
Цитата (Zlodey339 @ 17 июн 2026 в 02:36)
Всегда был интересен вопрос.
Мы изучаем среды программирования, команды, символы и т.д. Чтобы написать программу надо выучить команды среды программирования. Но вот вопрос.
А сама среда программирования на чем и как написана? Почему компьютер, когда я пишу "do" понимает это как делай, а не как остановись или иное. Где и как написаны среды программирования, и как эти команды компьютер, работающий на 0 и 1 понимает. Кто был первым, научившим компьютер понимать наши команды, придумавшим как соединить человеческий язык и язык нулей и единиц?

Жааль в статье ответа нет, но хоть имя этого гения узнал.

Основы микропроцессорной техники тебе в руки. Начни с конечных автоматов, чтобы понять, как функционируют алгоритмы на уровне аппаратуры.
Alex666666 17 июн 2026 в 11:43
Ярила  •  На сайте 3 года
0
Ну, такой уж огромной разницы между с и ассемблером нет. И тому и другому нужен компилятор, и переносимость его на другую архитектуру зависит от наличия соответствующего компилятора, который тоже должен кто-то написать. Да, писать на си гораздо приятнее и быстрее, в основном из-за существования множества библиотек функций.
На мой взгляд, чистый си выигрывает у других языков за счет свободной работы с абстрактным указателем.

Но реальный прорыв был при появлении с++ и работы с объектами.
Copoka02 17 июн 2026 в 11:46
Юморист  •  На сайте 7 лет
0
Сколько кнопок на клавиатуре..низнаещь наверно ,не програмист

Размещено через приложение ЯПлакалъ
Domatsu 17 июн 2026 в 11:56
Оналитег и психолаг  •  На сайте 8 лет
4
Цитата (Alex666666 @ 17 июн 2026 в 13:43)
Ну, такой уж огромной разницы между с и ассемблером нет. И тому и другому нужен компилятор, и переносимость его на другую архитектуру зависит от наличия соответствующего компилятора, который тоже должен кто-то написать. Да, писать на си гораздо приятнее и быстрее, в основном из-за существования множества библиотек функций.
На мой взгляд, чистый си выигрывает у других языков за счет свободной работы с абстрактным указателем.

Но реальный прорыв был при появлении с++ и работы с объектами.

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

Что касается в необходимости иметь компилятор под нужную архитектуру, так это безусловная необходимость, которая никуда и никогда не денется.
metalalex 17 июн 2026 в 11:58
Ярила  •  На сайте 7 лет
1
Цитата (cera01 @ 17.06.2026 - 11:01)
Отец... помним тебя...

Не, у терминатора перед глазами ассемблер был. Причем, в первой части мотороловский, а во второй - интеловский

Размещено через приложение ЯПлакалъ
aalm 17 июн 2026 в 12:09
Юморист  •  На сайте 12 лет
2
Ёптель - практически настольная книга, нет, нет - да загляну иногда.

Скромный гений
Domatsu 17 июн 2026 в 12:33
Оналитег и психолаг  •  На сайте 8 лет
1
Цитата (aalm @ 17 июн 2026 в 14:09)
Ёптель - практически настольная книга, нет, нет - да загляну иногда.

У меня была синяя книжка такая, но в интернете найти не смог такого издания.
Drunkone 17 июн 2026 в 12:39
Ярила  •  На сайте 9 лет
0
Цитата (Zlodey339 @ 17.06.2026 - 00:36)
Всегда был интересен вопрос.
Мы изучаем среды программирования, команды, символы и т.д. Чтобы написать программу надо выучить команды среды программирования. Но вот вопрос.
А сама среда программирования на чем и как написана? Почему компьютер, когда я пишу "do" понимает это как делай, а не как остановись или иное. Где и как написаны среды программирования, и как эти команды компьютер, работающий на 0 и 1 понимает. Кто был первым, научившим компьютер понимать наши команды, придумавшим как соединить человеческий язык и язык нулей и единиц?

Жааль в статье ответа нет, но хоть имя этого гения узнал.

Для этого люди ходят в университеты, где им показывают весь путь, как do через пару десятков слоёв системных вызовов, трансляторов и интерпретаторов превращается в реальные 0 и 1 в системной шине.

Размещено через приложение ЯПлакалъ
taper 17 июн 2026 в 12:43
Ярила  •  На сайте 12 лет
0
Цитата (Zlodey339 @ 17 июн 2026 в 00:36)
Всегда был интересен вопрос.
Мы изучаем среды программирования, команды, символы и т.д. Чтобы написать программу надо выучить команды среды программирования. Но вот вопрос.
А сама среда программирования на чем и как написана? Почему компьютер, когда я пишу "do" понимает это как делай, а не как остановись или иное. Где и как написаны среды программирования, и как эти команды компьютер, работающий на 0 и 1 понимает. Кто был первым, научившим компьютер понимать наши команды, придумавшим как соединить человеческий язык и язык нулей и единиц?

Жааль в статье ответа нет, но хоть имя этого гения узнал.

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

Берешь спеку на проц/шину и пишешь. Слоями, по уровням абстракций, от низших к высшим lol.gif

Даже такое есть, прости Господи! lol.gif

Скромный гений

Это сообщение отредактировал taper - 17 июн 2026 в 12:47
sonzari 17 июн 2026 в 12:57
Юморист  •  На сайте 3 года
2
Цитата (Dyanis @ 17.06.2026 - 11:27)
Гениям людская слава не интересна. Ничто не сравниться с радостью и осознанием решенной задачи, найденного метода

Я радиолюбитель с опытом 20+ лет. До сих пор помню то непередаваемое чувство когда сам своими руками собрал и настроил свой первый трансивер. И близко никаких мыслей про деньги не было. Точнее деньги я на его сборку только тратил. Да и не купить то чувство ни за какие деньги.

Размещено через приложение ЯПлакалъ
cera01 17 июн 2026 в 13:00
Ярила  •  На сайте 10 лет
0
Цитата (metalalex @ 17 июн 2026 в 11:58)
Цитата (cera01 @ 17.06.2026 - 11:01)
Отец... помним тебя...

Не, у терминатора перед глазами ассемблер был. Причем, в первой части мотороловский, а во второй - интеловский

Молчи кожанный мешок... много отцов было..., сын полка так сказать
amkarnaf 17 июн 2026 в 13:39
Ярила  •  На сайте 12 лет
0
Цитата (Zlodey339 @ 16 июн 2026 в 23:36)
Всегда был интересен вопрос.
Мы изучаем среды программирования, команды, символы и т.д. Чтобы написать программу надо выучить команды среды программирования. Но вот вопрос.
А сама среда программирования на чем и как написана? Почему компьютер, когда я пишу "do" понимает это как делай, а не как остановись или иное. Где и как написаны среды программирования, и как эти команды компьютер, работающий на 0 и 1 понимает. Кто был первым, научившим компьютер понимать наши команды, придумавшим как соединить человеческий язык и язык нулей и единиц?

Жааль в статье ответа нет, но хоть имя этого гения узнал.

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

Это в самом простейшем варианте.

А среда программирования просто даёт больше удобства разработчику.
amkarnaf 17 июн 2026 в 13:46
Ярила  •  На сайте 12 лет
2
Цитата (Alex666666 @ 17 июн 2026 в 10:43)
Ну, такой уж огромной разницы между с и ассемблером нет. И тому и другому нужен компилятор, и переносимость его на другую архитектуру зависит от наличия соответствующего компилятора, который тоже должен кто-то написать.

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

Так что не вводи людей в заблуждение: у языка ассемблера того или иного процессора никакого компилятора нет: как человек напишет, так и переведёт в коды. И всё. А вот человек должен предусмотреть в этом случае всё, от начала и до конца.
Русланатор 17 июн 2026 в 13:46
Ярила  •  На сайте 10 лет
0
Дениса Ричи знал, а ты кто такой? ❣

Размещено через приложение ЯПлакалъ
quenelle 17 июн 2026 в 14:03
Ярила  •  На сайте 17 лет
1
Такие люди восхищают и их идеями пользовался Торвальдс.
А вот всякие Гейтцы, Джобсы и Куки - просто продаваны, которые подсуетились вовремя )
avaava 17 июн 2026 в 14:03
Приколист  •  На сайте 15 лет
1
Цитата (amkarnaf @ 17 июн 2026 в 13:46)
Цитата (Alex666666 @ 17 июн 2026 в 10:43)
Ну, такой уж огромной разницы между с и ассемблером нет. И тому и другому нужен компилятор, и переносимость его на другую архитектуру зависит от наличия соответствующего компилятора, который тоже должен кто-то написать.

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

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

Ми пардон, но в вашем утверждении противоречивые параграфы!
MASM и TASM делают код для одного и того же процессора! Как же так, человек пишет на разных языках (а они, бляха-муха, разные! Я в них путался иногда), а потом процессор понимает и тот и другой? Вот именно этот перевод с языка символов (буковок) в цифру и есть компиляция. И да, смещения рассчитывает тоже компилятор (если вы ими пользуетесь:? Нет, вы пользуетесь, иначе всё будет ну очень печально). Это делает компилятор, он просчитывает адреса в блоке данных, он рассчитывает адреса возврата из функций (вру, это делает процессор), он заменяет команды их кодами, он подставляет адреса вместо названий переменных (вы же при написании используете переменные, не так ли? Или запоминаете адрес каждой?). Компилятор именно компилирует программу. Но никаких оптимизаций ассемблер не делает. Это правда. Всё как написал человек. Поэтому его результат работы обратим. Можно и туда и сюда. Чем и пользуются, когда изучают программу без исходного кода.


И да, книжка такая у меня тоже есть, только коричневая. Простая и понятная, не то что нынешние по C++, где так наворотили синтаксис, что интуитивно понять написанное весьма непросто.
JuryFG 17 июн 2026 в 14:17
Ярила  •  На сайте 14 лет
0
Цитата (Alex666666 @ 17 июн 2026 в 10:43)
Ну, такой уж огромной разницы между с и ассемблером нет. И тому и другому нужен компилятор, и переносимость его на другую архитектуру зависит от наличия соответствующего компилятора, который тоже должен кто-то написать. Да, писать на си гораздо приятнее и быстрее, в основном из-за существования множества библиотек функций.
На мой взгляд, чистый си выигрывает у других языков за счет свободной  работы с абстрактным указателем.

Но реальный прорыв был при появлении с++ и работы с объектами.

Не скажите. Даже без библиотек это огромная разница.
Когда одна строчка на C, например в простом примере:
int sum(int a,int b){return a+b;}
На ассемблере выглядит как
sum:
movl %edi,%eax
addl %esi,%eax
ret
При этом имеет намного лучшую читаемость и не выглядит громоздкой. Несложно представить, как выглядит более сложный код, разбитый на единичные действия для ассемблера.

Респект Деннису Ричи за разработку.

Это сообщение отредактировал JuryFG - 17 июн 2026 в 14:19
Mentat 17 июн 2026 в 14:18
Ярила  •  На сайте 18 лет
0
Кстати имеет смысл своих гениев тоже поискать, таковые были и есть, просто о них мало кому известно.
Мы не вышли на мировой рынок ПО и языков программирования, но это не значит что нет своей истории ИТ

Размещено через приложение ЯПлакалъ
Zlodey339 17 июн 2026 в 14:45
Ярила  •  На сайте 9 лет
0
Цитата
Петцольд "Код. Тайный язык информатики" - как раз про это.

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

В самом начале компьютеры программировались ручным вводом машинных кодов. Затем для кодов придумали мнемоники, т.е. имена, для удобства. Грубо, вместо кода 0110 1101 1001 1100 стали писать ADD. Это - языки ассемблера, или просто ассемблеры (именно во множественном числе, для разных процессоров разные и ассемблеры). В базовом случае, команды ассемблера прямо переводятся в машинные коды простой заменой по списку, потому его называют низкоуровневым языком. А вот для высокоуровневого языка уже нужен компилятор - смотри выше.

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

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

Первый в истории компилятор создала Грейс Хоппер, она же и ввела в оборот это слово. Один из первых коммерчески используемых компиляторов (и, заодно, высокоуровневых языков) - Fortran (сокр. от Formula Translator, переводчик формул) - Дж. Бэкус, 1957.

Респект.


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

Размещено через приложение ЯПлакалъ
MaxDevilson 17 июн 2026 в 15:26
Ярила  •  На сайте 4 года
0
Как вообще создают языки программирования? С чего начинают, это ж капец, как вообще?!

Размещено через приложение ЯПлакалъ
Domatsu 17 июн 2026 в 15:27
Оналитег и психолаг  •  На сайте 8 лет
0
Цитата (Mentat @ 17 июн 2026 в 16:18)
Кстати имеет смысл своих гениев тоже поискать, таковые были и есть, просто о них мало кому известно.
Мы не вышли на мировой рынок ПО и языков программирования, но это не значит что нет своей истории ИТ

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

Это сообщение отредактировал Domatsu - 17 июн 2026 в 15:40
Domatsu 17 июн 2026 в 15:40
Оналитег и психолаг  •  На сайте 8 лет
0
Цитата (MaxDevilson @ 17 июн 2026 в 17:26)
Как вообще создают языки программирования? С чего начинают, это ж капец, как вообще?!

С идеи всё начинается, как правило это основополагающий момент, тот же Си задумывался как универсальный язык, поэтому в нём можно сделать всё, но не для всего он прям хорош, например бизнес-логику в нём описывать неудобно в отличии от какого-нибудь скриптового языка типа 1с или abap'а саповского, которые только на это и годны.
Иногда язык придумывают просто чтоб травмировать людям психику, типа того же brainfuck :)
Дальше "придумывают" синтаксис, который зачастую проистекает из идеи, ну а затем уже реализуют непосредственно компилятор/интерпретатор, который преобразует текст в команды.

Это сообщение отредактировал Domatsu - 17 июн 2026 в 15:40
Ventil98 17 июн 2026 в 16:18
Ярила  •  На сайте 11 лет
0
Цитата (Zlodey339 @ 17 июн 2026 в 00:36)
Всегда был интересен вопрос.
Мы изучаем среды программирования, команды, символы и т.д. Чтобы написать программу надо выучить команды среды программирования. Но вот вопрос.
А сама среда программирования на чем и как написана? Почему компьютер, когда я пишу "do" понимает это как делай, а не как остановись или иное. Где и как написаны среды программирования, и как эти команды компьютер, работающий на 0 и 1 понимает. Кто был первым, научившим компьютер понимать наши команды, придумавшим как соединить человеческий язык и язык нулей и единиц?

Жааль в статье ответа нет, но хоть имя этого гения узнал.

Среда программирования в те времена представляла собой ASCII редактор (типа блокнота) и компилятор. Графики тогда не было.
Программист писал текст программы, затем запускал компилятор для преобразования текста в машинный код. При этом проверялись простейшие ошибки типа необъявленная переменная или несовпадение числа скобок.
Машинный код уже фактически состоял из команд процессора. Например, строка в программе "i = 1;" преобразуется в следующие команды:
- в регистр указателя памяти поместить адрес ячейки под названием "i"
- в ячейку памяти записать байт 0х00000001
и так далее....
Сейчас "среда программирования" - это графическая оболочка, под которой спрятаны редакторы кода (с подсветкой и анализом синтаксиса), набор библиотек и функций типа прочитать файл или нарисовать квадратик, интерактивный компилятор и отладчик, который позволяет пошагово пройтись по программе и искать логические ошибки.

И напоследок старинная байка: "Что такое программирование"

Цитата
Как объяснить непосвященному что такое программирование?

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

Что такое программирование?

Представьте, что вы подробно описываете надевание штанов: "взять штаны так, чтобы ширинка была спереди, а задний карман - сзади; нагнуться, опустить руки до уровня коленок..." и т. д. Это и есть программирование.

Что такое программирование на языке ассемблера?

Представьте, что вы описываете надевание штанов очень подробно, в виде: "сократить такую-то мышцу, растянуть такую-то..."

Что такое тестирование программы?

Протестировать программу - значит попробовать надеть штаны. Могу гарантировать, что с первого раза у вас ничего не получится: штаны вы наденете задом наперед или на голову.

Чем отличаются эффективный и неэффективный алгоритмы?

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

Что такое ошибка в программе?

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

Что такое ошибка, приводящая к зависанию компьютера?

Если, надев штаны, вы обнаружили, что задохнулись.

Что такое оптимизация программы?

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

Что такое переносимость?

Это когда по вашему алгоритму можно надеть любые штаны на любого человека.

Что такое крах системы?

Исчезновение ваших штанов - как результат вашей деятельности.
Понравился пост? Ещё больше интересного в ЯП-Телеграм и ЯП-Max!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 16 897
0 Пользователей:
Страницы: 1 2 3  ОТВЕТИТЬ НОВАЯ ТЕМА

 
 

Активные темы



Наверх