По мотивам статьи
Про брадобрея, неопределенные вопросы математикам
Хочу предложить поразмышлять над старым вопросом, но с точки зрения современного опыта.
И так, перефразирую вопрос в более современную его интерпретацию
"Что раньше появилось компилятор или язык программирования?"
Айтишников здесь много - прошу высказаться.
С моей точки зрения - вопрос столь же бессмысленный как и про курицу с яйцом. И является ещё одним примером постановки задачи в отрыве от контекста.
Комментарии
Вообще-то первыми были трансляторы с языка Ассемблер
Не - первыми были перфокарты, если речь о боле-менее вменяемых вычислительных машинах, т.е. по сути первым был машинный код - а потом уже появились инструменты разработки.
а застал чела кто ЕС в маш кодах кодил
У меня на втором, кажется, курсе давали пару раз задачи - написать небольшую процедуру в машинных кодах 8086 процессора. Даже не на ассемблере, надо было именно вручную накидать коды. Вполне себе осмысленное упражнение в процессе изучения. Это примерно 94-й год.
легко. В 9-м классе.
В студенчестве кодил на машкодах д3-28 - надо было эксперимент автоматизировать. Потом даже редактор текста накодил - когда к ней принтер с дисплеем докупили.
Не перфокарты, а перфоленты и на них записан был двоичный код.
И вообще это просто способ ввода инфы в комп. Вопрос был в другом
Перфокарта - просто носитель данных, функционально она не отличается от флэшки. На ней может быть как программный код, так и любые другие данные.
Учим историю.
1843: Машинный алгоритм Ады Лавлейс
Ада Лавлейс изобретает первый в истории машинный алгоритм для разностной машины Чарльза Бэббиджа, который закладывает основу для всех языков программирования.
1944-45: Планкалкюль
Где-то между 1944-45 годами Конрад Цузе разработал первый «настоящий» язык программирования под названием Plankalkül (Расчет плана). Язык Zeus (помимо прочего) позволял создавать процедуры, в которых хранятся фрагменты кода, которые можно было вызывать снова и снова для выполнения рутинных операций.
1949: Язык Ассемблера
Ассемблер использовался в автоматическом калькуляторе с электронным запоминанием задержки (EDSAC). Ассемблер был разновидностью низкоуровневого языка программирования, который упростил язык машинного кода. Другими словами, конкретные инструкции, необходимые для работы с компьютером.
1949: Shortcode
Шорткод (или сокращенный код) был первым языком высокого уровня (HLL), предложенным Джоном Макколи в 1949 году. Однако именно Уильям Шмитт реализовал его для компьютера BINAC в том же году и для UNIVAC в 1950 году.
Создание первого компилятора.
1952: Автокодирование
Автокод был общим термином, используемым для семейства языков программирования. Autocode, впервые разработанный Аликом Гленни для компьютера Mark 1 в Университете Манчестера, был первым в истории скомпилированным языком, который был реализован, что означает, что он может быть переведен непосредственно в машинный код с помощью программы, называемой компилятором. Автокод использовался на первых вычислительных машинах Ferranti Pegasus и Sirius в дополнение к Mark 1.
учим историю:
"...БРАЗМ построить никак не получалось. Бэббидж как бы и не совсем виноват - машина сама не хотела, - но тогдашнее общество не было так же приучено к субъектности машин, как нынешнее. Слава Бэббиджа поменялась с "многообещающего ученого" на "слишком много обещающего". Лично для него это была трагедия. От которой он поехал лечиться по Европам и приехал в Санкт-Петербург аккуратно в 1832 году.
Из Санкт-Петербурга Бэббидж вернулся в Англию в 1833-м. В холодной и немытой России он внезапно охладел к своей возлюбленной БРАЗМ и заразился желанием построить новую машину, управляемую перфокартами. Этой хворью Бэббидж страдал остаток своей долгой жизни - до 1871 года.
Каким новым "новичком" отравили Бэббиджа в России? Программой....."
"... Итог: в 1833 году Бэббидж начал строить машину, сердцем которой стала программа.
Но авторство первой программы почему-то присуждают его единственной последовательнице, которая переводила его же лекции в 1843 году и только добавила туда пример программы, показывающий работу машины, построенной только через 100 лет (1946, ЭНИАК).
Где логика, спросите вы? Почему заслуги изобретателя присваивают его помощнице?
А не надо было вам, Бэббидж, ездить в эту токсичную Россию, становиться членом Санкт-Петербургской академии наук, да ещё в знаменательный 1832 год, когда оная академия рассматривала доклад "Новый способ записи мысли для обработки умственной машиной". Не надо было держать в руках чертежи "умственной машины" и читать про таблицы сведений на перфокартах. Не надо было ходить по коридорам русской академии, где можно было столкнуться с тем токсичным русским, который в одиночку создал свою умственную машину. Не надо было так откровенно передирать название его машины, наконец.
Это все крайне неприлично и очень неприятно. Поэтому первой программисткой вместо вас, Бэббидж, назначаем слабую беззащитную женщину, брошенную отцом лордом Байроном (зато знаменитый поэт и дружил с гомосексуалистами), умершую молодой от рака. Жалко. Жалко, что она не была негритянкой, но нельзя всегда получать то, что хочешь (but if you try sometimes и тд. Возможно, мы ещё узнаем что-то новое о происхождении Байрона, вон Пушкин же смог (иметь предков из Африки))...."
Короче: Семён Николаевич Корсаков
первыми были переключатели на пульте кампутера
посмотрите на досуге как выглядели первые эвм
Блин! Откуда вы, знатоки, понабежали? Вопрос ТС задал компилятор или язык. Так вот я ответил, что человечки создали сначала тупой транслятор, прежде чем додумались до компиляции. А применить понятие "язык программирования" к Ассемблеру нельзя. Это мнемоника командных кодов процессора - МНЕМОНИКА.
1 вначале были переключатели в ручную
2 потом появились перфокарты
3 - это была эпоха МЫШИНЫХ КОДОВ!
4 - а потом мышиные коды обьеденили в языки программирования
первый транслятор писали машкодами
Я и ответил, что про компиляторы ещё не мечтали. Транслятор из мнемоники в коды и назывался транслятором Ассемблера.
а смысл этой статьи какой?
очевидно что язык - его можно создать и без компилятора, описательно.
А какой смысл в языке (программирования) для которого нет компилятора. Ну или интерпретатора если уж совсем занудствовать?
теоретическая разработка языка для определенного круга задач или исправление недочетов существующих языков, как вариант
Какой смысл - это уже другой вопрос. Смысл вполне есть - например, есть всякие псевдокоды для описания алгоритмов, интуитивно вполне понятные, но для которых никто не делает компиляторов.
Здесь все просто : "Сначала было слово". Сначала появилась идея, как облегчить программирование, появилась идея языка, как должны выглядеть инструкции. Потом, как это реализовать. Ну и дальше по кругу.
А идею при помощи чего реализовали?
Да можно хоть прямо в машкодах.
Начал тему в которой ни бумбум?
Похоже.
В догонку - Вы действительно "Дровосек" а не АйТишник...
В истории не силён, в философии - тоже, поэтому отвечу просто как чувствую - компилятор был раньше. Хотя конечно не в виде программы, наверное, а как набор правил трансляции. Но если говорить о псевдоязыках, типа математического описания алгоритма, или блок-схем, то они конечно появились раньше.
Вы неправильно сомневаетесь. Для того чтобы компилировать, надо чтобы было что компилировать. Никаких "правил трансляции" там нет. Простейший компилятор называется ассемблером и переводит ассемблерную инструкцию (мнемонику), например CALL $203C из текстового файла в последовательность из трёх байт CD 3C 20 (бинарная форма). Но эта система мнемоник (язык ассемблера) придумана производителем процессора задолго даже того как процессор был создан, не говоря уже о том когда программист написал первую инструкцию и скомпилировал (ассемблировал, в данном случае).
С вами не согласен уже на уровне определений, меня учили что ассемблер - это язык программирования, а не компилятор.
P.S: А компилятор ассемблера это, например, программа as.exe из пакета gcc
Плохо учили. Ассемблер это как язык, так и компилятор. Хотя правильней говорить о системе мнемоник и её трансляции в бинарную форму. Процесс трансляции называется ассемблированием. В том числе и в пакете gcc.
Если уж быть совсем занудой и разделять программирование и кодирование, то ассемблеры и автокоды - это сугубо технические инструменты для получения образа в машинных кодах.
Вот если оснастить ассемблер препроцессором, чтобы макросы кое-какие писать и не держать под рукой тетрадку с перечнем меток для локальных переходов, тогда уже да! Получится язык Си)))))
Во времена когда существовал DOS и файлы .com, можно было программу в текстовом редакторе набрать, тупо печатая инструкции в бинарной форме.
Только программа будет не более 64Кбайт.
Жуткие были времена )
Космический симулятор-шутер-рпг с 3д графикой и открытым миром Elite умещался меньше, чем в 30 килобайт.
Вот давайте не будем про Элите? Меня жеж ностальгия прорвёт!
Ага, как я до последнего момента шпилил, выскочила надпись что я получил класс "данжероуз", я аж стопарик от полноты чуйств накатил и пошёл на завод во вторую смену...
Ах так! Ну держи!
Эпичнее скриншот попыток влететь первый раз в шлюз станции...
Клавы не совпадают...
А Киберпанк на ПС 5 весит 160 гб)))
Эх, Спектрум, Элит, бессонные ночи, вялость на уроках и слипающиеся глаза. И проклятые таргоны, появляющиеся после выхода из трубы гипер перехода или в нём самом, уже точно не помню.
Впечатлений на 30 лет.
Сколько вы говорите, она весила, 30 КБ?)))
Сам спекки назывался спектрум-48 по банальной причине, что всего оперативки в нём было как раз те сорок восемь килобайт. Но часть была занята под экран и служебные нужды, в общем под программы примерно тридцать и оставалось. Были игры, которые уровни с кассеты подгружали, но элита только сейвы-лоады.
У Спеки 64к памяти, из которых 16 заняты интерпретатором Спека-Басика.
У него 64к адресуемой памяти. Из которых 16 его биос/операционка и бейсик. Из оставшихся как раз 48к оперативной памяти распределено примерно как я выше написал. Были умельцы, что занимали и часть экрана под программу, но элит вроде таким не баловалась. Просто влезала в имеющуюся оперативу.
Теоретически это можно и с экзешником сделать, только мороки побольше - надо вручную сформировать его заголовки, секции и т.д. Муторно и геморройно, но если припрёт, вопрос можно решить при помощи бумаги с ручкой.
Ага, PE/ELF писать сильно муторно, даже из С/С++
Странный вопрос. Сначала появляется язык, а потом может появиться компилятор. Или не появится если язык реализован в качестве интерпретатора.
Раньше появился язык программирования. Допустим, та же Motorola рассылала разработчикам даташиты от 800 страниц с полным описанием процессора и мнемоник. А будете вы эти мнемоники побайтно в память забивать или пользоваться ассемблером - это уже проблемы разработчика. Под процессор была разработана система мнемоник (ассемблер), затем она была реализована в железе. Сначала ТЗ, потом уже железо. Без ТЗ - результат ХЗ. А вы как хотели?
Если же Вас интересуют языки высокого уровня исторически, то там до компилятора появился разумеется интерпретатор. Во всех случаях сначала разрабатывался язык, а затем для него уже создавался интерпретатор. С курицей и яйцом это не сравнимо, хотя и там курица как переходная форма появилась разумеется ДО яйца. Это сегодня уже установлено.
А теперь внимание, вопрос: на чём основано ТЗ?
Вопрос неясен. На разработанной табличке мнемоник. Изначально в бумажной форме, сегодня используют электронные таблицы.
Собственно в последнем предложении у вас тот вариант ответа, который, на мой взгляд, является правильным.
Как и в паре "компилятор-язык" в паре "курица-яйцо" есть промежуточные состояния, когда яйцо снёс условный динозавр, а вылупилась (по совокупности признаков) курица.
Страницы