Файл: Программирование и языки программирования: определения, инструменты и характерные особенности.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.03.2024

Просмотров: 36

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Средства организации ввода-вывода

Поскольку практически все программы используют средства организации ввода-вывода, то последние имеют очень большое значение. Тем не менее при разработке новых языков программирования вопросам средств организации ввода-вывода часто уделяется намного меньше внимания, чем остальным аспектам. Часто оказывается, что средства организации ввода-вывода весьма сложно реализовать, поскольку соответствующие подпрограммы должны обеспечивать возможность передачи в них произвольного числа параметров, имеющих произвольные типы, что необходимо для обеспечения легкости использования этих подпрограмм.

Более того, эти подпрограммы должны быть достаточно гибкими и обеспечивать возможность работы с самыми различными устройствами, для того, например, чтобы взаимодействие с терминалом ничем не отличалось от взаимодействия с накопителем на магнитных дисках. Хорошо известна имеющаяся в языке Паскаль проблема организации ввода с терминала.

Раздельная трансляция

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

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

2.2 Особенности процедуры выбора языка программирования

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


  • Для выбора наилучшего для решения некоторой задачи языка программирования предлагается использовать трехшаговую процедуру. На первом шаге необходимо сформулировать характеристику решаемой задачи с точки зрения программирования. Очень часто решаемая задача захватывает сразу несколько областей применения. Так, программное обеспечение для экономических расчетов может содержать в себе часть, обеспечивающую предсказание, относящуюся скорее к области научно-технических расчетов, чем к области экономических расчетов. Ниже приведен перечень наиболее широко распространенных областей применения: 
    Научно-технические расчеты – численное программирование. 
    Экономические расчеты – доступ к базам данных, генерация отчетов, финансовые расчеты. 
  • Машинно-зависимое системное программирование – доступ к используемым аппаратным средствам.
  • Машинно-независимое системное программирование – параллельная обработка.
  • Обработка текстов – манипуляции над строками символов. 
    Экспертные системы – динамические структуры данных. 
    Программирование систем реального времени – контроль планирования выполнения. 

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

Ниже приведена часть списка таких средств для научно-технических расчетов [15, c.63]:

  • Наличие высокоточной арифметики; 
  • Возможность работы с массивами; 
  • Наличие комплексной арифметики; 
  • Наличие большого числа математических функций; 
  • Возможность ввода-вывода двоичных файлов; 
  • Возможность передачи параметров и по значению, и по ссылке; 
  • Возможность проведения раздельной независимой трансляции; 
  • Возможность передачи имен подпрограмм в качестве параметров; 
  • Возможность индексации массивов не только начиная с нуля.

Наконец, на третьем шаге необходимо определить, насколько каждый из сравниваемых языков программирования пригоден для использования в соответствующей области применения или совокупности соответствующих областей применения. Для этого необходимо получить ответы на два вопроса для каждого из выписанных на втором шаге средств: 


Обеспечивает ли этот язык программирования возможность использования соответствующих средств? 

Если нет, то может ли возможность использования соответствующих средств быть легко реализована в этом языке программирования? 

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

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

Поддержка сообщества – это вики-сайты, форумы, учебные руководства и, самое важное, дополнительные библиотеки, развивающие язык. Прошли те дни, когда люди работали автономно. Никто не захочет перерывать горы документации, чтобы решить одну маленькую проблему. Если у языка много сторонников, это увеличивает шансы того, что ранее кто-нибудь сталкивался с вашей проблемой и уже написал об этом на вики-сайте или на форуме.

Хороший пример значения сообщества дает язык Perl. Архив Comprehensive Perl Archive Network (CPAN) поддерживается усилиями сообщества. Главная цель CPAN – помочь программистам в поиске модулей и программ, не включенных в стандартный дистрибутив Perl. По своей структуре он децентрализован; авторы обслуживают и улучшают свои собственные модули. Обычной практикой является создание ответвлений и конкурирующих модулей для одной и той же задачи или цели.

3. Особенности и критерии выбора среды разработки

3.1. Понятие и особенности современной IDE

Интегрированная среда разработки (Integrated development environment – IDE), также единая среда разработки, ЕСР – комплекс программных средств, используемый программистами для разработки программного обеспечения (ПО).

Среда разработки включает в себя:

  • текстовый редактор,
  • компилятор и/или интерпретатор,
  • средства автоматизации сборки,
  • отладчик.

Иногда содержит также средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов – для использования при объектно-ориентированной разработке ПО.


IDE обычно предназначены для нескольких языков программирования – такие как IntelliJ IDEA, NetBeans, Eclipse, Qt Creator, Geany, Embarcadero RAD Studio, Code::Blocks, Xcode или Microsoft Visual Studio, но есть и IDE для одного определённого языка программирования – как, например, Visual Basic, Delphi, Dev-C++.

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

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

Интегрированные среды разработки были созданы для того, чтобы максимизировать производительность программиста благодаря тесно связанным компонентам с простыми пользовательскими интерфейсами. Это позволяет разработчику сделать меньше действий для переключения различных режимов, в отличие от дискретных программ разработки. Однако так как IDE является сложным программным комплексом, то среда разработки сможет качественно ускорить процесс разработки ПО лишь после специального обучения. Для уменьшения барьера вхождения многие достаточно интерактивны, а для облегчения перехода с одной на другую интерфейс у одного производителя максимально близок, вплоть до использования одной IDE.

IDE обычно представляет собой единственную программу, в которой проводится вся разработка. Она, как правило, содержит много функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения.

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

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

Большинство современных ИСР являются графическими. Но первые ИСР использовались ещё до того, как стали широко применяться операционные системы с графическим интерфейсом – они были основаны на текстовом интерфейсе с использованием функциональных и горячих клавиш для вызова различных функций (например, Turbo Pascal, созданный фирмой Borland) [9, c.45].


3.1 Критерии выбора IDE (на примере языка Java)

Современная IDE Java-разработчика должна поддерживать Java 8, Scala, Groovy, а также другие языки виртуальной машины Java, которые тот регулярно использует. Также может пригодиться поддержка основных серверов приложений и наиболее популярных веб-структур, в том числе – Spring MVC, JSF, Struts, GWT, Play, Wicket, Grails и Vaadin. IDE должна быть совместима с любыми билдами систем контроля версий, например, Ant, Maven или Gradle, вместе с Git, SVN, CVS, Mercurial или Bazaar. Дополнительно для среды разработки важно уметь работать с базами данных и клиентским слоем вашего стека, обладать поддержкой встроенного JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate, а также API Java Persistence.

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

Рассмотрим два основных претендента на роль IDE для разработки на Java.

IntelliJ IDEA

IntelliJ IDEA с точки зрения возможностей и цены поставляется в двух вариантах: бесплатного Community edition, и платного Ultimate edition с расширенной функциональностью. 

Community edition предназначена для JVM- и Android-разработки. Бесплатная версия поддерживает Java, Kotlin, Groovy и Scala; Android; Maven, Gradle и SBT; работает с системами контроля версий Git, SVN, Mercurial и CVS.

Ultimate edition приспособлена для веб- и enterprise-разработки. Эта версия IDE работает не только с Git, SVN, Mercurial и CVS, но также с Perforce, ClearCase и TFS; в ней вы сможете писать на JavaScript и TypeScript; естественно, есть поддержка Java EE, Spring, GWT, Vaadin, Play, Grails и ряда других фреймворков.

Рисунок 3.1 – Warnings IntelliJ IDEA из статистического анализа Java-кода.

Подсветка синтаксиса и простое автодополнение кода – обычное дело для любых современных Java-редакторов. IDEA пошла дальше, предлагая «умное автодополнение». Этот термин означает, что среда разработки показывает список наиболее релевантных символов, применимых в данном контексте. Список символов зависит не только от контекста как такового, «общепринятого», но от стиля программирования разработчика, от того, насколько часто он использует те или иные операторы.

Код Java часто включает фрагменты из других языков в виде строк. IDEA может вводить код SQL, XPath, HTML, CSS или JavaScript в строковые литералы Java. В этом смысле IDE может проводить рефакторинг кода на нескольких языках. Например, если вы переименуете класс в JPA-отображении, IDEA обновит соответствующий класс сущностей и выражений JPA.

IntelliJ IDEA анализирует код при загрузке и непосредственно при вводе. Она указывает на предполагаемые проблемы (как на нашем рисунке выше) и, по желанию, предлагает список вероятных быстрых правок к обнаруженным проблемам.