Новое начало, старое направление
Новое начало, старое направление
Подобно многим другим вещам, языки программирования и стили програмирования изменяются со временем. В 1994 году кажется немного анахроничным программировать на Turbo Pascal, когда остальной мир кажется сходит с ума по C++. Также кажется немного странным программировать в классическом стиле, когда остальной мир переключился на объектно-ориентированные методы. Однако, несмотря на четырехлетнюю паузу, было бы слишком тяжело сейчас переключиться, скажем, на C++ с объектной ориентацией. Во всяком случае, Pascal все еще не только мощный язык программирования (фактически больше, чем когда либо), но это и замечательная среда для обучения. Си – известно трудный для чтения язык... он часто был обвиняем, наряду с Forth, как «язык только для записи». Когда я программирую на C++ я трачу по крайней мере 50% своего времени на борьбу с синтаксисом языка а не с концепциями. Сбивающие с толку «&» или "*" могут не только изменить функционирование программы, но также и ее правильность. Наоборот, код Паскаля обычно совершенно ясен и прост для чтения даже если вы не знаете языка. Что вы видите, то вы почти всегда и получите, и мы можем сконцентрироваться на концепциях, а не тонкостях реализации. Я сказал в начале, что целью этой обучающей серии была не генерация самого быстрого в мире компилятора, а изучение основ технологии компиляции, с наименьшими затратами времени на борьбу с синтаксисом языка или другими аспектами реализации программного обеспечения. Наконец, так как многое из того, что мы делаем в этом курсе, составляет программное экспериментирование, важно иметь компилятор и связанную с ним среду, который компилирует быстро и без суеты. По моему мнению наиболее значимым мерилом времени при разработке программного обеспечения является скорость цикла редактирование/компиляция/тестирование. В этом отделе Turbo Pascal – король. Скорость компиляции блестяще быстрая, и продолжает становиться быстрее с каждым выпуском (как им это удается?). Несмотря на крупные усовершенствования в быстродействии компиляции C за последние годы, даже Borland-овский самый быстрый компилятор C/C++ все еще не сравним с Turbo Pascal. Далее, редактор, встроенный в его IDE, средство make, и даже их превосходный умный компоновщик, все дополняют друг друга чтобы получить замечательную среду для быстрой разработки. По всем этим причинам, я собираюсь придерживаться Паскаля в продолжении этой серии. Мы будем использовать Turbo Pascal for Windows, один из компиляторов, предоставляемый Borland Pascal with Objects, версия 7.0. Если у вас нет этого компилятора не волнуйтесь... ничего из того, что мы делаем здесь не будет рассчитано на то, что вы имеете последнюю версию. Использование Windows версии сильно помогает мне, позволяя использовать Clipboard для копирования кода из редактора компилятора в эти документы. Она также должна помочь вам по крайней мере копировать код в обратном направлении.
Я думал долго и трудно о том, надо ли представить нашему обсуждению объекты. Я большой защитник объектно-ориентированных методов для всех применений и такие методы определенно имеют свое место в технологии компиляции. Фактически, я написал несколько статей только на эти темы (ссылки 1-3). Но архитектура компилятора, основанного на объектно-ориентированных подходах, значительно отличается от архитектуры более классического компилятора, который мы строим. Кроме того, коней на переправе не меняют. Как я сказал, изменяются стили программирования. Кто знает, может быть пройдут еще шесть лет прежде чем мы закончим эти дела, и если мы будем изменять код каждый раз при изменении стиля программирования мы можем никогда не закончить.
Так что теперь, по крайней мере, я определился продолжать классический стиль в Pascal, хотя мы действительно могли бы обсуждать объекты и объектную ориентацию по ходу дела. Аналогично, целевой машиной останется семейство Motorola 68000. Из всех решений, которые буду приняты здесь, это было самым простым. Хотя я знаю, что многие из вас хотели бы видеть код для 80x86, 68000 является, вообще-то, даже более популярным как платформа для встроенных систем, и это то применение ради которого это все изначально и начиналось. Компилируя для PC, платформы MSDOS, мы должны были бы иметь дело со всеми проблемами системных вызовов DOS, форматов компоновщика DOS, файловой системы PC и аппаратными средствами и всеми другие осложнениями среды DOS. Встроенная система, с другой стороны, должна выполняться автономно и я всегда представлял, что для такого вида применений, как альтернатива ассемблеру, язык подобный KISS процветал бы. В любом случае, кто хочет иметь дело с архитектурой 80x86 если они не должны?
Одна из возможностей Turbo Pascal которую я собираюсь серьезно использовать это модули. В прошлом мы должны были делать компромиссы между размером кода, сложностью и функциональными возможностями программы. Многое из нашей работы было по природе компьютерным экспериментированием, рассматриванием только одного аспекта технологии компиляции в один момент времени. Мы делали это чтобы избежать возни с большими программами, исследуя только простые понятия. В процессе, мы заново изобретали колесо и заново программировали те же самые функции больше раз, чем я могу сосчитать. Модули Turbo предоставляют замечательный способ получить функциональность и простоту одновременно: вы пишете многократно используемый код и вызываете его в одной строке. Ваша тестовая программа остается маленькой, но она может делать мощные вещи.
Одна из возможностей модулей Turbo Pascal – их блок инициализации. Как в пакете Ada, любой код в основном блоке begin-end модуля выполняется когда программа инициализирована. Как вы увидите позже, это иногда дает нам хорошее упрощение кода. Наша процедура Init, которая была с нами начиная с Главы 1, полностью исчезает когда мы используем модули. Различные подпрограммы в Cradle, другие ключевые возможности нашего подхода, будут распределены по модулям.
Концепция модулей, конечно, ничем не отличается от модулей Си. Однако в C (и C++) интерфейс между модулями происходит через операторы include препроцессора и заголовочные файлы. Как кто-то, кто читал множество прогрограмм других людей на C, я всегда находил это довольно сбивающим с толку. Всегда кажется, что любая структура данных, о который вы бы хотели знать, находится в каком-то другом файле. Модули Turbo проще по той причине, за которую они критикуются некоторыми: интерфейсы функций и их реализации включены в тот же самый файл. В то время, когда эта организация может создать проблемы с защитой кода, она также уменьшает количество файлов наполовину, что не в два раза хуже. Связывание объектных файлов также просто, потому что компилятор Turbo заботится об этом без необходимости в файлах типа make или других механизмах.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Направление вывода текста
Направление вывода текста Направлением вывода текста можно управлять, используя CSS-свойство direction. Оно может принимать следующие значения:• ltr – направление слева направо;• rtl – направление справа
Что-то старое, что-то новое
Что-то старое, что-то новое Процессор оригинальной System/3, появившейся на свет в 1969 году, был полностью реализован аппаратно. Он был очень прост и поддерживал всего 28 команд. Поверх аппаратуры System/3 функционировала ОС вместе со всеми приложениями. С появлением в 1975 году System/32
4.2.7. Новое в KDE 3.4
4.2.7. Новое в KDE 3.4 В состав дистрибутива Fedora Core 4 вошла новая версия KDE 3.4, в которой, как сообщают (www.kde.org), исправлено более 6500 ошибок, учтено более 1700 пожеланий, включено 80000 пополнений от различных разработчиков. Среди главных новшеств:? Полностью обновлена система
1.2. Новое в Windows 7
1.2. Новое в Windows 7 Всех нас манит и привлекает новое и необычное, пускай даже ничего полезного оно не дает, но сам факт! Что касается Windows 7, то ей действительно есть чем похвастаться, даже несмотря на то, что только вроде недавно появилась Windows Vista с множеством нововведений.В
Направление и фиксация взгляда
Направление и фиксация взгляда Когда вы разворачиваете перед собой газету, ваш взгляд в первую очередь останавливается на картинках. Можно предположить, что подобное происходит во время просмотра веб-страниц.Однако исследования Stanford-Poynter Project[15] показали, что при чтении
Направление тока
Направление тока Отметим, что порядок следования узлов в записиR1 1 2 10означает, что положительным считается ток, протекающий от узла 1 к узлу 2. Если в результате анализа ток будет протекать в обратном направлении, то в выходном файле он будет иметь отрицательное значение.
Формирование точек методом «направление – расстояние»
Формирование точек методом «направление – расстояние» Вместо ввода координат допускается использование прямой записи расстояния, что особенно удобно для быстрого ввода длины линии. Такой ввод может производиться во всех командах, кроме тех, которые предполагают
Формирование точек методом «направление – расстояние»
Формирование точек методом «направление – расстояние» Вместо ввода координат допускается использование прямой записи расстояния, что особенно удобно для быстрого ввода длины линии. Такой ввод может производиться во всех командах, кроме тех, которые предполагают
Направление сортировки
Направление сортировки По умолчанию сортировка выполняется в возрастающем порядке. Для выполнения сортировки в убывающем порядке добавьте ключевое слово DESC, как показано в примере 23.8. Если вам нужна убывающая сортировка, создайте для нее убывающий индекс. Firebird не может
Формирование точек методом «направление – расстояние»
Формирование точек методом «направление – расстояние» Вместо ввода координат допускается использование прямой записи расстояния , что особенно удобно для быстрого ввода длины линии. Такой ввод может производиться во всех командах, кроме тех, которые предполагают
Направление строк
Направление строк Прямая строка указывает на уравновешенность писавшего, его сдержанность, самообладание, большой запас внутренней энергии, умение доводить дело до конца (рис. 11).Волнистые строки позволяют говорить о том, что человек обладает гибким мышлением, умением
Изба-читальня: старое и новое
Изба-читальня: старое и новое Автор: Киви БердИздательство Doubleday выпустило книгу, которая еще до попадания на прилавки породила в Сети волну дискуссий и обсуждений. Что, в общем-то, неудивительно, поскольку именно такова и была цель этой полемически заостренной работы под
ТЕХНОЛОГИИ: Хорошо забытое старое
ТЕХНОЛОГИИ: Хорошо забытое старое Автор: Родион НасакинВ начале июля Emca International, которая уже больше сорока лет занимается стандартизацией потребительской электроники и является автором 90 % всех спецификаций оптических и магнитных носителей, объявила о первых
Веб-виджеты: старое развлечение на новый лад Андрей Крупин
Веб-виджеты: старое развлечение на новый лад Андрей Крупин Мини-приложения, так называемые виджеты (или гаджеты, как их ещё именуют), надёжно утвердились на десктопах и теперь потихонечку перекочевывают в веб, предоставляя блоггерам и владельцам интернет-ресурсов
Василий Щепетнёв: Новое направление Василий Щепетнев
Василий Щепетнёв: Новое направление Василий Щепетнев Опубликовано 03 августа 2010 года Где-то показывают миру в лице его лучших представителей новую компьютерную игрушку. Зал, манящий прохладным воздухом, кратенькая презентация с показом выигрышных