Рождение персонального компьютера

В 1975 году фотография комплекта Altair компании MITS была помещена на обложку январского номера журнала Popular Electronic. Этот комплект, который можно считать первым ПК, состоял из процессора 8080, блока питания, лицевой панели с множеством индикаторов и запоминающего устройства емкостью 256 байт (не килобайт!). Стоимость комплекта составляла 395 долларов, и покупатель должен был сам собрать компьютер. Этот ПК был построен по схеме с открытой шиной (разъемами), что позволяло другим фирмам разрабатывать дополнительные платы и периферийное оборудование. Появление нового процессора стимулировало разработку различного программного обеспечения, включая операционную систему СР/М (Control Program for Microprocessors) и первый язык программирования BASIC (Beginners All-purpose Symbolic Instruction Code) компа­нии Microsoft.

В 1975 году IBM впервые выпустила устройство, которое можно было бы назвать персональным компьютером. Модель 5100 имела память емкостью 16 Кбайт, встроенный дисплей на 16 строк по 64 символа, интерпретатор языка BASIC и кассетный накопитель DC-300. Однако стоимость компьютера (9 000 долларов) для рядового покупателя оказалась слишком высокой, особенно если учесть, что множество любителей (названных позже хакерами) предлагали собственные комплекты всего за 500 долларов. Очевидно, что ПК компании IBM не могли выдержать такой конкуренции на рынке и продавались очень плохо.

До появления известного сейчас IBM PC (модель 5150) были разработаны модели 5110 и 5120. Хотя эти компьютеры и предшествовали IBM PC, они не имели с ним ничего общего. IBM PC был больше похож на выпущенную в 1980 году для применения в офисах модель System/23 DataMaster.

В 1976 году новая компания Apple Computer вышла на рынок с компьютером Apple I стоимостью 666 долларов. Его системная плата была привинчена к куску фанеры, а корпуса и блока питания не было вообще. Было выпущено всего несколько экземпляров этого компьютера, которые впоследствии продавались коллекционерам за 20 тыс. дол­ларов. Но появившийся в 1977 году компьютер Apple II стал прообразом большинства последующих моделей, включая и IBM PC.

К 1980 году на рынке микрокомпьютеров доминировали две базовые модели компью­терных систем. Это был Apple II, имевший множество преданных пользователей и ги­гантское количество программ, и несколько других моделей, происходивших от комплекта Altair. Эти компьютеры были совместимы один с другим, имели одну операционную систему (СР/М) и стандартные разъемы расширения с шиной S-100 (по 100 контактов на разъем). Все они собирались различными компаниями и продавались под разными названиями. Но в большинстве случаев ими использовались одинаковые программные и аппаратные части. Интересно отметить, что ни один компьютер не был совместим ни с одним из двух основных современных стандартов ПК — ни с IBM, ни с Мас.

Новый конкурент, появившийся на горизонте, дал возможность определить факторы будущего успеха персонального компьютера: открытая архитектура, слоты расширения, сборная конструкция, а также поддержка аппаратного и программного обеспечения раз­личных компаний. Конкурентом, как ни удивительно, оказался компьютер компании IBM, до сих пор занимавшейся только мощными производственными мэйнфреймами. Этот ком­пьютер, по существу, напоминал раннюю версию Apple, в то время как системы Apple приобретали черты, более подходящие для IBM. Открытая архитектура IBM PC и закрытая архитектура компьютеров Macintosh произвели настоящий переворот в компьютерной индустрии.

Элементарная логика

В отличие от естественных наук, компьютерные науки получили большой стимул от широкого и непрерывного взаимодействия с логикой. Особую роль в компьютерных науках играют доказательные методы разработки алгоритмов и программ с доказательствами их правильности.

Тестирование программ может выявить наличие ошибок в программах, но не может гарантировать их отсутствие. Гарантии отсутствия ошибок в алгоритмах и программах могут дать только доказательства их правильности. Алгоритм не содержит ошибок, если он дает правильные решения для всех допустимых данных.

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

Единственный путь для преодоления этих проблем—это изучение систематических методов составления алгоритмов и программ с одновременным анализом их правильности в рамках доказательного программирования с самого начала обучения основам алгоритмизации и программирования.

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

В результате программисты пишут программы с большим числом ошибок, которые они не могут ни выявить, ни исправить. Массированное тестирование программ на ЭВМ приносит программистам несомненную пользу, однако не дает гарантий полного избавления от ошибок.

Практика применения и изучения доказательных методов программирования показала, что эта технология вполне доступна студентам математических факультетов, которым вполне по силам написание доказательств правильности алгоритмов, после проверки и тестирования программ на ЭВМ.

Наибольший эффект в освоении технологий доказательного программирования наблюдается в олимпиадах по информатике и программированию, где победителями и призёрами становятся те студенты, которые освоили технику тестирования программ на ЭВМ и составления алгоритмов и программ без ошибок.

Логи́ческое программи́рование — парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

Самым известным языком логического программирования является Prolog.

Первым языком логического программирования был язык Planner (см. обзор Шапиро (Ehud Shapiro) [1989]), в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Planner использовался для того, чтобы понизить требования к вычислительным ресурсам (с помощью метода backtracking) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан язык Prolog, который не требовал плана перебора вариантов и был, в этом смысле, упрощением языка Planner.

От языка Planner также произошли логические языки программирования QA-4, Popler, Conniver и QLISP. Языки программирования Mercury, Visual Prolog, Oz и Fril произошли уже от языка Prolog. На базе языка Planner было разработано также несколько альтернативных языков логического программирования, не основанных на методе поиска с возвратами (backtracking), например, Ether (см. обзор Шапиро [1989])

Наши рекомендации