Когда была создана первая программа. Как программисты пишут программы? (4 фото). Последние годы жизни ученой

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

Центральный процессор вашего компьютера понимает только программы, написанные на языке ноликов и единичек. Например, команда «прибавить константу 5 к числу, записанному в регистре AL» записывается так:

0000 0100 0000 0101

Здесь 0000 0100 - код операции «прибавить число к регистру AL», а 0000 0101 - двоичное представление числа 5.

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

Ясно, что такой способ программирования жутко неудобен и подвержен ошибкам. Чтобы не тратить время на это занудство, ленивые программисты начали думать, как переложить неблагодарную работу на машину.

Можно один раз хорошенько помучиться и написать на языке ноликов и единичек вспомогательную программу, которая называется ассемблер («сборщик»). Этот волшебный ассемблер принимает на вход человеко-читаемый текст и преобразует его в нолики и единички. Например, та же самая команда «прибавить константу 5 к числу, записанному в регистре AL» записывается на языке ассемблера x86 так:

Думаю, вы согласитесь, что это всё-таки более читаемо, чем 0000 0100 0000 0101. Здесь хотя бы понятно, что речь идёт о сложении (ADD) и числе 5. Теперь уже дело ассемблера преобразовать эту строчку в 0000 0100 0000 0101. На языке ассемблера сложно писать большие программы, процессоры разных производителей могут требовать разных ассемблеров, но всё равно это был большой шаг вперёд.

Дальше инженерную мысль было не остановить. Нужно один раз помучиться, чтобы написать на ассемблере компилятор языка программирования, например Фортрана. Потом ещё немного помучиться, чтобы написать на Фортране компилятор Алгола. Затем передохнуть, помучиться и написать на Алголе компилятор языка CPL. Ещё немного мучений, и можно на основе CPL написать компилятор языка C. Дальше можно уже не мучиться и в свое удовольствие писать на C компиляторы C++, Java, C# и других современных языков. Впрочем, никто не запретит использовать Java чтобы написать ассемблер x86 и замкнуть рекурсию.

Ада Лавлейс

10 декабря 1815 года на свет появилась Ада Лавлейс, большинству из нас известная как самый первый в мире программист. Так уж получилось, что это звание принадлежит представительнице прекрасного пола. Сегодня исполняется двести один год со дня рождения этого человека. И в этом посте я бы хотел немного рассказать о самых интересных моментах из ее жизни, не отделываясь обрывочными фразами, но и не слишком уж углубляясь в детали. Материал можно найти, где угодно, имея под рукой Интернет. Однако мало кто полезет искать его просто ради интереса. Поэтому кому интересно, добро пожаловать под кат.

Учась в школе, сидя на уроках литературы, я прекрасно знал, кто такой Джордж Байрон.


Мы читали и по желанию заучивали его стихотворения. Спустя время, выбрав себе профессию я узнал о том, кем была загадочная Ада Лавлейс – первая девушка-программист, дочь того самого лорда Джорджа Байрона. Тогда для меня это оказалось удивительным открытием. Я на всю жизнь запомнил, кем была Ада и, как-то совсем незаметно для самого себя, забыл о самом Байроне.

Августа Ада Кинг (впоследствие графиня Лавлейс, но об этом чуть позже) – была дочерью английского поэта лорда Джорджа Гордона Байрона и его жены – Анны Изабеллы Байрон. Однако Байрон спустя месяц после рождения своей дочери покинул их, и они больше никогда не виделись. Сам Байрон умер, когда Аде было восемь лет. Сам он еще не раз вспоминал свою дочь в своих стихах.

Видно, что Ада сама росла в довольно талантливой семье. Ее мать, Анна Изабель, еще до рождения дочери сильно интересовалась математикой, за что когда-то получила от мужа забавное прозвище – “королева параллелограммов”. Это была действительно необычная семья. Анне после ухода мужа все же удалось воспитать дочь в одиночку и вот что из этого получилось.

В двенадцать лет Ада собрала свой летательный аппарат! До этого двенадцатилетняя девочка некоторое время запиралась от матери в комнате и что-то писала. Мать боялась, что она начнет зачитываться стихами отца и пойдет той же дорогой. Однако все это время она чертила.

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


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

Математика математикой, но как же так вышло, что помнят о ней в первую очередь именно программисты? Одной из самых судьбоносных встреч Ады Лавлейс стала встреча с Чарльзом Бэббиджем – изобретателем первой аналитической вычислительной машины.


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

Им было создано огромное количество чертежей, а сам прототип закончен в 1832 году, тот самый, который Ада Лавлейс увидит спустя год.

В 1835 году Ада выйдет замуж за очень достойного человека – барона Уильяма Кинга, который впоследствии был удостоен титула графа, а сама Ада стала графиней Лавлейс. Спустя четыре года у них уже было трое детей – два сына и дочь. Сыновьям Ада дала имена в честь отца – одного назвали Ральфом Гордоном, а другого – Байроном.

А как же с той самой первой в мире программой? И какова судьба машины Бэббиджа? В 1842 году итальянский ученый Луис Манебреа напишет книгу о машине Бэббиджа. Ада по просьбе Бэббиджа займется ее переводом. Во время перевода самой книги она сделала огромное количество замечаний, видя в этой машине кажется больше, чем сам Бэббидж.

Вот ее слова: «Суть и предназначение машины изменятся от того, какую информацию мы в нее вложим. Машина сможет писать музыку, рисовать картины и покажет науке такие пути, которые мы никогда и нигде не видели» Алан Тьюринг впоследствие читал ее записи, введя в свои работы термин возражение леди Лавлейс относительно способности машин мыслить.

В то же самое время, при описании машины Бэббиджа именно Ада ввела в обиход такие компьютерные термины как цикл и ячейка. Она также составил набор операций для вычисления чисел Бернулли. Именно это по сути и стало самой первой компьютерной программой. Бэббидж так и не построил свою машину, она была собрана уже после его смерти и сейчас хранится в Музее науки в Лондоне.

Сама Ада Лавлейс умерла 27 ноября 1852 года всего в возрасте 36 лет. Ровно столько, сколько прожил ее отец. Ее похоронили в фамильном склепе вместе с отцом, которого она так и не узнала.
В честь Ады Лавлейс был назван разработанный в 1980-х годах Министерством Обороны США язык программирования Ада.

P.S. Наверное, тем людям, у которых фраза “Первым программистом была девушка” вызывает недовольство или улыбку, стоит хотя бы раз поинтересоваться биографией этого человека. О таких людях, как Ада Лавлейс или Алан Тьюринг и о многих других стоит помнить. А для кого-то эти истории еще один повод понять, что в мире нет ничего невозможного.

Спасибо тем, кто прочел эту статью. Делитесь своими мнениями, комментариями или замечаниями).

Так когда же был изобретен первый компьютер? На этот вопрос нельзя дать однозначного ответа в связи с различными классификациями компьютеров. Первый механический компьютер, созданный Чарльзом Бэббиджем в1822 г., на самом деле не очень похож на то, что мы привыкли называть компьютером сегодня.

Когда впервые было использовано слово «компьютер»?

Слово «компьютер» был впервые использовано в 1613 году, и первоначально обозначало человека, который выполнял вычисления или какие либо расчеты. Определение компьютера носило то же значение, до конца 19-го века, пока промышленная революция не дала начало машинам, основной целью которых были вычисления.

Первый механический компьютер или концепция автоматической вычислительной машины.

В 1822 году, Чарльз Бэббидж разработал концепцию и приступил к разработке разностной машины (Difference Engine), которая считается первой автоматической вычислительной машиной. С этого началась история компьютера. Разностная машина была способна оперировать несколькими наборами чисел и выдавать бумажные копии результатов. В разработке разностной машины Бэббиджу помогала Ада Лавлейс, которая, по мнению многих, считается первым. К сожалению, из-за финансовых проблем, Бэббидж не смог закончить полномасштабную функциональную версию этой машины. В июне 1991 года, Музей науки в Лондоне построил Разностную машину № 2 в честь двухсотлетнего дня рождения Бэббиджа, а затем, в 2000 году завершил и печатающий механизм.

В 1837 году, Чарльз Бэббидж предложил первый программируемый вычислительный компьютер, который назывался Аналитическая машина. Аналитическая машина содержала блок арифметической логики (ALU), основной контроль потока, и встроенную память. К сожалению, из-за проблем с финансированием, этот компьютер так и не был построен при жизни Чарльза Бэббиджа. Только в 1910 году, Генри Бэббидж, младший сын Бэббиджа, смог завершить центральную часть этой машины по чертежам отца, которая оказалась в состоянии выполнять основные арифметические расчеты.

Первый компьютер с возможностью программирования.

Первый электро-механический двоичный программируемый компьютер Z1 был создан немецким инженером Конрадом Цузе в гостиной его родителей между 1936 и 1938 годами, и считается первым, действительно функциональным современным компьютером.

Машина Тьюринга была предложена Аланом Тьюрингом в 1936 и стала основой для теорий о вычислениях и компьютерах. Этот механизм распечатывал символы на перфоленте способом, который эмулировал человека после ряда логических инструкций. Без этих основных принципов у нас не было бы компьютеров, которые мы используем сегодня.

Первый электрический программируемый компьютер.

В декабре 1943 года был продемонстрирован первый электрический программируемый компьютер «Колосс» разработанный Томми Флауэрсом и использовался для расшифровки перехваченных немецких сообщений.

Первый в истории цифровой компьютер

Компьютер Атанасова-Берри — АВС был разработан профессором Атанасовым и аспирантом Клиффом Берри в 1937 году. Его разработка продолжалась до 1942 в Государственном колледже Айовы (теперь Университет штата Айова).
ABC была электрическим компьютером, который использовал вакуумные лампы для цифрового вычисления, включая двоичную математику и булеву логику и не имел процессора.
19 октября 1973 года, США федеральный судья Эрл Р. Ларсон подписал решение об отзыве патента ENIAC Дж Преспер Эккерта и Джона Мочли и назвал Атанасова изобретателем электронного цифрового компьютера.
ENIAC был изобретен Дж. Преспером Экертом и Джоном Мочли в Университете Пенсильвании и начал конструироваться в 1943 г и был завершен только в 1946 г. Он занимал около 1800 квадратных футов, и использовал около 18000 вакуумных трубок, весом почти 50 тонн. Несмотря на то, что судья постановил, что компьютер ABC был первым компьютером, многие все еще полагают, что ENIAC – это и есть первый компьютер, потому что он был полностью функциональным.

Первый компьютер с хранимой в памяти программой.

Британский компьютер, известный как EDSAC, принято считать первой электронно-вычислительной машиной, у которой программы хранились в памяти. Компьютер был запущен в работу 6 мая 1949 года и был первым ЭВМ, на котором выполнялась графическая компьютерная игра.
Примерно в то же время в Манчестерском университете Виктории разрабатывался другой компьютер под названием Manchester Mark 1 , который также мог выполнять сохраненные программы. Первая версия компьютера Марк 1 была введена в эксплуатацию в апреле 1949 года. В ночь 16-17 июня 1949 года Марк 1 был использован для запуска программы для поиска простых чисел Мерсенна, и за девять не сделал ни одной ошибки.

Первая компьютерная фирма.

Первой компьютерной фирмой была Electronic Controls Company, которая была основана в 1949 Дж. Преспером Экертом и Джоном Мочли, теми же людьми, которые помогали создавать компьютер ENIAC. Компания была позже переименована в EMCC или Eckert-Mauchly Computer Corporation и выпускала серию мэйнфреймовых компьютеров под именем UNIVAC.

Первая хранимая компьютерная программа

Первым компьютером, который был способен к хранению и выполнению программы из памяти был UNIVAC 1101 или ERA 1101, представленный правительству США в 1950 году.

Первый коммерческий компьютер.

В 1942, Конрад Цузе начал работать над Z4, который позже стал первым коммерческим компьютером. Компьютер был продан Эдуарду Штифелю, математику швейцарского федерального Технологического института Цюриха 12 июля 1950 года.

Первый компьютер компании IBM.

7 апреля 1953 года компания IBM публично представляла 701 — первый коммерческий научный компьютер компании.
Первый компьютер с оперативной памятью
8 марта 1955 года Массачусетский технологический институт MIT представил революционный компьютер «Вихрь» (Whirlwind), который был первым компьютером с RAM на ферритовых сердечниках и графикой в реальном времени.

Первый транзисторный компьютер

TX-O (Транзисторный Экспериментальный компьютер) является первым транзисторным компьютером, который был продемонстрирован в Массачусетском технологическом институте в 1956 году.

Первый мини-компьютер.

В 1960 Digital Equipment Corporation выпускала свой первый из многих компьютеров PDP, PDP-1.

Первый настольный компьютер и компьютер для массового рынка.

В 1964 на нью-йоркской Всемирной выставке был представлен общественности первый настольный компьютер Programma 101. Он был изобретен Пьером Джорджио Перотто и произведен компанией Olivetti. Приблизительно 44000 компьютеров Programma 101 были проданы, каждый по цене 3,200$.
В 1968 Hewlett Packard начала продавать HP 9100A, который, как полагают, был первым продаваемым на массовом рынке настольным компьютером.

Первая рабочая станция.

Несмотря на то, что этот компьютер никогда не продавался, первой рабочей станцией считают Xerox Alto, представленный в 1974 году. Компьютер был революционным для своего времени и включал полностью функциональный компьютер, дисплей и мышь. Этот компьютер, как и большинство компьютеров сегодня, использовал в качестве интерфейса своей операционной системы окна, меню и иконки. Многие из возможностей этого компьютера были продемонстрированы 9 декабря 1968 года.

Первый микропроцессор.

Первый микро-ЭВМ.

В 1973 году инженер Андре Трюонг Тронг Ти, вместе с Франсуа Жернелем, разработал компьютер Micral. Рассматриваемый как первый «микро-ЭВМ», он использовала процессор Intel 8008 и был первым коммерческим компьютерным без сборки. Первоначально продавался за $ 1,750.

Первый персональный компьютер.

В 1975 Эд Робертс ввел термин «персональный компьютер», когда он представил свое детище Альтаир 8800, несмотря на то, что первым персональным компьютером, как полагают многие, являлся KENBAK-1, представленный за 750$ в 1971 году. Компьютер полагался на серию переключателей для ввода данных и серию световых сигналов для вывода. Таким образом история компьютеров вышла на новый уровень.

Первый ноутбук или портативный компьютер

IBM 5100 является первым портативным компьютером, который был выпущен в сентябре 1975 года. Компьютер весил 55 фунтов (25 кг.) и имел пятидюймовый ЭЛТ-дисплей, накопитель на магнитной ленте, 1.9MHz PALM процессор и 64 КБ оперативной памяти.

Первым действительно портативным компьютером или ноутбуком является Осборн I, который был разработан Адамом Осборном и выпущен в апреле 1981 года. Осборн весил 24.5 фунта (11,1 кг.), имел 5-дюймовый дисплей, 64 Кбайта памяти, два 5 1/4-дюймовых дисковода для гибких дисков, работал на операционной системе CP/M 2.2, имел модем и стоил 1,795 долларов США.
Подразделение IBM PC (PCD) позже выпустило IBM — первый портативный компьютер, который весил 30 фунтов (13,6 кг.). Позже в 1986 году, IBM, PCD анонсировала первый ноутбук, весивший 12 фунтов (5,4 кг). Затем, в 1994, IBM представила IBM ThinkPad 775CD, первый ноутбук с интегрированным CD-ROM.

Первый компьютер Apple.

Apple I (Apple 1) был первым Компьютером Apple и продавался за 666.66$. Компьютер был разработан Стивом Возняком в 1976 году и оснащался 8-разрядным процессором и 4 Кб памяти с возможностью расширения до 8 или 48 Кб платами расширения. Несмотря на то, что Apple продавался полностью собранным он, все же не мог функционировать без источника питания, дисплея, клавиатуры и корпуса, которые продавались отдельно.

Первый персональный компьютер IBM.

IBM представляла свой первый персональный компьютер, названный IBM PC под кодовым названием Acorn в 1981 году. На нем был установлен 8088 процессор, 16 Кбайт памяти, которая расширялась до 256 кб, в качестве операционной системы использовалась MS-DOS.

Первый ПК клон.

МодельCompaq Portable , является первым клоном PC и был выпущен в марте 1983 года фирмой Compaq. Compaq Portable был на 100% IBM-совместимым и способным к выполнению любого программного обеспечения, разработанного для компьютеров IBM.

Первый мультимедийный компьютер.

В 1992 году, Тэнди Radio Shack стала одной из первых компаний по выпуску компьютеров на основе стандарта MPC с его введением M2500 XL / 2 и компьютеров M4020 SX.

Программный пакет Microsoft Office является самым кассовым и популярным продуктом на данный момент и самым известным продуктом из этого семейства является Microsoft Word (WinWord, MS Word или просто Word) . История создания программы уходит в далекие 80-е.

Отцом Microsoft Word принято считать американского программиста Ричарда Броди. Первая версия была написана в 1983 году и была предназначена только для DOS. Первый блин, как говорится, вышел комом. Продажи продукта были ничтожно малы, а объяснялось это выходом программы-конкурента, под названием WordPerfect. Однако, уже через 2 года на свет появилась новая версия 3.0, которая была ориентирована на операционную систему Macintosh. Эта версия нашла в мире своего покупателя и постепенно начала отвоевывать позиции у конкурентов. Еще через 2 года вышло обновление версии 3.0 — Microsoft Word 3.1.

Что касается Windows, то первая версия Word для этой MS была выпущена в 1989 году. Цена за нее была не маленькая — 500$ на территории США. В программе сразу бросалась в глаза схожесть с Macintosh, например (для сохранения сочетание клавиш Ctrl+S, для копирования — Ctrl+C). Ровно через год, в 1990, на свет появилась новая версия OC Windows 3.0. Под этой версией Word работал просто безупречно (версии x386 и x286 были менее производительны). Что касается главного конкурента Word’a — WordPerfect, то у них не получилось создать рабочую версию, которая бы работала на OC Windows и это стало для WordPerfect смертоносным моментом. Далее на рынке текстовых редакторов была только одна программа — Microsoft Word.

Все продукты из пакета Microsoft Office имеют возможность использовать макроязык, для расширения своих возможностей. Microsoft Word не является исключением. В 90-х годах таким языком был WordBasic, а с выпуском Word 97 появился знаменитый макроязык Visual Basic for Application(VBA, макроязык для приложений). С появлением VBA в Word’е активизировались хакеры, которые писали, так называемые, «макровирусы», которые встраивались в документ. Поэтому компания Microsoft рекомендует ставить наивысший уровень безопасности в настройках, при работе в Word. Также рекомендуется использовать антивирусное программное обеспечение. Хакер Мак-Намарой был первым, кто создал макровирус, которые заражал документы Word. Далее макровирусы стали писаться регулярно.

Что касается наших дней, то Microsoft Office по-прежнему остается лидером программного обеспечения в сфере текстовых редакторов. Однако в 2009 канадская компания i4i подала на Microsoft в суд, за незаконное использование XML-файлов, патент которых принадлежит как раз канадцам. В итоге суд штата Техас наложил запрет на продажу Microsoft Word на территории США.

Забавные курьезы Microsoft Word.

Многие критикуют Word за непонятные курьезы, которые находили в программе очень часто. Например:

1. Знаменитая фраза «Съешь ещё этих мягких французских булок, да выпей чаю.» Если эту фразу ввести в версии Word до версии 2007, то вы будете удивлены. После нажатия клавиши Enter эта надпись разрастется на сотню страниц, как-будто она была заменена какой-то матрицей.

2. Также в версии раньше 2007 есть еще несколько прикольных штучек. Если ввести в любом месте документа Word функцию «=rand(x,y)» (без кавычек), то при нажатии клавиши Enter произойдет замена функции на определенный текст.

3. Функция «lorem». Если ввести эту функцию в документе, то данная строка заменится текстом из сайта Lorem Ipsum.

4. Word не различал буквы Ё и Е до версии 2003. Поэтому фразу «ёхать нужно мёдлённо» он считал верной.

5. Есть один прикол, которые сохранился в Word и по сей день. Если ввести фразу «Хочу избежать службу в армии», то орфография предложит вариант написания «Никому не удалось избежать службы в армии».

Многие считают это ремесло непонятным настолько, что нет никаких шансов разобраться в принципах даже теоретически.
Попытаюсь объяснить как это происходит, что называется, на пальцах.

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

Приведу пример, как выглядела бы программа по нарезке хлеба для нашего тела

Задача "нарезать хлеба" на языке программирования высокого уровня

1.Открыть правой рукой хлебницу;
__2.Взять булку хлеба правой рукой;
__3.Положить хлеб на разделочную доску; (предположим, что доска уже лежала на столе)
__4.Открыть правой рукой верхний ящик стола;
__5.Найти блестящий нож, длиной 20 см, с черной ручкой;
__6.Взять нож в правую руку;
__7.Поднести нож к хлебу;
__8.Зафиксировать хлеб левой рукой, взявшись за левый край булки;
__9.Расположить нож строго над правым ребром булки хлеба;
__10.Повторять следующие действия 5 раз:
____10.1.Отступить влево на сантиметр;
____10.2.Повторять следующие действия, пока лезвие ножа не не коснется доски:
________10.2.1.Прижать нож к хлебу;
________10.2.2.Совершить ножом возвратно поступательное движение вперед-назад;
____10.3.Поднять нож вверх;
__11.Положить нож в ящик;
__12.Отпустить левой рукой хлеб.
Все, программа по нарезке хлеба в количестве пяти кусков готова, можно ее продолжить, описав стирание крошек со стола, укладывания нарезанных кусочков на тарелочку и т.д.

Отладка программы

Запускаем программу и смотрим, как она работает:
Ой... вместе с пятым куском и палец отрезал...
чёрт! остановить программу!
Я же не написал как именно нужно зафиксировать хлеб левой рукой, схватился как попало и большой палец торчал в сторону...
Возвращаемся к строчке "Зафиксировать хлеб левой рукой, взявшись за левый край булки;"
После нее пишем:
"Поджать большой палец левой руки влево, к ладони;"
Запускаем программу
Ой... на строчке "Положить нож в ящик;" нож упал на пол...
Проклятье! оказывается, стол стоит немного под наклоном и ящик сам закрылся...
Возвращаемся к коду и перед строчкой "Положить нож в ящик;" пишем "Открыть правой рукой верхний ящик стола;"
Заметили ошибку? Нет?!
Как мы можем открыть ящик правой рукой, если в этой руке нож? Значит, сначала нужно положить нож на стол, потом открыть ящик, снова взять нож и т.д.
И делаем мы это до тех пор, пока хлеб не будет нарезан как следует, без повреждения мебели и пальцев.
Вот, примерно так происходит отладка
С опытом начинаешь писать программы, которые работают с первого раза, допуская минимум ошибок, а проверка "открыт ли ящик", перед складыванием в него чего-то, входит в привычку.

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

в результате, программа с использованием процедур будет выглядеть так:
__ЗайтиНаКухню();
__НарезатьХлеба(5);
__ПоставитьХлебНаСтол();
__ПомытьПосуду();
и нет предела совершенству

Теперь о языке низкого уровня

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

Стоит немного рассказать что такое высокоуровневый язык и зачем нужен низкоуровневый, если проще писать на высокоуровневом?
Высокоуровневый язык был написан на низкоуровневом, в него были заложены команды, в виде процедур, подразумевающие последовательность действий, таких как "открыть ящик", "взять нож в руку" и т.д. но если по какой-то причине потребуется взять нож только двумя пальцами, потому что ручка сломана или отсутствует, например, то сделать этого не удастся, ибо команда "взять нож в руку" подразумевает использование всех пяти пальцев. Для таких ситуаций в высокоуровневых языках есть возможность делать вставки кода на низкоуровневом языке и вместо стандартной команды "взять нож в руку" пишется код на низком уровне под нож со сломанной ручкой.
Человек все эти операции делает не задумываясь, но машина так не умеет, ей нужно подробно объяснить что, как и в какой последовательности.
Сверхвысокоуровневые языки являются узкоориентированными на определенные задачи, например, для работы на кухне, они включают набор специальных команд и код на них выглядел бы примерно, как программа с использованием процедур, что описана выше.

Вы наверняка сталкивались с тем, что какие-то программы работают только под Windows, например, и их нет под Android или наоборот, хотя функции, казалось бы, обычные, и почему на телефон с Windows Phone нельзя установить Android?
Объясню на примере все той же программы для кухни: в тексте программы сказано "Найти блестящий нож, длиной 20 см, с черной ручкой в верхнем ящике стола", например, это для Windows. Однако, в андройде нет верхнего ящика стола, ножи там хранятся в настенном шкафу, т.е. процедура открытия ящика должна быть заменена на процедуру открытия шкафа, согласитесь - они разные! Но и нож там лежит длиной не 20 см, а в 25, он вовсе не блестящий и ручка у него не черная, а синяя. Поэтому, чтобы нарезать хлеба, нужно существенно переписать программу, хотя результат будет такой же. Для этого существуют кросплатформенные программы, которые могут работать под разными системами, т.е. на разных кухнях, ибо программисты предусмотрели оба варианта. Это, конечно, замечательно, но у них есть и минусы: если у вас всегда используется только кухня с ящиками в столах, то зачем вам код, который умеет работать со шкафами? А место он занимает. Это все равно что купить микроволновку, у которой в комплекте идут две дверки, одна предназначена для открывания влево, а другая вправо и еще у этой печки есть ниша, в которую можно положить ненужную дверку, но из-за этой ниши микроволновка выше на 10 мс. Вы поставите нужную дверку, а ниша будет занимать место.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: