Проверьте соответствие информации приведённым источникам и удалите или исправьте информацию, являющуюся оригинальным исследованием. В случае необходимости подтвердите информацию авторитетными источниками. В противном случае статья может быть выставлена на удаление.(24 декабря 2016)
Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов языков программирования. Смысл появления такого языка — упрощение программного кода.
Языки программирования принято делить на пять поколений. В первое поколение входят языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка».
Физические принципы работы электронных устройств ЭВМ таковы, что компьютер может воспринимать команды, состоящие только из единиц и нулей — последовательность перепада напряжения, то есть машинный код. На начальной стадии развития ЭВМ человеку было необходимо составлять программы на языке, понятном компьютеру, в машинных кодах. Каждая команда состояла из кода операций и адресов операндов, выраженных в виде различных сочетаний единиц и нулей. Итак, любая программа для процессора выглядела на то время как последовательность единиц и нулей.
Как показала в дальнейшем практика общения с компьютером, такой язык громоздок и неудобен. При пользовании им легко допустить ошибку, записав не в той последовательности 1 или 0. Программу очень трудно контролировать. Кроме того, при программировании в машинных кодах надо хорошо знать внутреннюю структуру ЭВМ, принцип работы каждого блока. И самое плохое в таком языке, что программы на данном языке — очень длинные последовательности единиц и нулей являются машинно зависимыми, то есть для каждой ЭВМ необходимо было составлять свою программу, а также программирование в машинных кодах требует от программиста много времени, труда, повышенного внимания.
Довольно скоро стало понятно, что процесс формирования машинного кода можно автоматизировать. Уже в 1950 году для записи программ начали применять мнемонический язык — язык ассемблера. Язык ассемблера позволил представить машинный код в более удобной для человека форме: для обозначения команд и объектов, над которыми эти команды выполняются, вместо двоичных кодов использовались буквы или сокращенные слова, которые отражали суть команды. Например, на языке ассемблера команда сложения двух чисел обозначается словом add, тогда как ее машинный код может быть таким: 000010.
Ассемблер — язык программирования низкого уровня. Язык программирования низкого уровня — язык программирования, который ориентирован на конкретный тип процессора и учитывает его особенности. В данном случае «низкий уровень» не значит «плохой». Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Появление языка ассемблера значительно облегчило жизнь программистов, так как теперь вместо рябящих в глазах нулей и единиц они могли писать программу командами, состоящими из символов, приближенных к обычному языку. Для того времени этот язык был новшеством и пользовался популярностью, так как позволял писать программы небольшого размера, что при тех машинах - критерий значительный.
Но сложность разработки в нём больших программных комплексов привела к появлению языков третьего поколения — языков высокого уровня. Но на этом применение ассемблера не закончилось, он пользуется популярностью в узких кругах и по сей день. Сейчас его используют в написании отдельных фрагментов программ или иногда в написании самих программ. Примеров может быть много, но самые яркие это использование ассемблера в написании драйверов, игр и загрузчиков ОС. Не стоит забывать, что у хакеров этот язык так же пользуется популярностью, в связи с тем, что скорость работы полученной программы значительно выше скорости программы написанной на языке программирования высокого уровня. Это объясняется тем, что получившийся размер программы очень мал. Разработчики антивирусов так же используют ассемблер в некоторых модулях своих программ, что так же обеспечивает их быстродействие.[1]
Первые языки программирования высокого уровня
Середина 50-х гг. характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных кодах стала уменьшаться, стали появляться языки программирования нового типа, выступающие в роли посредника между машинами и программистами. Наступило время второго и третьего поколений языков программирования.
С середины 50-х г. XX в. начали создавать первые языки программирования высокого уровня (high-level programming languages). Эти языки не были привязаны к определенному типу ЭВМ (машинонезависимы). Для каждого из них были разработаны собственные компиляторы. Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда язык ассемблера).
Язык программирования FORTRAN
Первый язык высокого уровня Фортран был создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Он предназначался для научных и технических расчетов. Название Fortran является сокращением от FORmula TRANslator (переводчик формул).
История языка
В конце 1953 Джон Бэкус предложил начать разработку эффективной альтернативы ассемблеру для программирования на ПК IBM 704. Уже к середине 1954 была закончена черновая спецификация языка Fortran. Первое руководство для Fortran появилось в октябре 1956 вместе с первым компилятором, поставленным в апреле 1957. Компилятор был оптимизирующим, потому что клиенты отказывались использовать язык программирования высокого уровня, который генерировал код с производительностью ниже, чем у ассемблера.
В то время сообщество относилось скептически к новому способу программирования и не верили в то, что Fortran позволит программировать быстрее и эффективнее. По словам самого Джона Бэкуса, большая часть его работы была направлена на то, чтобы «быть ленивым». Ему жутко не нравилось писать программы под IBM 701 на ассемблере.
Язык был широко принят учеными для написания программ с интенсивными вычислениями. Включение комплексного типа данных сделало его особенно подходящим для технических приложений.
К 1960 году существовали версии Fortran для компьютеров IBM 709, 650, 1620, 7090. Его большая популярность побуждала конкурирующих изготовителей компьютеров создавать компиляторы Fortran для своих компьютеров. Таким образом, уже к 1963 существовало более 40 компиляторов для разных платформ. Именно поэтому Fortran считают первым широко используемым языком программирования.[2]
Фортран в СССР
Фортран в СССР появился позже, чем на Западе, поскольку поначалу в СССР более перспективным языком считался Алгол. Во внедрении Фортрана большую роль сыграло общение советских физиков со своими коллегами из CERN, где в 1960-х годах почти все расчёты велись с использованием программ на Фортране.
Первый советский компилятор с Фортрана был создан в 1967 г. для машины «Минск-2», однако он не получил большой известности. Широкое внедрение Фортрана началось после создания в 1968 г. компилятора ФОРТРАН-ДУБНА для машины БЭСМ-6. Машины ЕС ЭВМ, появившиеся в 1972 г., уже изначально имели транслятор Фортрана («позаимствованный» с IBM/360 вместе с другим программным обеспечением)
Современный Фортран. Достоинства языка
Фортран широко использовался в основном для научных и инженерных вычислений. Он прекрасно подходит для решения численных задач, так как за время его существования было написано множество библиотек. Он используется и по сей день, но не столько по причине удачного дизайна, сколько в силу большого количества написанных на нём программ, изменять и, тем более, переписывать которые нет смысла. Его структура способствует тому, что компилятор может очень хорошо оптимизировать вычисления.
Среди учёных ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов, и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений, и многие, многие другие.
Язык программирования ALGOL 58
Причина появления языка ALGOL
Поскольку Фортран оказался столь успешным языком, в Европе возникли опасения, что IBM будет доминировать в компьютерной отрасли[источник не указан 1785 дней]. Немецкое Общество прикладной математики и механики (GAMM) создало комитет по разработке универсального языка. В то же время Ассоциация вычислительной техники (ACM) организовала похожий комитет в США. Несмотря на то, что у европейцев было некоторое беспокойство по поводу господства американцев, оба этих комитета слились в один.
В ходе работы возникали большие трудности непринципиального характера. Так, например, один из членов комитета вспоминал «десятичную бурю» — крайне резкую дискуссию между американскими и европейскими участниками по поводу того, какой именно символ должен быть использован в качестве разделителя целой и дробной частей числа. Американцы настаивали на точке, европейцы же требовали применять традиционную для Европы запятую. Чтобы избежать конфликтов по мелким вопросам, было решено, что описание Алгола будет трёхуровневым, включающим уровень описаний, публикаций и реализации. Мелкие вопросы, типа выбора между точкой и запятой или используемого алфавита, были вынесены на второй-третий уровень, что позволило относительно быстро решить принципиальные вопросы. На уровне публикаций, согласованном позже, допускалось использование национальных ключевых слов и стандартов представления данных (в том числе и десятичной точки), уровень реализации определял язык совершенно строго — согласно ему должны были строиться трансляторы.
Вначале предлагавшееся название ALGOL (ALGOrithmic Language) было отвергнуто. Но поскольку оно стало общеупотребительным, официальное имя IAL пришлось впоследствии изменить на ALGOL 58.
Новая версия появилась в 1960 г., и ALGOL 60 (с небольшими изменениями, сделанными в 1962 г.) с 60-х и до начала 70-х гг. прошлого века был стандартом академического языка программирования.
У нового языка нашлись как приверженцы, так и критики. В США Алгол приняли холодно, он был популярен только в академической среде, и то не повсеместно. Те, кто попытался реализовать Алгол, столкнулись с целым рядом сложностей.
Так, например, обнаружилось, что ни один из существовавших тогда компьютеров не поддерживал ввод-вывод всех 116 литер, из которых состоял алфавит Алгола.
А вот в Европе Алгол приняли с энтузиазмом. Он быстро завоевал популярность в академической среде, повсеместно шла разработка компиляторов, многие из которых, несмотря на сложности реализации, оказались весьма успешными. Алгол распространился от Великобритании до Дальнего востока СССР, став как универсальным языком описания алгоритмов в научных публикациях, так и средством реального программирования.
Свойства языка. Его достоинства и недостатки
В Алголе появилось представление о программе не как о свободной последовательности команд, а как о блочной структуре, состоящей из чётко описанных и отделённых друг от друга частей. Основной блок программы на Алголе — это сама главная программа. Она содержит свою исполняемую часть, заключённую в блок, ограниченный парой ключевых слов begin и end, а также описания подпрограмм. Каждая подпрограмма — это программа в миниатюре, имеющая собственные, описанные внутри неё данные, однозначно определённый интерфейс в виде имени и списка формальных параметров, и блок кода.
При этом в блоке могут выделяться подблоки.
Были выделены структурные управляющие конструкции: ветвления, циклы, последовательные участки, исполняющие условно или многократно вложенные наборы операторов, также ограниченные теми же ключевыми словами begin и end.
Современным программистам подобная структура программы кажется очевидной, кое в чём устаревшей и не всегда удобной, но на момент появления Алгола всё это было заметным шагом вперёд. Программы становились регулярными, это давало возможность наращивать их по объёму, сохраняя обозримыми, понятными, доступными анализу и исправлению. Именно на базе Алгола и его языков-потомков были выполнены успешные работы по аналитическому доказательству правильности программ.
В Алголе было предложено два способа передачи параметров в подпрограмму — по имени и по значению. Если второй способ возражений не вызывает (он широко используется в абсолютном большинстве языков по сей день), то первый (он предполагает, что в процедуру передаётся имя фактического параметра, и процедура работает так, как будто в точке обращения записан её код, где вместо формального параметра написано имя фактического) приводил к трудностям реализации компиляторов и появлению труднообнаруживаемых ошибок.
Язык программирования LISP
Язык Лисп был предложен Дж. Маккарти в работе в 1960 году и ориентирован на разработку программ для решения задач не численного характера. Английское название этого языка — LISP является аббревиатурой выражения LISt Processing (обработка списков) и хорошо подчеркивает основную область его применения. Понятие «список» оказалось очень емким.
В виде списков удобно представлять алгебраические выражения, графы, элементы конечных групп, множества, правила вывода и многие другие сложные объекты. Списки являются наиболее гибкой формой представления информации в памяти компьютеров. Неудивительно, что удобный язык, специально предназначенный для обработки списков, быстро завоевал популярность.
Развитие языка
На протяжении почти сорокалетней истории его существования появился ряд диалектов этого языка: Common LISP, Mac LISP, Inter LISP, Standard LISP и др.
Различия между ними не носят принципиального характера и в основном сводятся к несколько отличающемуся набору встроенных функций и некоторой разнице в форме записи программ. Поэтому программист, научившийся работать на одном из них, без труда сможет освоить и любой другой.
Основные достоинства языка
Большим достоинством Лиспа является его функциональная направленность, то есть программирование ведется с помощью функций. Причем функция понимается как правило, сопоставляющее элементам некоторого класса соответствующие элементы другого класса. Сам процесс сопоставления не оказывает никакого влияния на работу программы, важен только его результат — значение функции. Это позволяет относительно легко писать и отлаживать большие программные комплексы. Ясность программ, четкое разграничение их функций, отсутствие каверзных побочных эффектов при их выполнении является обязательными требованиями к программированию таких логически сложных задач, каковыми являются задачи искусственного интеллекта.
Дисциплина в программировании становится особенно важной, когда над программой работает не один человек, а целая группа программистов.
Язык программирования COBOL
Кобол был разработан в 1959 году и предназначался прежде всего для написания программ для разработки бизнес приложений, а также для работы в экономической сфере.
Спецификация языка была создана в 1959 году. Создатели языка ставили своей целью сделать его машинонезависимым и максимально приближенным к естественному английскому языку. Обе цели были успешно достигнуты; программы на COBOL считаются понятными даже неспециалистам, поскольку тексты на этом языке программирования не нуждаются в каких-либо специальных комментариях (самодокументирующиеся программы).
Достоинства и недостатки
COBOL — язык очень старый и в свое время использовался крайне активно, поэтому существует множество реализаций и диалектов. Для языка был утвержден ряд стандартов: в 1968, 1974, 1985 и 2002 годах. Последний стандарт добавил в язык поддержку объектно-ориентированной парадигмы.
Язык позволяет эффективно работать с большим количеством данных, он насыщен разнообразными возможностями поиска, сортировки и распределения. К числу других плюсов COBOL обычно относят его структурированность. Довольно мощные компиляторы с этого языка разработаны для персональных компьютеров. Некоторые из них столь эффективны, что программу, отлаженную на персональном компьютере, нетрудно перенести на большие ЭВМ.
Перечисляя минусы, нельзя не вспомнить о том, что на Коболе можно запрограммировать лишь простейшие алгебраические вычисления. Для сложных инженерных расчетов этот язык не годится.
Выводы по данному периоду развития языков программирования
На заре компьютеризации (в начале 1950-х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Языки низкого уровня мало похожи на нормальный, привычный человеку язык. Большие, громоздкие программы на таких языках пишутся редко. Зато если программа будет написана на таком языке, то она будет работать быстро, занимая маленький объем и допуская минимальное количество ошибок. Чем ниже и ближе к машинному уровень языка, тем меньше и конкретнее задачи, которые ставятся перед каждой командой.
Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (то есть немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят «исходный код» (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке.
С появлением языков высокого уровня программисты получили возможность больше времени уделять решению конкретной проблемы, не отвлекаясь на весьма тонкие вопросы организации самого процесса выполнения задания на машине. Кроме того, появление этих языков ознаменовало первый шаг на пути создания программ, которые вышли за пределы научно-исследовательских лабораторий и финансовых отделов.
Подводя итог данному периоду развития языков программирования, можно сделать вывод, что языки программирования высокого уровня (FORTRAN, ALGOL, LISP, COBOL и т. д.) не похожи на язык ассемблера. Языки высокого уровня разработаны специально для того, чтобы можно было иметь дело непосредственно с задачей, решаемой программой. В этом качестве они иногда называются процедурными языками, поскольку описывают процедуру, используемую для решения задачи. Языки высокого уровня машинонезависимы. Программы же на языке ассемблера непосредственно относятся к той машине, на которой они должны выполняться.
Достоинства языков программирования высокого уровня:
Алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
Набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
Конструкции операторов задаются в удобном для человека виде;
Поддерживается широкий набор типов данных.
Недостатком языков высокого уровня является больший размер программ по сравнению с программами на языке низкого уровня. Поэтому в основном языки высокого уровня используются для разработок программного обеспечения компьютеров и устройств, которые имеют большой объем памяти. А разные подвиды ассемблера применяются для программирования других устройств, где критичным является размер программы.
Началось развитие компаративных и логических языков в 1970-е годы.
В 1980-е годы началось развитие императивных языков.
Появились языки Ada, C++, Matlab, Objective-C, dBase, Wolfram Language.
В 1990-е годы началось развитие интернета . Появились языки Visual Basic, Delphi, Perl.
Машинный язык
Неизвестно, насколько бы ускорилось развитие программирования, если бы наработки Цузе стали доступны другим учёным в конце 40-х годов, но на практике с развитием компьютерной техники сначала получил распространение машинный язык. С его помощью программист мог задавать команды, оперируя с ячейками памяти, полностью используя возможности машины. Суть этого языка — набор кодов, обязательно понятных процессору, к которому обращаются. Части («слова») этого языка называются инструкциями, каждая из которых представляет собой одно элементарное действие для центрального процессора, как, например, считывание информации из ячейки памяти. Лишь при понимании устройства компьютерного оборудования и знания этих целочисленных кодов можно было непосредственно управлять процессором. Тогда ещё компьютеры были простыми вычислительными машинами, применяемыми для различных математических расчётов. Но они развивались, а использование большинства компьютеров на уровне машинного языка затруднительно, особенно сложным было чтение и модификация подобных программ, что усугублялось использованием абсолютной адресации памяти[3]. Поэтому со временем от использования машинных кодов пришлось отказаться.
Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающие наличие и типы ошибок, которые необходимо анализировать. Уже одно обращение к процессору громоздко, а анализ ошибок и вовсе представляется невообразимым, особенно, если не именно с этим процессором приходится работать. Таким образом, набор команд машинного языка сильно зависит от типа процессора.
Язык ассемблера
На протяжении 1950-х годов запросы на разработку программного обеспечения возросли и программы стали очень большими. Приходилось писать очень много кода, хотя обеспечение и было весьма простым: по тем временам дизайн рабочего стола был проще нынешнего, программы работали с элементарными вещами, а компьютер только ещё начинал победно шествовать. Однако программы запутывались всё больше, их структура усложнилась, потому что всё время развивалась компьютерная техника. Тогда стали пользоваться специальными программами-сборщиками программ из маленьких кусочков кодов — ассемблерами. Начался новый этап развития.
Теперь, когда была нужна эффективная программа, вместо машинных языков использовались
близкие к ним машиноориентированные языки ассемблера. К таковым относились, например, Autocode, с 1954-го г. — IPL (предшественник языка LISP), с 1955-го г. — FLOW-MATIC. Теперь люди стали использовать мнемонические команды взамен машинных команд.
Но даже работа с ассемблером достаточно сложна и требует специальной подготовки.
Например, для процессора Zilog Z80 машинная команда 00000101 предписывает процессору уменьшить на единицу свой регистр B. На языке ассемблера это же будет записано как DEC B.
Языки высокого уровня
Следующий шаг был сделан в 1954 году, когда была начата разработка языка высокого уровня — Фортран (англ.FORTRAN — FORmula TRANslator), компилятор для которого впервые появился в апреле 1957 года[4]. К разработке такого языка подтолкнули новые возможности внедрённого в 1954 году компьютера IBM 704, в котором на аппаратном уровне были реализованы индексная адресация и операции с плавающей точкой[5]. Вслед за ним появились и некоторые другие языки, например: LISP, ALGOL 58, FACT. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них можно писать программы до нескольких тысяч строк длиной. Условными словами можно было, как привычно человеку, гораздо более просто выразить сложную программную операцию из битов. Однако ранние варианты Фортрана значительно уступают поздним концепциям и языкам, использовался он для создания относительно простых по современным меркам программ[6].
Во второй половине 50-х интернациональная команда разработчиков попыталась создать универсальный язык программирования. В результате появился ALGOL 58 (англ.ALGOrithmic Language), по многим параметрам являвшийся наследником Фортрана. В него были добавлены новые концепции и обобщения, формализована концепция типов данных, разрешено использование идентификаторов любой длины, когда в Фортране было ограничение в 6 символов[7]. Этот вариант языка был скорее черновым, поэтому в январе 1960 года в Париже состоялось второе собрание комитета по его разработке, где было решено внести значительные изменения. Новый вариант получил название ALGOL 60, основными новшествами в нём были: концепция блочной структуры, возможность создания рекурсивных процедур, автоматические массивы[8]. Несмотря на свои многочисленные достоинства, ALGOL так и не получил большого распространения, в первую очередь из-за сложности в его реализации и отсутствии поддержки от корпорации IBM[9].
В дальнейшем появились COBOL (1959), Паскаль (1970), Си (1972).
Появление структурного программирования
К концу 1960-х годов в связи с ростом сложности программ и дальнейшим развитием программных средств возникла необходимость увеличить производительность труда программистов, что привело к разработке структурного программирования. Основоположником данной методологии считается Эдсгер Дейкстра, который в 1968 году опубликовал своё знаменитое письмо «Оператор Goto считается вредным»[10], а также описал основные принципы структурного программирования[11]. С развитием структурного программирования следующим достижением были процедуры и функции. То есть, если есть задача, которая выполняется несколько раз, то её можно объявить как функцию или как процедуру и в выполнении программы просто вызывать её. Общий код программы в данном случае становится меньше. Это способствовало созданию модульных программ.
Следующим достижением было объединение разнородных данных, которые используются в программе в связке, в структуры.
Структуры — это составные типы данных, построенные с использованием других типов данных. Например, структура времени разбивается на: часы, минуты, секунды. В свою очередь и часы, и минуты, и секунды описаны при помощи более простых и элементарных типов данных. И вместо работы с отдельными переменными, в которых легко запутаться, можно перейти к структуре «время», включающее в себя уже часы, минуты и секунды, и работать с ней, как с единым типом одного формата.
Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержку рекурсии и локальных переменных. Суть такого подхода заключается в возможности разбиения программы на составляющие элементы с увеличением читабельности программного кода[12].
Также создавались функциональные (аппликативные) языки (Пример: Lisp — англ.LISt Processing, 1958) и логические языки (пример: Prolog — англ.PROgramming in LOGic, 1972).
Хотя внедрение структурного программирования дало положительный результат, даже оно оказывалось несостоятельным тогда, когда программа достигала определённой длины. Для того чтобы написать более сложную и длинную программу, нужен был новый подход к программированию.
При использовании структур данных в программе вырабатываются и соответствующие им функции для работы с ними. Это привело к мысли их объединить и использовать совместно - так появились классы.
Класс — это структура данных, содержащая в себе не только переменные, но и функции, которые работают с этими переменными.
Коротко, это достижение в области программирования было очень велико. Теперь программирование можно было разбить на классы и тестировать не всю программу, состоящую, например, из 10 000 строк кода, а разбить эту программу на 100 классов и тестировать каждый класс. Это существенно облегчило написание программного продукта.
Первым объектно-ориентированным языком программирования является Симула-67, в котором впервые появились классы[13]. Концепции ООП получили дальнейшее развитие в языке Smalltalk, в котором также были заложены основы систем с оконным управлением[14]. Более поздними примерами объектно-ориентированных языков являются Object Pascal, C++, Java, C# и др.
ООП позволяет оптимально организовывать программы, разбивая проблему на составные части, и работая с каждой по отдельности. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути, описывает часть мира, относящуюся к этой задаче.
Роберт У. Себеста. Основные концепции языков программирования. — 5-е изд.. — М.: Вильямс, 2001. — 672 с. — ISBN 5-8459-0192-8.
Босова Л.Л., Информатика: учебник для 8 класса.
Босова Л.Л., Информатика: учебник для 9 класса.
Семакин И.А., Информатика: Базовый курс.
М. Дмитриев, Н. Алексеев «История компьютерной эры».
М. Зарецкая: Энциклопедия Москва «Просвещение».
Ю.С. Голубев-Новожилов: «Программное обеспечение».
Н.В. Макаровой. — М.: Финансы и статисти
У Вікіпедії є статті про інші значення цього терміна: Юр'ївка. село Юр'ївка Місцеві жителі в с. Юр'ївка (2018)Місцеві жителі в с. Юр'ївка (2018) Країна Україна Область Чернігівська область Район Чернігівський Громада Новобілоуська сільська громада Облікова картка Юр'ївка ...
ДраммонвільDrummondville герб Драммонвіль Основні дані 45°53′ пн. ш. 72°29′ зх. д. / 45.883° пн. ш. 72.483° зх. д. / 45.883; -72.483Координати: 45°53′ пн. ш. 72°29′ зх. д. / 45.883° пн. ш. 72.483° зх. д. / 45.883; -72.483 Країна КанадаРегіон Центр Кв...
War of national liberation between Scotland and England This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Wars of Scottish Independence – news · newspapers · books · scholar · JSTOR (October 2007) (Learn how and when to remove this template message) Part of a series on the History of Scotland Eras Prehistoric ...
English landscape painter (1821–1856) For the New Zealand politician see Tom Seddon Thomas Seddon (28 August 1821 in London – 23 November 1856 in Cairo) was an English landscape painter associated with the Pre-Raphaelite movement, who painted colourful and highly detailed scenes of Brittany, Egypt, and Jerusalem. Life The Citadel of Cairo, 1856 Jerusalem and the Valley of Jehoshaphat from the Hill of Evil Counsel, 1854. (Tate Gallery) Seddon was born on 28 August 1821 in Aldersgate Street...
This article’s almost every section does not cite any sources. Please help improve this article’s almost every section by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: General Motors 60° V6 engine – news · newspapers · books · scholar · JSTOR (November 2023) (Learn how and when to remove this template message) Reciprocating internal combustion engine General Motors 60° V6 engineOverviewManufa...
العلاقات البوروندية التشادية بوروندي تشاد بوروندي تشاد تعديل مصدري - تعديل العلاقات البوروندية التشادية هي العلاقات الثنائية التي تجمع بين بوروندي وتشاد.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقارنة بورو
Ilustrasi dari Jewish Encyclopedia. Dalam Alkitab Ibrani, Amrafel /ˈæmrəˌfɛl/ (Ibrani: אַמְרָפֶל, translit. ’Amrāp̄el; bahasa Yunani: Αμαρφάλ, translit. Amarphál; bahasa Latin: Amraphel) adalah seorang raja Sinear (Sumeria) dalam Kitab Kejadian 14,[1] yang menginvasi Kanaan bersama dengan raja-raja lain di bawah kepemimpinan Kedorlaomer, raja Elam. Koalisi Kedorlaomer mengalahkan Sodom dan kota-kota dataran lainnya dalam Pertempuran Sidd...
Chemical group (–CH₂–CH₃) For other uses, see Ethyl (disambiguation). Ethyl group (highlighted blue) as part of a molecule, as the ethyl radical, and in the compounds ethanol, bromoethane, ethyl acetate, and ethyl methyl ether. In organic chemistry, an ethyl group (abbr. Et) is an alkyl substituent with the formula −CH2CH3, derived from ethane (C2H6). Ethyl is used in the International Union of Pure and Applied Chemistry's nomenclature of organic chemistry for a saturated two-carbon...
For the former hockey team, see Houston Apollos. Houston ApollosInformationLeagueAmerican Association of Professional Baseball (2021) (South Division)LocationHouston, TexasBallparkNoneFounded2002Former league(s) Pecos League (2012-2020) Big States League (2002-2006) Former ballparksCoastal Baseball PakColorsYellow, blue OwnershipAndrew DunnManagerDavid PetersonWebsiteOfficial website The Houston Apollos were a professional baseball team based in Houston, Texas, that most rece...
2011 greatest hits album by PowderfingerFingerprints & Footprints: The Ultimate CollectionGreatest hits album by PowderfingerReleased5 November 2011 (Australia)RecordedVariousGenreAlternative rockLabelUniversal Music AustraliaPowderfinger chronology Footprints: The Best of Powderfinger, 2001-2011(2011) Fingerprints & Footprints: The Ultimate Collection(2011) One Night Lonely(2020) Fingerprints & Footprints: The Ultimate Collection is a double greatest hits album by Austral...
1829 treaty between Colombia and Peru Treaty of GuayaquilTreaty of Peace Between Colombia and PeruDisputed territory between Colombia and PeruTypePeace treatyDrafted1829Signed22 September 1829LocationGuayaquilEffective27 October 1829Signatories Gran Colombia Peru Full text es:Tratado de Guayaquil at Wikisource The Treaty of Guayaquil, officially the Treaty of Peace Between Colombia and Peru, and also known as the Larrea–Gual Treaty after its signatories, was a peace treaty signe...
هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (ديسمبر 2020) مركز الإمارات العربية المتحدة للصرافةمعلومات عامةالجنسية الإمارات العربية المتحدة التأسيس 1980 النوع عمل تجاري المقر الرئيسي أبو ظبي المنظومة الاقتصاديةا...
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel – news · newspapers · books · scholar · JSTOR (January 2012) (Learn how and when to remove this template message) 2003 video gameYu-Gi-Oh! Worldwide Edition: Stairway to the Destined DuelDeveloper(s)Kon...
French footballer Samir Nasri Nasri with France in 2012Personal informationFull name Samir Nasri[1]Date of birth (1987-06-26) 26 June 1987 (age 36)[2]Place of birth Septèmes-les-Vallons, FranceHeight 1.75 m (5 ft 9 in)[3]Position(s) Attacking midfielderYouth career1995–1997 Pennes Mirabeau1997–2004 MarseilleSenior career*Years Team Apps (Gls)2004–2008 Marseille 121 (11)2008–2011 Arsenal 86 (18)2011–2017 Manchester City 129 (18)2016–2017...
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Kung Hei Fat Choy film – news · newspapers · books · scholar · JSTOR (May 2023) (Learn how and when to remove this template message) 1985 Hong Kong filmKung Hei Fat ChoyDVD coverTraditional Chinese恭喜發財Simplified Chinese恭喜发财Hanyu Pinyin...
1981 British television drama series For other versions, see The Day of the Triffids (disambiguation). The Day of the TriffidsTitle cardGenreScience fiction dramaBased onThe Day of the Triffids by John WyndhamWritten byDouglas LivingstoneDirected byKen HannamStarringJohn DuttineEmma RelphMaurice ColbourneStephen YardleyGary OlsenCountry of originUnited KingdomNo. of episodes6ProductionProducerDavid MaloneyRunning time26 minutes (per episode)Original releaseNetworkBBC OneRelease10 September...
1960 film Toto, Fabrizi and the Young People TodayFilm posterDirected byMario MattoliWritten byCastellano & PipoloProduced byIsidoro Broggi Renato Libassi Gianni MinerviniStarringTotòAldo FabriziCinematographyAlvaro MancoriEdited byGisa Radicchi LeviMusic byGianni FerrioRelease date 1960 (1960) Running time87 minutesCountryItalyLanguageItalian Toto, Fabrizi and the Young People Today (Italian: Totò, Fabrizi e i giovani d'oggi) is a 1960 Italian comedy film directed by Mario Mattoli...
1964 poetry collection by Leonard Cohen Flowers for Hitler First editionAuthorLeonard CohenLanguageEnglishGenrePoetryPublisherMcClelland & StewartPublication date1964 Flowers for Hitler is Canadian poet and composer Leonard Cohen's third collection of poetry, first published in 1964 by McClelland & Stewart.[1] Like other artworks regarding Adolf Hitler as a subject, it was somewhat controversial in its day.[2][3] Cohen's original title, Opium and Hitler, was re...