Файл: Классификация языков программирования (Основные парадигмы программирования).pdf
Добавлен: 29.03.2023
Просмотров: 403
Скачиваний: 1
СОДЕРЖАНИЕ
1. Классификация языков программирования
1.1 Основные парадигмы программирования
1.2 Объектно-ориентированная парадигма
2. Критерии выбора среды и языка разработки программ
2.1 Выбор первого языка для разработки программ
2.2 Критерии выбора языка и среды разработки для обучения программированию
- Зависимость от операционной системы;
Этот критерий относится к зависимости языка от конкретной платформы операционной системы, которую часто называют переносимостью. Например, любой из языков, поддерживаемых платформой .NET, включая Visual Basic, C++, C# и т.д. зависит от операционной системы Windows. Другие языки, такие как Java, не зависят от платформы, и можно найти среды разработки для Java для различных операционных систем. Это может быть также важнейшим фактором, если есть строгая необходимость не привязываться к конкретной операционной системе.
- Проприетарный или открытый исходный код;
Этот критерий относится к сущности, которая управляет развитием языка и связанной с ним среды разработки. Например, Microsoft несет ответственность за добавления, удаления или изменения на любом из языков, поддерживаемых платформой .NET Framework. На противоположном конце спектра PHP является языком с открытым исходным кодом и может быть легко реализован любым членом сообщества. И Стивенсон [22.], и Райли [23.] включают в свои критерии открытый исходный код.
- Академическое признание;
Академическое признание относится к популярности языка в других учебных заведениях. Это можно оценить по текущему или прогнозируемому использованию в других учреждениях. Например, рост популярности объектно-ориентированного программирования в начале нулевых и решение Совета колледжей о переводе программы Advanced Placement Computer Science на Java привели к тому, что все больше университетов, колледжей и средних школ США приняли Java в качестве языка программирования для своих вводных курсов программирования.
- Признание в отрасли;
Этот критерий относится к проникновению на рынок определенного языка, то есть использованию языка в бизнесе и промышленности. Стивенсон [22.] утверждает, что этот фактор оказывает наибольшее влияние на выбор языка, на что указывают 23,5% школ, которые участвовали в его исследовании. Признание отрасли влияет на другой связанный критерий – конкурентоспособность.
- Ликвидность;
Выбор языка часто определяется спросом на рабочем месте, то есть тем, что хотят работодатели. Мало того, что рыночные навыки важны для будущей возможности трудоустройства, но и студенты с большим энтузиазмом относятся к изучению языка, который, по их мнению, повысит их возможности трудоустройства.
Эмиг [24.] указывает на предостережение, которое необходимо учитывать при оценке приемлемости отрасли и конкурентоспособности. Как правило, между началом учебной программы и достижением должности с использованием навыков программирования проходит от четырех до пяти лет. Даже если учебная программа учит более новому языку программирования, нет никакой гарантии, что работодатели все равно будут выбирать этот язык, когда студент поступит на работу.
- Среда разработки;
Среда разработки является виртуальной рабочей средой программиста и может повысить или снизить производительность. Среды разработки варьируются от простых текстовых редакторов и компиляторов командной строки до полностью интерактивных и интегрированных сред разработки (IDE). Келлинг [25.] отмечает, что среда должна быть простой в использовании, чтобы учащиеся могли сосредоточиться на изучении концепций программирования, а не на самой среде. Эйзенштадт и Льюис [26.] делают еще один шаг вперед, ссылаясь на доказательства того, что хорошо разработанные среды программирования помогают учащимся учиться программировать.
Хотя МакАйвер [11.] указывает, что было мало оценочных исследований сред разработки для обучения программированию, они все же упоминаются в нескольких исследованиях как критерий выбора языка. Ли и Филлипс [18.] утверждают, что оценка различных сред является одной из накладных расходов при оценке языка. Эмиг [24.] перечисляет необходимость среды разработки в качестве одного из своих критериев и отмечает, что по мере того, как языки профессионального уровня становятся все более сложными и комплексными, среды разработки становятся все более пугающими.
- Легкость изучения фундаментальных понятий;
Кривая обучения, связанная с каждым языком или средой разработки, сильно различается в зависимости от языка. Наиболее очевидный пример – это резкое увеличение кривой обучения с Visual Basic 6 до Visual Basic.NET. Основные понятия включают структуры управления последовательностью, выбором и итерацией, а также массивы, процедуры, базовый ввод / вывод и работу с файлами. Келлинг [25] обращает внимание, что язык должен поддерживать чистые, простые и четко определенные концепции; он должен иметь легко читаемый, согласованный синтаксис.
- Сценарный или полнофункциональный язык;
Программисты также должны выбирать между полнофункциональными и менее сложными языками. Причельт [28] называет их обычными языками программирования и языками сценариев. Некоторые преподаватели курсов по программированию предпочитают языки сценариев, такие как Python, потому что они предлагают достаточное разнообразие, чтобы покрыть большинство требований вводного курса, одновременно уменьшая сложность среды разработки и избегая многих других проблем реализации. Уотт [20] утверждает, что JavaScript обладает «достаточным богатством, чтобы охватить большую часть того, что требуется в начальном курсе, и это настоящий язык с непосредственным применением для студента». Далее он отмечает, что JavaScript также использует простую среду редактирования, уменьшает сложность языка и улучшает согласованность. Полнофункциональные языки, однако, предлагают более полный набор языковых функций, которые преподаватель может захотеть включить. Некоторые из этих вопросов могут быть связаны со следующим критерием, выбором между обучением основным понятиям и обучением конкретному языку.
- Поддержка учебного подхода;
Как отмечалось выше, этот критерий относится к оценке того, насколько хорошо язык поддерживает подход преподавания, предпочтительный для факультета. МакАйвер [11.] утверждает, что разногласия по поводу того, должны ли курсы программирования концентрироваться на базовых концепциях программирования в отличие от конкретного языка, являются одной из фундаментальных причин разнообразия курсов и учебников по программированию.
Многие исследования подтверждают приоритет понятий над языком. Томблин [28.] утверждает, что в центре внимания курсов программирования должен быть не столько язык, сколько концепции и хорошие практики программирования, которые необходимо преподавать. Келлинг [25.] отмечает, что целью его курсов по программированию является обучение студентов таким образом, чтобы они понимали основополагающие концепции и, таким образом, могли писать хорошие программы на любом языке. Другие исследования обсуждают использование Java с этой точки зрения. Уотт [20.] утверждает, что, хотя многие функции, предлагаемые Java, необходимы для программ рыночного уровня, они являются непростыми для преподавания концепций программирования. Коллинз [29.] обсуждает пригодность Java для демонстрации и передачи концепций, важных в учебной программе программирования.
Другие программы используют альтернативный подход и акцентируют внимание на обучении отдельных языковых функций. Ли и Филлипс [18.] утверждают, что большинство студентов считают обучение на конкретном языке более полезным, чем обучение программированию. Кроме того, Эмиг [24.] отмечает, что многие университеты реагируют на потребность студентов в обучении техническим аспектам конкретного языка, а не концепциям программирования.
- Средства отладки;
Этот критерий относится прежде всего к среде разработки, но при оценке языка программирования следует оценивать средства отладки, сопровождающие язык, т.е. наличие адекватных средств диагностики. Среды программирования должны содержать обширные инструменты для отслеживания и отладки, а диагностика ошибок должна быть четкой и содержательной.
- Поддержка веб-разработки;
Одним из критериев, который может быть неприменим к конкретной программе обучения, но критичен для других, является уровень поддержки веб-разработки, который обеспечивает выбираемый язык. Он не ограничивается языками сценариев, как обсуждалось в предыдущем разделе, поскольку некоторые языки обеспечивают высокий уровень поддержки веб-разработки, но в то же время считаются полнофункциональными. Ван [30.] отмечает, что будущие профессионалы в области компьютерных наук должны приобрести навыки разработки компьютерных приложений в интернет-среде. К счастью, разработка веб-приложений превратилась в использование высокоуровневых инструментов, которые фокусируются на интеграции различных компонентов. Кроме того, существует множество сред разработки и программ, разработанных для создания полезных веб-страниц.
- Безопасность кода;
Этот критерий можно использовать для оценки двух важных факторов. В первом из них рассматривается, предлагает ли язык такие возможности, как строгая проверка типов и проверка границ массивов, при этом избегая таких функций, как указатели в небезопасном режиме. Келлинг [25.] отмечает, что язык «должен избегать концепций, которые могут привести к ошибочным программам. В частности, он должен иметь безопасную, статически проверяемую (насколько это возможно) систему типов, не иметь явных указателей и не обнаруживаемых неинициализированных переменных». Второй фактор, тесно связанный с первым, – это включение функций безопасности, таких как Java-Sandbox, которая предназначена для ограничения адресов памяти, к которым может обращаться программа на Java. Другой пример, приведенный МакАйвером, указывает на то, что Java-апплеты считаются ненадежными и, следовательно, ограничены в действиях, которые они могут выполнять при выполнении из браузера пользователя. Команда Принстона по безопасному интернет-программированию подробно описывает требования к безопасной системе, включая безопасность типов, модульное программирование и политику безопасности.
- Расширение возможностей для последующих курсов программирования;
Если в компьютерную программу включено несколько курсов по программированию, вопрос о том, предлагает ли язык программирования адекватные расширенные функции для поддержки продвинутого курса программирования, может представлять собой проблему. В то время как некоторые курсы предпочитают обучать нескольким языкам в своей учебной программе, другие предпочитают предоставлять базовые функции языка программирования во вводном курсе и откладывать расширенные функции языка, такие как многопоточность, на последующий курс.
- Наличие поддержки;
Этот критерий относится к наличию вспомогательного персонала, включая сотрудников компьютерных классов и / или сетевых администраторов, для поддержки преподавания и администрирования языка в высших учебных заведениях. Ли и Филлипс [18.] и Келлинг [25.] отмечают наличие обученного персонала среди своих критериев отбора. Необходимо также принимать во внимание доступность поддержки через форумы или рассылки в Интернете, а также поддержку поставщиков программного обеспечения.
- Ожидаемый уровень опыта программирования у начинающих студентов;
Последний критерий не менее важен, поскольку предыдущий опыт и обучение студентов искажают их понимание новых парадигм программирования и языков. Данные, опубликованные Советом колледжей в 2004 году, показывают, что 20% учащихся колледжей США прошли хотя бы один курс по компьютерному программированию в старшей школе. Ли и Филлипс [18.] и Келлинг [25.] обсуждают повышение уровня опыта студентов. Доля студентов, имеющих опыт программирования, значительно увеличилась с течением времени, хотя этого недостаточно, чтобы требовать опыта в качестве предварительного условия для курса.
2.3 Практические аспекты
Несмотря на то что выбор языка очень субъективен, полный список критериев делает возможным процесс объективного выбора. Тем не менее, этот процесс может по-прежнему сильно различаться из-за разницы в культуре, стратегии или даже политике в каждом отдельно взятом учебном учреждении. Следующие шаги обеспечивают системный подход в общем процессе выбора:
- Составление списка критериев;
Критерии, предложенные в данной курсовой работе, могут быть адаптированы к потребностям большинства факультетов или программ обучения.
- Вычисление значимости каждого из критериев;
Необходимо рассчитать, в зависимости от потребностей факультета, значение важности каждого из критериев. Например, это значение может варьироваться от нуля (незначимый показатель) до десяти (крайне важный).
- Определение списка языков-кандидатов;
Список должен включать языки, выбранные преподавателями, а не полный список доступных языков. Наличие подсписков может быть желательным, так что подмножество языков-кандидатов может сравниваться за один раз для того, чтобы сузить выбор, и сравнение нескольких похожих языков также может быть желательным.
- Оценивание языков;
Каждому языку-кандидату должен быть присвоен рейтинг по каждому из критериев. Рейтинг может варьироваться от нуля (чрезвычайно низкий) до десяти (чрезвычайно высокий).
- Расчет взвешенной оценки.
Для каждого языка-кандидата можно рассчитать взвешенную оценку, сложив вместе оценку языка, умноженную на показатель значимости, присвоенный каждому критерию. Язык с наивысшим взвешенным баллом является оптимальным выбором на основе всех оценок. Процесс достаточно механический и может быть легко адаптирован к потребностям отдельных факультетов. Лучше начать процесс отбора с краткого введения в процедуру. Может быть сформирован комитет по выбору языка для оценки и адаптации критериев отбора и определения показателя значимости по каждому критерию для факультета.
ЗАКЛЮЧЕНИЕ
В данной работе была проанализирована существующая литература по выбору языка программирования и соответствующей ему среды разработки для использования в вводном курсе программирования, были рассмотрены основные парадигмы программирования, а также получен всеобъемлющий набор критериев, которые будут использоваться при оценке языка программирования. Наконец, предложен процесс, с помощью которого эти критерии могут использоваться для сравнения языков программирования с целью облегчения выбора языка.