- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Стив Джобс и я: подлинная история Apple - Стив Возняк
Шрифт:
Интервал:
Закладка:
В конечном счете написание интерпретатора для «Бейсика» оказалось самым долгим и самым сложным моим проектом для Apple.
Тогда я лишь хмыкал при мысли о «Бейсике». По сравнению с «Фортраном» это был слабый, легковесный язык. Мне казалось, что никто не станет писать на нем изощренные программы, какими пользуются инженеры и ученые. Я видел, к чему все идет. В той книге, о которой я уже говорил, «Компьютерные игры на “Бейсике” для чайников», упоминалось, что можно просто вбить текст программы и получить готовую игру.
Я писал интерпретатор «Бейсика» для Apple I, основанного на процессоре MOS 6502. Я прикинул, что если напишу этот язык действительно быстро – если буду работать над ним днем и ночью и получу что-то работоспособное, – тогда я могу стать почти что знаменитостью. Люди станут говорить, что Стив Возняк написал первый «Бейсик» для 6502, как Билл Гейтс – для «Альтаира». Писать исходный код весьма увлекательно.
Я никогда по-настоящему не изучал разработку языков программирования. Когда я только начинал обучение в колледже, Аллен Баум копировал учебники в MIT, где он учился, и отправлял их мне. Так я кое-что узнал.
Я понял, что у языков программирования есть грамматическая структура, как у любого языка, и выяснил, как они устроены.
Я не знал, что интерпретаторы «Бейсика» для разных компьютеров, например для DEC и для HP, различались практически во всем. Я-то думал, что они все одинаковые и что разработка Билла Гейтса ничем не отличалась от других.
Так что я стянул на работе пару руководств по «Бейсику» для HP и изучил их. Я стал записывать на бумаге синтаксическую таблицу – грамматику компьютерного языка. Она определяет, какие команды может ввести программист.
Например, если бы в нашем языке была синтаксическая таблица, она бы объясняла, что личные местоимения вроде «он» или «она» – это примерно то же самое, что существительные, и обычно они становятся подлежащими в предложениях вроде: «Он бросил мяч». В этой таблице перечислялись бы все возможные глаголы, в том числе «бросил». И в ней были бы названы все возможные объекты, к которым они применяются, – вроде «мяча». В нашем языке миллионы вариантов для подлежащих, глаголов и объектов, но в языке типа «Бейсика» их число можно ограничить.
Нужны были правила. Допустим, вы написали часть уравнения:
5 + 3 × 7. Если написать ее без скобок, математик поймет, что сначала нужно умножить, а потом сложить. Так что на самом деле речь идет о 5 + 21. Вот это правило – какое действие выполнять первым – и есть пример того, что определяется в синтаксической таблице.
Я ничего не знал о том, как другие писали свои языки программирования. Но мне казалось очевидным, что нужен «стек» для «существительных», где хранились бы числа, стек для «глаголов» (в том числе действий вроде сложения и умножения) и набор приоритетов для каждого глагола.
Основу своего «Бейсика» я написал примерно за четыре месяца. В итоге я исключил возможность вводить десятичные дроби (это также называют вычислениями с плавающей точкой) и использовал только целые числа. Кажется, это сэкономило мне около месяца времени. Я решил, что для игр и компьютерных симуляций – двух главных областей применения моего «Бейсика» – хватит и целых чисел.
Многие важнейшие в моей жизни программы, в том числе те, что я использовал в Колорадо, оперировали лишь целыми числами. Так что я запрограммировал свой «Бейсик» на работу лишь с числами от –32 768 до +32 787.
Я записал всю программу на бумаге – слева машинные коды, справа эквивалент в шестнадцатеричной системе счисления. Все это пришлось делать от руки, я не мог использовать программу для компоновки, как обычно. Точно так же мне пришлось писать небольшую программу для монитора.
И я решил: я же могу написать код сам, своими руками. Зачем мне компьютер?
Кстати, у меня все еще есть тот блокнот, в котором я писал свой «Бейсик». Кажется, его теперь можно выставлять в музее!
Так или иначе, в результате, когда мой «Бейсик 6502» был загружен в компьютер, я мог вводить маленькие программы с клавиатуры. Например, заставить компьютер спросить: «Как вас зовут?» И если вы печатали ответ, то ваше имя начинало летать по всему экрану. Сегодня это кажется таким простым, но тогда никто еще не имел опыта работы на маленьком компьютере, где можно было вводить программы с клавиатуры и тут же их исполнять.
Даже на машинах вроде «Альтаира» программировать было очень дорого: нужно было подключать специальную карту и длинный кабель для соединения с огромным уродливым телетайпом и его клавиатурой.
Несколько раз после собраний Клуба я показывал свой компьютер с «Бейсиком», и всякий раз у присутствующих глаза лезли на лоб.
Но возникла проблема. У Apple I не было постоянной памяти – ни жесткого диска, ни дискет, ни CD-дисковода, как у сегодняшних компьютеров. Так что каждый раз, когда мне нужно было запустить «Бейсик», приходилось включать компьютер и вбивать туда всю программу из блокнота. Эта программа занимала 4000 байт, и у меня уходило на ее ввод около 40 минут. И каждый раз после выключения она стиралась. То есть мне нужно было или вовсе не выключать компьютер – а тогда перевозить его было бы неудобно, – или придумать какое-то решение.
Что такое «Бейсик»Компьютерный язык «Бейсик» с самого начала задумывался как простой в использовании инструмент для написания компьютерных программ. Его создали два профессора Дартмутского колледжа, Джон Кемени и Томас Курц, в 1963 году. Аббревиатура BASIC означает «Многоцелевой код символических инструкций для начинающих» (Beginner’s All-purpose Symbolic Instruction Code). «Бейсик» изучить гораздо проще, чем языки вроде «Паскаля» и «Cи». Он более компактный и медленный. Но на моих первых компьютерах Apple он работал просто прекрасно.
Вот поэтому я разработал кассетный интерфейс для Apple I. Если не считать замены статической памяти динамической, это было единственное изменение по сравнению с моей изначальной версией, созданной во время первых собраний «Клуба самодельных компьютеров» весной 1975 года. Я устроил так, чтобы сразу после включения компьютера «Бейсик» автоматически загружался в память с обычной кассеты и был готов к использованию.
Но тут я обнаружил нечто ужасное. Я допустил просчет. Я думал, что все версии «Бейсика» более или менее одинаковые и что все сто игр на «Бейсике» из моей книги будут запускаться тут же, как только вы их введете. Оказалось, что мой «Бейсик» и «Бейсик» HP, который я штудировал, очень сильно отличаются от «Бейсика» Билла Гейтса и Microsoft, который, в свою очередь, был основан на «Бейсике» фирмы DEC. Черт!
Так что запрограммировать эти игры для Apple I можно было, только внеся в них изменения.
(adsbygoogle = window.adsbygoogle || []).push({});
