О языках программирования и компиляторах. Что следует знать, чего можно не знать, что знать не нужно |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-09-01 07:34 Выбор языка программирования Язык программирования, на котором будет реализована система, заслуживает большого внимания, так как вы будете погружены в него с начала конструирования программы до самого конца. Исследования показали, что выбор языка программирования несколькими способами влияет на производительность труда программистов и качество создаваемого ими кода. Если язык хорошо знаком программистам, они работают более производительно. Данные, полученные при помощи модели оценки Cocomo II, показывают, что программисты, использующие язык, с которым они работали три года или более, примерно на 30% более продуктивны, чем программисты, обладающие аналогичным опытом, но для которых язык является новым (Boehm et al., 2000). В более раннем исследовании, проведенном в IBM, было обнаружено, что программисты, обладающие богатым опытом использования языка программирования, были более чем втрое производительнее программистов, имеющих минимальный опыт (Walston and Felix, 1977). (Различия результатов двух исследований объясняются тем, что в модели Cocomo II более тщательно изолируется влияние отдельных факторов.) Программмисты, использующие языки высокого уровня, достигают более высокой производительности и создают более качественный код, чем программисты, работающие с языками низкого уровня. Утверждается, что при работе с такими языками, как C++, Java, Smalltalk и Visual Basic, производительность труда программистов, а также надежность, простота и понятность программ в 5–15 раз выше, чем при использовании низкоуровневых языков, таких как ассемблер и C (Brooks, 1987; Jones, 1998; Boehm, 2000). Избавившись от необходимости проводить праздничную церемонию каждый раз, когда оператор языка C делает то, что было задумано, вы сэкономите время. Более того, высокоуровневые языки выразительнее низкоуровневых. Каждая строка кода выполняет больший объем работы. В табл. указано типичное отношение функциональности команд некоторых языков к функциональности операторов языка C. Показатель, превышающий 1, означает, что строка кода на указанном языке выполняет больше работы, чем строка кода на C. C .................................................... 1 C++ ............................................. 2,5 Fortran 95 ..................................... 2 Java ........................................... 2,5 Perl ............................................... 6 Python .......................................... 6 Smalltalk ...................................... 6 Microsoft Visual Basic ..............4,5 Некоторые языки лучше выражают концепции программирования, чем другие. Здесь уместно провести параллель между естественными языками — скажем, английским — и языками программирования, такими как Java и C++. Изучая естественные языки, лингвисты Сапир и Уорф (Sapir and Whorf) высказали предположение, что способность к размышлению над определенными идеями связана с выразительной силой языка. Согласно гипотезе Сапира-Уорфа способность человека к обдумыванию определенных мыслей зависит от знания слов, при помощи которых можно выразить эту мысль. Если вы не знаете слов, то не сможете выразить мысль и, возможно, даже сформулировать ее (Whorf, 1956). Программисты испытывают аналогичное влияние языков программирования. «Слова», которые язык предоставляет программисту для выражения мыслей, несомненно, влияют на способ их выражения, а возможно, даже определяют, какие мысли можно выразить на данном языке. За доказательствами влияния, оказываемого языками программирования на мышление программистов, далеко ходить не надо. Типичная история такова: «Мы писали новую систему на C++, но большинство наших программистов не имели особого опыта работы на C++. Раньше они использовали Fortran. Они писали код, который компилировался на C++, но на самом деле это был замаскированный Fortran. В итоге они заставили C++ эмулировать недостатки языка Fortran (такие как операторы goto и глобальные данные) и проигнорировали богатый набор объектно-ориентированных возможностей C++». Данный феномен наблюдается в отрасли уже много лет (Hanson, 1984; Yourdon, 1986a). Описания языков История разработки некоторых языков и их общие возможности довольно интересны. Ниже приведены описания языков, наиболее популярных в настоящее время. Ada Высокоуровневый язык общего назначения, основанный на языке Pascal. Разработанный под патронажем Минобороны США, он особенно хорошо подходит для создания встроенных систем и систем, работающих в реальном времени. В языке Ada особое внимание уделяется абстракции данных и сокрытию информации, а также проводится различие между открытыми и закрытыми частями каждого класса и пакета. Название «Ada» было присвоено языку в честь Ады Лавлейс (Ada Lovelace) — женщины, которую считают первым программистом в мире. Сегодня язык Ada используется преимущественно для разработки военных, космических и авиационных систем. Ассемблер Низкоуровневый язык, каждая команда которого соответствует одной команде компьютера. Вследствие этого ассемблер специфичен для отдельных процессоров — например, для конкретных процессоров Intel или Motorola. Ассемблер считается языком второго поколения. Большинство программистов избегают его и используют, только если к быстродействию или компактности кода программы предъявляются повышенные требования. C Среднеуровневый язык общего назначения, первоначально тесно связанный с ОС UNIX. Некоторые свойства (структурированные данные, структурированная управляющая логика, машинная независимость и богатый набор операторов) делают его похожим на высокоуровневый язык. Язык C также называют «портируемым языком ассемблера», поскольку он не строго типизирован, поощряет применение указателей и адресов и поддерживает некоторые низкоуровневые возможности, такие как побитовые операции. Язык C, разработанный в 1970-х компанией Bell Labs, предназаначался для систем DEC PDP-11. На C были написаны ОС, компилятор C и приложения UNIX для систем DEC PDP-11. В 1988 г. для систематизации C был издан стандарт ANSI, который в 1999 г. был пересмотрен. В 1980-х и 1990-х гг. язык C был стандартом «де-факто» в области разработки программ для микрокомпьютеров и рабочих станций. C++ Этот объектно-ориентированный язык был разработан на базе C в компании Bell Labs в 1980-х. Совместимый с языком C, он поддерживает классы, полиморфизм, обработку исключений, шаблоны и обеспечивает более надежную проверку типов, чем C. Кроме того, он предоставляет разработчикам богатую и эффективную стандартную библиотеку. C# Эта комбинация объектно-ориентированного языка общего назначения и среды программирования разработана в Microsoft. C# имеет синтаксис, похожий на синтаксис C, C++ и Java, и включает богатый инструментарий, помогающий разрабатывать приложения на платформах Microsoft. Cobol Напоминает английский язык и был разработан в 1959–1961 гг. для нужд Минобороны США. Cobol служит преимущественно для разработки бизнес-приложений и до сих пор является одним из самых популярных языков, уступая лишь Visual Basic (Feiman and Driver, 2002). По мере развития языка в нем была реализована поддержка дополнительных математических функций и ряда объектно-ориентированных возможностей. Аббревиатура «Cobol» расшифровывается как «COmmon Business-Oriented Language» (универсальный язык, ориентированный на коммерческие задачи). Fortran В этом первом высокоуровневом языке программирования были представлены концепции переменных и высокоуровневых циклов. Название расшифровывается как «FORmula TRANslation» (транслятор формул). Разработанный в 1950-х, Fortran претерпел несколько значительных ревизий: так, в 1977 г. была разработана версия Fortran 77, в которой была реализована поддержка блочных операторов if-then-else и манипуляций над символьными строками. В Fortran 90 были включены средства работы с пользовательскими типами данных, указателями, классами, а также богатый набор функций для работы с массивами. Fortran применяется преимущественно для разработки научных и инженерных приложений. Java Синтаксис этого объектно-ориентированного языка, разработанного Sun Microsystems, Inc., напоминает C и C++. Java — платформенно-независимый язык: исходный код Java сначала преобразуется в байт-код, который может выполняться на любой платформе в среде, известной как «виртуальная машина». Java широко используется для создания Web-приложений. JavaScript Этот интерпретируемый язык сценариев мало чем связан с Java. Чаще всего его используют для создания кода, выполняющегося на клиентской стороне, например, для разработки несложных функций и интерактивных приложений для Web-страниц. Perl Этот язык обработки строк основан на C и нескольких утилитах ОС UNIX. Perl часто используется для решения задач системного администрирования, таких как создание сценариев сборки программ, а также для генерации и обработки отчетов. Кроме того, на нем создают Web-приложения, такие как Slashdot. Аббревиатура «Perl» расшифровывается как «Practical Extraction and Report Language» (практический язык извлечений и отчетов). PHP Этот язык с открытым исходным кодом предназначен для разработки сценариев и имеет простой синтаксис, похожий на синтаксис языков Perl, JavaScript, C и оболочки Bourne Shell. PHP поддерживается всеми основными ОС и служит для создания интерактивных функций, выполняющихся на стороне сервера. PHP-код может быть встроен в Web-страницы для получения доступа к БД и отображения содержащейся в ней информации. Аббревиатура «PHP» первоначально расшифровывалась как «Personal Home Page», но теперь означает «PHP: Hypertext Processor». Python Этот интерпретируемый интерактивный объектно-ориентированный язык поддерживает множество сред. Чаще всего его используют для написания сценариев и небольших Web-приложений, однако он поддерживает и некоторые средства, помогающие создавать более крупные программы. SQL SQL (Structured Query Language, язык структурированных запросов) «де-факто» является стандартным языком выполнения запросов, обновлений реляционнных БД и управления ими. В отличие от других языков, описанных в этом разделе, SQL является «декларативным языком», т. е. определяет не последовательность, а результат выполнения некоторых операций. Visual Basic Basic (Beginner’s Allpurpose Symbolic Instruction Code, универсальная система символического кодирования для начинающих) — это высокоуровневый язык, первая версия которого была разработана в Дартмутском колледже в 1960-х. Visual Basic — это высокоуровневая объектно-ориентированная версия Basic, предназначенная для визуального программирования. Изначально Visual Basic был разработан в Microsoft для создания приложений Microsoft Windows. Позднее в нем была реализована поддержка настройки Microsoft Office и других приложений для настольных ПК, создания Web-приложений и других программ. По оценкам экспертов в самом начале первого десятилетия XXI века Visual Basic являлся самым популярным языком среди профессиональных разработчиков (Feiman and Driver, 2002). Комментарии: |
|