Cтраница 3
Вопрос совершенно закономерен, но ответить на него довольно сложно. Прежде всего, изготовитель ЭВМ, вероятно, затратил значительно больше денег на проверку программного обеспечения, чем на проверку аппаратуры, и, очевидно, ошибки в программном обеспечении нельзя просто отнести за счет недостатка квалификации программистов. Главная причина в том, что программное обеспечение по сути своей значительно сложнее аппаратуры. Входные данные для операционной системы неизмеримо разнообразнее, чем для центрального процессора. [31]
Отмечается повсеместное кризисное состояние в вопросе разработки программного обеспечения ( ПО), доля которого в стоимости всей системы обработки данных непрерывно увеличивается. Несмотря на наличие различных вспомогательных средств ( языков высокого уровня и трансляторов для них, редактирующих и других программ), процесс составления, отладки и тестирования ПО продолжает оставаться в значительной степени ручным и в большой мере зависит от квалификации программиста. [32]
Паскаль - второй по распространенности после Бейсика язык программирования, используемый на ПК. В Паскале есть понятие метки, но широко использовать ее не рекомендуется. Считается, что квалификация программиста, пишущего на этом языке, обратно пропорциональна числу использованных им меток. На Паскале реализация разветвленного алгоритма с циклами и альтернативами ведется через специальные управляющие языковые конструкции. Этот прием иллюстрируется программой-билингвой поиска локального максимума многомерной функции. Слева помещена программа на Бейсике, справа - на Паскале. В них задействованы все виды циклов и альтернативы. Эта программа используется как модуль в программе ЭФФСТИСП определения оптимального парораспределения в барабане котла при ступенчатом испарении. [33]
Для убыстрения процесса программирования, обеспечения программной совместимости разнотипных ЭВМ, широкого тиражирования программ, реализующих типовые проектные решения в АСУ, используются языки более высокого уровня, называемыми процедурными, или алгоритмическими, языками программирования. Эти языки практически не зависят от типа ЭВМ, не требуют от программиста детального знания машины и операционной системы и рассчитаны на массовое использование реализации разноплановых задач АСУ. Обычно для составления программы на процедурном языке программирования требуется меньшая квалификация программистов, что важно при современных масштабах разработки и совершенствования АСУ различных типов и назначений. [34]
Следует подчеркнуть, что отладка является наиболее ответственным этапом прохождения задачи, поскольку этот этап является последним, после которого изготовленная программа передается для ее использования с целью решения конкретных задач. С другой стороны, из-за трудности формализации ее проведения, отладка представляет весьма сложную и трудоемкую работу, которая требует известного опыта и на выполнение которой нередко затрачивается не меньше времени, чем на разработку и составление программы. В связи с этим многие считают, что показателем квалификации программиста является не столько умение писать программы, сколько умение их отлаживать. [35]
Основу ПО ЭВМ первого поколения составлял машинный язык, поэтому ЭВМ были программно несовместимы. Разработка ПО занимала много времени и его качество зависело от квалификации программиста, поэтому возникла идея автоматизации программирования за счет создания библиотек стандартных программ и подпрограмм. [36]
Существование отношения Фибоначчи ФИ в геометрии очень хорошо известно. Однако подходящий для инвесторов способ применения этого отношения как геометрического инструмента к движению биржевых цен с использованием ФИ-спиралей и ФИ-эллип-сов до настоящего времени не публиковался. Чтобы применять ФИ-спирали и ФИ-эллипсы как аналитические инструменты, требуются квалификация программиста и сила компьютеров. [37]
Таким образом, наилучшее практическое решение заключается все же в применении процедур BIOS. По крайней мере критические секции сложных программ целесообразно программировать на языке ассемблера с привлечением процедур BIOS. Разумеется, степень такого привлечения зависит от практических задач и квалификации программиста. [38]
Однако в любом случае владение автокодом является весьма полезным для любого программиста, учитывая тот факт, что программа, написанная на алгоритмическом языке, в конечном счете транслируется на язык машины и что впоследствии программисту нередко приходится иметь дело не с исходной, а с оттранслированной программой. Владение автокодом как раз и дает такие знания. Поэтому не случайно, что владение автокодом расценивается как важный показатель квалификации программиста и что такие программисты пользуются повышенным спросом. [39]
В КП информационно-справочных систем эти виды ошибок близки по удельному весу, однако для автоматизации их обнаружения применяются различные методы. На начальных этапах разработки и автономной отладки модулей программные ошибки составляют около Д всех ошибок. Ошибки применения операций на начальных этапах разработки достигают 14 %, а затем быстро убывают при повышении квалификации программистов. Каждая программная ошибка влечет за собой необходимость изменения около шести команд, что существенно меньше, чем при алгоритмических и системных ошибках. На этапах комплексной отладки и эксплуатации удельный вес программных ошибок падает и составляет около 15 и 3 % соответственно от общего количества ошибок, выявляемых в единицу времени. [40]
Основное преимущество применения для автоматизации программирования языков высокого уровня состоит в том, что упрощается процесс программирования и программы не привязываются к конкретной машине. Подсчитано, что в среднем одна строка программы на языке высокого уровня эквивалентна пяти строкам на языке мнемокода и, следовательно, программирование на последнем является в пять раз более дорогим и трудоемким. Однако всегда программа, оттранслированная с языка высокого уровня, занимает больший объем памяти, который зависит от квалификации программиста, и, следовательно, требует большего времени на реализацию, чем программа, записанная и оттранслированная с мнемокода. При применении языков высокого уровня в 5 - 10 раз сокращается время составления программ и уменьшаются затраты на программирование. Но для получения программ с оптимальными параметрами необходим достаточный опыт программирования. Эти языки применяются для создания программ длиной от 1500 слов и более. [41]
Именно так работает большинство современных интерпретаторов, в основном ради эффективности реализации на современной аппаратуре. Этот способ требует большего объема памяти, но является более общим и в меньшей степени основан на уровне квалификации программиста. Такие системы не могут использовать отрезание ( cut), и поэтому разрабатываются другие средства управления. [42]
В практике программирования широко используется метод тестирования, который заключается в том, что о использованием ЬйМ проверяют программу на некотором ограниченном множестве исходных данных. В последние годы предлагаются и другие призмы для проверки программ. Время проверки программы колеблется & широких пределах по отношение ко вези остальной работе и может служить одним из показателей квалификации программиста при хорошей организации работ на вычислительном центре. По оценке специалистов проверка может потребовать W-50 времени работы над задачей. Столь трудоемкая работа, к сожалению, слабо исследована и ей мало уделяется внимания в учебниках по программированию. Особенно болезненно сказывается ато обстоятельство при разработке все более сложных и громоздких программных систем. [43]
Для успешного ведения отладки программы ( особенно достаточно сложной) важное значение имеет планомерность в выполнении этой работы. Наличие такого плана позволяет проверить полноту намечаемой отладки и упрощает дальнейшее ее проведение. Этот план, и в частности - число выделяемых этапов, конечно, зависит и от сложности отлаживаемой программы, и от квалификации программиста. При этом приходится думать и о сроках проведения отладки, и о затратах для этой цели машинного времени. Однако следует иметь в виду, что чем сложнее очередной выделенный этап отладки, тем труднее будет его реализовать. Поэтому при отсутствии достаточного опыта работы следует всю отладку разбивать на достаточно простые этапы, чтобы избежать трудностей в их реализации. Во всяком случае, не следует стремиться всю отладку провести за один сеанс работы на ЭВМ - такая попытка весьма редко увенчивается успехом; обычно это приводит к бесполезным затратам машинного времени и к появлению у программиста растерянности в отношении того, что и как делать дальше. [44]
По структуре программы он близок к ассемблеру с разветвленным аппаратом макроопераций, имеет хорошо продуманную структуру данных. Однако использование рекурсии в IPL-V затруднено. Поэтому он может применяться при реализации неграмматических блоков модели. Другим недостатком языка IPL-V является зависимость качества программы от квалификации программиста и высокая сложность программ, затрудняющая обмен информацией между пользователями. LISP - язык высокого уровня, ориентированный на решение задач, связанных с обработкой списковых структур. Программа на этом языке состоит из произвольного числа обращений к LISP-функ-циям как стандартным ( встроенным), так и определенным самим пользователем. Основным достоинством языка LISP является наличие в нем рекурсий, широко используемых при реализации грамматических конструкций в блоках Анализатор, Коррелятор и Экстраполятор ситуационного управления. Кроме того, в числе стандартных функций имеется полный набор арифметических и логических операторов. [45]