Перед программистом задача разбиения программы на части встает в том случае, когда объем его программы превосходит объем основной памяти. Часто используют схему разбиения программы на части [17], в которой объем основной памяти распределяется между отдельными сегментами программной иерархии. [18]
В Windows правила разбиения программы на модули не отличаются от соответствующих правил DOS. Основная идея — создать файлы заголовков для каждого из ваших модулей, а затем объявить разделяемые типы и функции в этих заголовочных файлах. [19]
Существует несколько оснований для разбиения программы на функции. Подход разделяй и властвуй делает разработку программы более контролируемой. [21]
Под секционированием понимается процесс разбиения программы на части. Независимо транслируемая часть программы называется программной секцией. Программа может состоять из одной или нескольких программных секций. [22]
Применение нисходящего метода проектирования обеспечивает разбиение программы на небольшие части, с которым можно работать по отдельности. Как только взаимосвязи между программами MAIN, INSW, OUTDSP и DELAYN определены их детальное проектирование и кодирование могут производиться более или менее независимо. При этом важно не то, каким способом данный модуль выполняет свою функцию, а то, что он выполняет ее. [24]
Мао Цзэдун. Кровавый остров: советско-китайский раскол
При проектировании сверху вниз производится разбиение программы или ее частей на независимые фрагменты, которые программируются отдельно друг от друга. Использование на каждом уровне только стандартных структур позволяет получить структурированную программу. Таким образом, нисходящий способ разработки дает возможность организовывать модульные и структурированные программы. [26]
Решением проблемы размера программы было разбиение программы на небольшие легко обозримые части. Процедуры, конечно, позволяют разбивать программу на небольшие участки. Если каждая из этих частей выполняет небольшую и легко проверяемую подзадачу всей задачи программирования, то перед программистами стоит более легкая интеллектуальная задача, чем в том случае, когда ему приходится иметь дело со всей программой в целом. [27]
Под сегментацией обычно понимают возможность разбиения программы на отдельные части, независимую их отладку и компоновку из таких частей достаточно больших программных комплексов. К сегментации приходится прибегать в тех случаях, когда программа не может целиком разместиться в оперативной памяти ЭВМ либо когда за счет использования уже готовых блоков можно сократить затраты на составление программы. [28]
Абстрактные типы данных предлагают естественный способ разбиения программы на модули, спецификации и верификации модулей. С помощью абстракции данных можно упрощать программирование, уменьшая количество ошибок, и создавать более читаемые и легко модифицируемые программы, в которых можно менять структуры данных, не внося больших изменений в программы. [29]
Настоящая глава знакомит читателя с принципом разбиения программы на программные секции. В дальнейшем программную секцию будем называть просто секцией. [30]
Руководство по управлению космическим кораблём «Земля» | #аудиокнига | Ричард Бакминстер Фуллер
Источник: www.ngpedia.ru
История языков программирования: 1960-е
1950-е годы продемонстрировали рост интереса к компьютерам и программированию. В прошлый раз мы поговорили о появлении большой четвёрки языков: Fortran, COBOL, Algol и Lisp, – составившие надёжный фундамент для будущего.
Следующее десятилетие ознаменовалось уникальным подходом к разработке языков – коллективным. Технологический прогресс продвигался так быстро, что необходимо было стандартизировать новую информацию, не допуская дублирование. В отношении языков программирования этот принцип проявлялся наиболее ярко.
CTC DataPoint-3300. Компьютеры обретают современный облик.
К примеру, уже упомянутый Fortran вовсе не был первым языком, который решил проблему с повторяющимися макросами ассемблера. Компания Remington Rand ещё в 1952 году запустила линейку компиляторов A, которые использовали готовые библиотеки. Однако у Fortran был мощный покровитель IBM и самые современные машины, поэтому компиляторы А остались лишь в истории.
Комитеты и новые языки
Таким образом, к началу 1960-х годов было создано два крупных комитета. Первый – академический, был создан эгидой Министерства Обороны США. Второй комитет, более крупный, представлял коммерческие интересы и имел статус международного. Изначально все они работали над развитием Fortran.
Но, как мы уже заметили в первой части, из-за отсутствия нормальной работы с текстом он не мог в полной мере удовлетворить потребности бизнеса и науки. Так в привилегированной группе языков программирования появились COBOL и Algol. Ответвлением последнего, по сути, являлся Lisp, именно поэтому в общей истории его роль несправедливо преуменьшена.
Если вы взгляните на список языков программирования 1960-х, увидите преимущественно знакомые названия. Главные достижения комитетов, а значит и всего софтверного мира IT – версии ALGOL 60 и 68, Fortran IV и 66, COBOL 61, 65 и 68. Собственно все свои характерные черты, указанные языки, приобрели именно в 1960-х годах.
Языки ответвления имели узкоспециальный характер и развития не получили:
* СPL, BCPL и B – предшественники языка C. Опирались на основные идеи Algol, обладали схожим синтаксисом, но популярность не обрели из-за отсутствия явных преимуществ перед «комитетным» языком.
* Planner – язык для функционально-логического программирования. Являлся развитием языка Lisp, использовал его в качестве подмножества. Вплоть до 1972 года, пока не появился Prolog, был востребован и использоваться в том числе в СССР (адаптация ПЛЭНЕР-БЭСМ для компьютера БЭСМ-6). Аналогичной участи удостоился другой язык конца 1960-х – PAL.
* FORMAC, QUIKTRAN – частные ограниченные реализации Fortran для запуска на конкретных машинах для увеличения их быстродействия.
* AMBIT, SNOBOL – попытки привести COBOL и Fortran к единому знаменателю, не увенчавшиеся успехом.
Программирование для каждого
Главным же итогом 1960-х в мире IT стало вовсе не создание комитетов и не формирование облика современных высокоуровневых языков, а то, что программирование стало народным. Теперь ему повсеместно обучали в университетах, студентам больше не требовалось быть инженерами, чтобы понимать, как функционирует машина с написанным ими текстом. Огромную роль в этом сыграли специально придуманные образовательные языки – BASIC и Logo.
Несмотря на общее назначение, подход был принципиально разным. Про Logo мы уже писали – язык, отметивший в этом году полувековой юбилей, всё ещё остаётся востребованным в университетах и школах. Благодаря графической оболочке, он позволил окунуться в мир программирования и студентам, и маленьким детям. Основные идеи обучения и подход легли в основу одного из самых стремительно развивающихся языков – Scratch.
BASIC – симбиоз FORTRAN II и ALGOL 60. Несмотря на большое количество ограничений, по сути он стал первым языком, позволившим обучать программированию на «взрослом» уровне. То есть сделать переход от теории к работе с Algol или Fortran быстрым и безболезненным.
В истории влияние BASIC трудно переоценить. Без него, возможно, не было в современном виде никакого ПО, ведь и Microsoft, и Apple во многом обязаны именно этому языку и его ответвлениям. VB6 и Visual Basic .NET по-прежнему востребованы, причём не в обучении, а в создании полноценных приложений.
Программирование в СССР
Тем временем в нашей стране именно в 1960-е начинают применять «комитетские» языки. Первым доехал ALGOL 60, транслятор с него был создан для машины БЭСМ-6. Долгое время именно он и ALGOL 68 считались «базовыми» для применения в научной сфере.
БЭСМ-6
Экспансия Fortran началась с физиков. Из-за того, что большинство вычислений в CERN проводилось на этом языке, советским учёным пришлось создавать компиляторы для своих машин. Сначала это был компилятор для Минск-2 в 1967 году, а через год был выпущен ФОРТРАН-ДУБНА для всё той же БЭСМ-6. С этого момента Fortran входит в категорию избранных языков программирования в СССР, его начинают преподавать в вузах и научных институтах.
А вот Lisp был ввезён официально самим создателем, Джоном Маккарти. Он прочитал ряд лекций в Москве и Новосибирске в 1968 году, рассказав про язык и «искусственный интеллект». Кстати, этот термин придумал тоже он. Маккарти во время гастролей высказывал сомнения, что его язык будет работать на советских машинах. Наши учёные вызов приняли и в том же году адаптировали его под БЭСМ-6.
Лисп-система на этих машинах успешно применялась вплоть до середины 1980-х, пока элементная база физически и морально не устарела.
Таким образом, 1960-е годы ознаменовались тотальным расширением идеи программирования на языках высокого уровня. Теперь с машинами работали не только учёные и инженеры, но и учащиеся вузов во всех уголках мира. Технологическая эволюция подошла к порогу тотальной доступности.
Источник: luckyea77.livejournal.com
Развитие языков программирования
Языки программирования принято делить на пять поколений. В первое поколение входят языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка» еще его называют язык «один в один».
Расцвет второго поколения языков программирования пришелся на конец 50-х — начало 60-х годов. Тогда был разработан символический ассемблер, в котором появилось понятие переменной. Он стал первым полноценным языком программирования. Благодаря его возникновению заметно возросли скорость разработки и надежность программ.
Появление третьего поколения языков программирования принято относить к 60-м годам. В это время родились универсальные языки высокого уровня, с их помощью удается решать задачи из любых областей. Такие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций, позволили резко повысить производительность труда программистов. Понятная большинству пользователей структура этих языков привлекла к написанию небольших программ (как правило, инженерного или экономического характера) значительное число специалистов из некомпьютерных областей. Подавляющее большинство языков этого поколения успешно применяется и сегодня.
С начала 70-х годов по настоящее время продолжается период языков четвертого поколения. Эти языки предназначены для реализации крупных проектов, повышения их надежности и скорости создания. Они обычно ориентированы на специализированные области применения, где хороших результатов можно добиться, используя не универсальные, а проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода.
Рождение языков пятого поколения произошло в середине 90-х годов. К ним относятся также системы автоматического создания прикладных программ с помощью визуальных средств разработки, без знания программирования. Главная идея, которая закладывается в эти языки, — возможность автоматического формирования результирующего текста на универсальных языках программирования (который потом требуется откомпилировать). Инструкции же вводятся в компьютер в максимально наглядном виде с помощью методов, наиболее удобных для человека, не знакомого с программированием.
Fortran (Фортран). Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е годы. Для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться во многих организациях, а сейчас появился очередной стандарт Фортрана F2k.
Cobol (Кобол). Это компилируемый язык для применения в экономической области и решения бизнес — задач, разработанный в начале 60-х годов. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня. Достаточно сказать, что наибольшую зарплату в США получают программисты на Коболе.
PL/1. В 1964 году все та же корпорация IBM создала язык PL/1, который был призван заменить Cobol и Fortran в большинстве приложений. Язык обладал исключительным богатством синтаксических конструкций. В нем впервые появилась обработка исключительных ситуаций и поддержка параллелизма. Надо заметить, что синтаксическая структура языка была крайне сложной.
Пробелы уже использовались как синтаксические разделители, но ключевые слова не были зарезервированы. Язык так и не стал популярен вне мира IBM.
Algol (Алгол). Компилируемый язык, созданный в 1960 году. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения.
Basic (Бейсик). В 1963 году в Дартмутском колледже был создан язык программирования BASIC (Beginners’ All-Purpose Symbolic Instruction Code — многоцелевой язык символических инструкций для начинающих). Язык задумывался в первую очередь как средство обучения и как первый изучаемый язык программирования. Было создано несколько мощных реализаций BASIC, поддерживающих самые современные концепции программирования (ярчайший пример — Microsoft Visual Basic).Для этого языка имеются и компиляторы, и интерпретаторы, по популярности он занимает первое место в мире. Он создавался в качестве учебного языка и очень прост в изучении.
Pascal (Паскаль). Язык Паскаль по сути, это первый широко распространенный язык для структурного программирования. Впервые оператор безусловного перехода перестал играть основополагающую роль при управлении порядком выполнения операторов. В этом языке также внедрена строгая проверка типов данных, что позволило выявлять многие ошибки на этапе компиляции.
Отрицательной чертой языка было отсутствие в нем средств для разбиения программы на модули. Вирт осознавал это и разработал язык Modula-2 (1978), в котором идея модуля стала одной из ключевых концепций языка. В 1988 году появилась Modula-3, в которую были добавлены объектно-ориентированные черты. Логическим продолжением Pascal и Modula являются язык Oberon и Oberon-2.
С (Си). Данный язык был создан в 1972 году Керниганом и Ритчи в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. Он создавался как язык для разработки операционной системы UNIX.
В 1986 году Бьярн Страуструп создал первую версию языка Cи++, добавив в язык Си объектно-ориентированные черты, и исправив некоторые ошибки и неудачные решения языка. Cи++ продолжает совершенствоваться и в настоящее время.
Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе языка Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка — компиляция не в машинный код, а в платформно — независимый байт-код (каждая команда занимает один байт).
Этот байт-код может выполняться с помощью интерпретатора — виртуальной Java-машины JVM (Java Virtual Machine), версии которой созданы сегодня для любых платформ. Благодаря наличию множества Java-машин программы на Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Ява сегодня занимает второе место в мире после Бейсика.
Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini) и созданию платформно — независимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans). Пока основной недостаток этого языка — невысокое быстродействие, так как язык Ява интерпретируемый.
Источник: megaobuchalka.ru