Файл: Классификация языков программирования (Основные парадигмы программирования).pdf
Добавлен: 29.03.2023
Просмотров: 408
Скачиваний: 1
СОДЕРЖАНИЕ
1. Классификация языков программирования
1.1 Основные парадигмы программирования
1.2 Объектно-ориентированная парадигма
2. Критерии выбора среды и языка разработки программ
2.1 Выбор первого языка для разработки программ
2.2 Критерии выбора языка и среды разработки для обучения программированию
2. Критерии выбора среды и языка разработки программ
2.1 Выбор первого языка для разработки программ
Язык программирования, используемый при обучении вводному курсу программирования, может оказать большое влияние на то, как преподается курс, а также на его эффективность. Выбор языка долгое время был сложным и неструктурированным процессом. Последние проблемы в мире разработки программного обеспечения являются такими же стратегическими, политическими и спорными, как и выбор языка программирования [10.]. На протяжении многих лет различные языки рассматривались в качестве претендентов на основные языки программирования в вузовских программах обучения компьютерным наукам. Выбор языка программирования в таких программах, как правило, определяется серией совещаний преподавателей, посвященных неформальной оценке языка, дебатам и возможному консенсусу. Учитывая разнообразие доступных языков программирования высокого уровня, выбор «правильного» языка для учебной программы или курса, ориентированных на вычислительную технику, может вызывать недоумение. По мере роста числа преподавателей, студентов и языковых возможностей выбор языка становится все более сложным. Кроме того, процесс выбора в настоящее время не имеет структуры и поэтому не может быть легко воспроизведен. Поскольку процесс выбора часто повторяется каждые два-три года, разработка и документирование набора критериев отбора, а также процесс применения этих критериев приведут к процессу, который будет легче повторяться в будущем. Структурированный подход к выбору языка программирования позволит более тщательно оценить доступные варианты и сделать выбор более простым.
При выборе языка программирования необходимо учитывать несколько факторов, и, поскольку в различных учебных программах акценты делаются на разные факторы, необходимо учитывать их все. В этой ситуации особенно важно разработать всеобъемлющий набор критериев отбора и процесс применения этих критериев для оценки языков программирования, которые будут использоваться при обучении. Критерии отбора должны учитывать особенности программирования каждого рассматриваемого языка, пригодность каждой из этих особенностей для начальных (и, возможно, продвинутых) курсов программирования, настоящее и будущее признание каждого языка рынком, наличие и качество учебных пособий и онлайн-курсов, а также затраты, связанные с возможным принятием каждого языка.
МакАйвер [11.] указывает, что, несмотря на существование большого количества рекомендаций для выбора первого языка программирования, существует недостаток в оценочных исследованиях языков или сред разработки для целесообразности их использования в вводных курсах. Кроме того, не хватает эмпирических тестов, сравнивающих разные языки. Уилсон [12.] соглашается с тем, что, хотя споры об относительных достоинствах различных языков программирования довольно распространены, было проведено сравнительно мало экспериментальных сравнений удобства использования различных языков программирования.
Уилсон в своей работе смог найти только одно такое исследование – эксперимент Шафрона и Шеффера [13.] для измерения применимости систем параллельного программирования. В другом исследовании, проведенном Муртагом и Гамильтоном [14.], было проведено однозначное сравнение влияния двух языков на успех учащихся во вводном курсе программирования, но для их подхода требуется инструктор, хорошо владеющий обоими языками, и он фактически не распространяется на более чем два языка одновременно. Различные аргументы были сделаны для использования определенного языка или конкретной парадигмы при обучении программированию. Тем не менее, МакАйвер также указывает, что, хотя неподтвержденные данные из вводных курсов по программированию широко доступны, а отдельные языковые особенности были изучены с когнитивной точки зрения, определение того, какой язык следует использовать для обучения программированию, остается спорным вопросом.
Одним из объяснений недостатка исследований является то, что различия между программистами делают любое исследование бессмысленным. Другое заключается в том, что различия между предметными областями слишком велики для проведения значимого исследования. Уилсон [12.] не согласен с предпосылкой, что такие исследования невозможны, но в то же время он не предлагает никаких решений. Сравнение языков является сложной задачей, особенно когда языки не имеют одинаковую парадигму [11.]. Установить надлежащие критерии для сравнения сложно не только потому, что существует вопрос о том, что измерять, но и потому, что критерии могут отдавать предпочтение одному языку над другим. МакАйвер [11.] указывает, что в образовательных учреждениях требования различных курсов и учебных программ делают проблематичным, если не невозможным, сравнение разных языков. Кроме того, разные курсы обычно имеют достаточно разные цели, что делает языковые сравнения практически бессмысленными.
Как отмечалось ранее, многие факторы должны быть рассмотрены до начала процесса выбора языка. Хотя эти факторы в конечном итоге могут быть включены в критерии оценки, они также могут быть использованы для сужения области выбора. Например, отбор почти наверняка будет зависеть от методики или парадигмы, которую преподают, и количества языков, которые будут использоваться в плане изучения программирования.
Выбор парадигмы программирования, которая определяет, что следует учить, должен предшествовать выбору первого языка, который влияет на то, как его учить. Парадигма определяет рамки изучения конкретного языка. Боуман [15.] утверждает, что при рассмотрении вводных курсов по программированию главное внимание должно уделяться не языкам, а выбору теории или методологии программирования для преподавания. Вольц [16.] утверждает, что «фокус на языке вводит в заблуждение, потому что он делает акцент на механике выражения ключевых идей, а не на самих ключевых идеях». Дополнительные соображения включают в себя то, следует ли изучать языковые конструкции отдельно от проекта программы или одновременно с ним, как определить надлежащий баланс между программированием в целом и программированием в деталях, и следует ли изучать один язык на протяжении всего курса программирования, либо изучать несколько языков.
Независимо от парадигмы, необходимо сделать выбор между языками профессионального уровня и учебными. Профессиональный язык используется в индустрии и преподается полностью (за исключением очень продвинутых функций) через коммерчески доступную среду. Профессиональный язык, такой как Java или C++, предоставляет студентам опыт работы в реальной среде. Учебный язык – это язык, разработанный специально для учебных целей. Учебные языки, такие как Haskell и Eiffel, отделяют обучение программированию от изучения деталей конкретного языка, сводя к минимуму технические проблемы, которые могут отвлекать от процесса обучения. Как только студенты изучат основы, они смогут применить свои знания программирования на любом языке [17.].
Некоторые преподаватели наивно полагают, что смена языка программирования обойдется для них легко, и что это не приведет к серьезным последствиям, если первоначальное решение окажется неудачным. Ли и Филлипс [18.] отмечают, однако, что значительные затраты возникают при освоении определенного языка, включая подготовку лекционных материалов, разработку проектов и упражнений для учащихся, изучение среды разработки и установку выбранного языка, а также обучение персонала. Такие накладные расходы указывают на то, что при выборе языка следует соблюдать осторожность, поскольку этот выбор может влиять на преподавателя в течение нескольких лет.
2.2 Критерии выбора языка и среды разработки для обучения программированию
Ниже перечислены основные критерии выбора языка программирования и интегрированной среды разработки. Вот они:
- Разумная финансовая стоимость;
Этот критерий относится к цене за приобретение языка программирования или среды разработки. Для экономии расходов может помочь академическая скидка для образовательных учреждений, кроме того, загружаемое программное обеспечение может быть бесплатным. Стоимость часто включается в накладные расходы, связанные с принятием определенного языка в качестве основного языка разработки программ. Лоулис [19.] перечисляет различные виды затрат, которые могут быть связаны с выбором продуктов для разработки, включая цену покупки, затраты на обучение, затраты на установку, стоимость дополнительного оборудования и стоимость необходимых дополнительных сотрудников. Ли и Филлипс [18.] расширяют определение затрат, чтобы включить все накладные расходы со стороны учебных заведений, связанные с принятием определенного языка, включая подготовку лекционных материалов, разработку проектов и заданий для студентов, установку и изучение среды разработки, запрос учебников и обучение персонала.
- Наличие студенческой / академической версии;
Хотя наличие студенческой или академической версии не упоминается во многих исследованиях, оно всегда является проблемой при выборе языка программирования. Если версия для студента недоступна, и учебное заведение использует доступную только ему версию, то студенты могут быть вынуждены выполнять свои задания в компьютерных аудиториях, ограниченных часами работы, доступностью транспорта и т.д. Если академическая версия урезана, тогда польза для студентов может быть не такой большой, но этот фактор следует хотя бы оценить.
- Наличие учебных пособий;
На доступность учебников может повлиять множество дополнительных факторов. Стадия жизненного цикла языка влияет на доступность учебников, особенно когда язык относительно новый. Когда Visual Basic.NET был впервые выпущен, существовало малое количество качественных учебников, но по мере развития языка было опубликовано больше. Академическое признание языка также играет большую роль в доступности учебников, потому что существует больший потенциальный рынок для издаваемого текста, который имеет дело с более широко используемым языком. Наконец, доступность учебника может также зависеть от используемого подхода к обучению. Необходимо также учитывать наличие справочников. Ватт [20.] включает доступность учебников в качестве одной из проблем, требующих рассмотрения, в то время как МакАйвер [11.] включает оценку качества учебников в качестве одного из обычных соображений при оценке потенциальных языков. Легко найти подходящий текст – это один из критериев выбора языка.
- Стадия в жизненном цикле;
Как отмечалось выше, также следует учитывать стадию языка программирования в жизненном цикле языка программирования (не путать с жизненным циклом разработки программы). Помимо влияния на доступность учебников, это также может повлиять на широкое использование языка как в индустрии, так и в научных кругах. Университеты могут предпочесть язык, который все еще находится на ранних стадиях развития, а не устаревший язык, такой как COBOL или FORTRAN, которые находятся в упадке. Жизненный цикл языка программирования, описанный Шарпом [21.], основан на естественных принципах роста, созревания и распада. Процессы естественного преимущества и эволюции действуют в мире языков программирования так же, как они действуют в биологической области. Новые языки конкурируют со старыми языками. Если язык является универсальным, функциональным, выразительным и представленным на рынке, он, скорее всего, будет принят в качестве приоритетного. После принятия рынок приложений стимулирует эволюцию языка. Жизненный цикл языка программирования начинается с этапа концепции, когда язык задуман так, чтобы восполнить недостатки, не встречающиеся в существующих языках. Затем следует фаза принятия, поскольку программисты понимают, что язык повысит их эффективность. Поскольку язык стабилизируется и обнаруживает меньше дефектов, появляется общее признание. Стадия полного развития характеризуется большей потребностью в функциональности, чем в эффективности, что приводит к стадии неэффективности, характеризующейся расширенной функциональностью, а также рынком, фрагментированным несопоставимым внедрением стандартов поставщиком. Закат продолжается на стадии возражения, когда разработка становится более дорогостоящей, а неэффективность ведет к рассмотрению альтернатив. Наконец, на стадии затухания на сцене появляются новые языки, в которых отсутствуют некоторые функции, но они работают быстрее и эффективнее и вытесняют своих предшественников.
- Системные требования;
Системные требования часто играют роль в процессе выбора языка программирования. Они включают в себя требования к оборудованию и операционной системе. Количество места на жестком диске, необходимое для установки программного обеспечения, требуемая операционная система и память для запуска программного обеспечения – все это влияет на принятие решения. Например, некоторые требования платформы .NET включают Windows NT 4.0 или более позднюю версию, процессор Pentium II 450 МГц (минимум), 3,5 ГБ свободного дискового пространства и минимум 160 МБ ОЗУ для Windows XP Professional.