15.11.2016

Python як Перша Мова

Original: http://mcsp.wartburg.edu/zelle/python/python-first.html

Джон М. Зелль
Факультет математики, інформатики та фізики
Коледж у Вартбурзі
Уейверлі, Айова 50677
zelle@wartburg.edu

Короткий огляд

Зараз немає єдиної думки про те, яка мова програмування є найбільш підходящою для вступних класів з інформатики. Більшість шкіл використовують традиційні мови системного програмування, такі як C, C++, Java або Ada у CS1 і CS2. Однак мови сценаріїв на кшталт Tcl, Perl і Python стають надзвичайно популярними знаряддями розробки програмного забезпечення. У даній статті розглядаються переваги використання мови сценаріїв в якості першої мови в навчальну програму з інформатики. Мови сценаріїв простіше, безпечніше і більш гнучким, ніж мови системи. Особливо Python виступає майже ідеальним кандидатом на роль першої мови програмування.

1 Вступ

Нещодавно, ще п’ять років тому, практично всі погодилися б з тим, що Pascal був правильним вибором мови для ілюстрації понять в інформатиці. Багатообіцяючий комп’ютерні вчені почали з вивчення програмування на мові Pascal, і студенти верхнього рівня використовуються підручники, засновані на Pascal. Потім прийшла об’єктно-орієнтована революція. Сьогодні біля єдиного консенсусу щодо мов в навчальну програму з інформатики є те, що Pascal блякне. Відхід від Pascal був оголошений в останні кілька років, але жодна мова не з’явилася як ясний наступник. Одне нещодавнє опитування акредитованих програм CSAB показало, що найпопулярніша перша мова C++ викладається лише у 22% навчальних закладів, де проводилося опитування (Макколі та Манаріс, 1998 р.). Плутанини додає розвиток Java у промисловості та наукових колах.

Дехто передбачив, що “війни за мову”скінчилися та єдиними раціональними варіантами вибору є такі: C, C++, Java, Ada (і, можливо, Eiffel).([виноска] Це, здавалося б, консенсус дискусії “Можливі варіанти майбутнього для CS2” у SIGCSE ’98.) Я вважаю, оголосивши війни за це визнати поразку занадто рано. Час, коли немає єдиної думки на одній мові, здається, перший вдалий час, щоб повернутися до початкових принципів і розглянути те, що перша мова має бути. По дорозі, ми можемо виявити, що деякі з кращих кандидатів навіть не розглядалося.

У цій статті я доводжу, що скриптові мови дуже високого рівня, такі як Python, Perl, Tcl, Rexx і Visual Basic, є кращими кандидатами на роль першої мови. Особливо Python здається майже ідеальним.

2 Критерії для першої мови

2.1 Припущення щодо CS1 і CS2

Розуміючи, що існують значні розбіжності про те, який матеріал слід викладати в CS1 і CS2, будь-якої розумної дискусії на які мови є найбільш підходящими повинні починатися з базових припущень про самих курсах. Наступні припущення відображають досить загальний підхід, але я розумію, що вони не зовсім безперечний.

По-перше, послідовність CS1/CS2 фундаментально стосується комп’ютерного програмування. У той час як ці курси, безумовно, рішення більш широких питань теорії науки і комп’ютерної практики, ядро інформатики і цих перших класів без змін рішення проблем, дизайн, і програмування. Навчання програмі дуже практичний діяльності, і ці класи включають дизайн і програмування проектів різних розмірів в будь-якому розімкнутої або закриті лабораторних установок.

По-друге, мова програмування сам по собі не є головною темою цих класів. У той час як наші студенти часто звертаються до цих класів як “клас C++” або “клас Java”, курси розроблені, щоб забезпечити введення в галузі інформатики. Мова використовується насправді питання другорядне. Тенденція думати про CS1 як про вступ до певної мови – це симптом складності часто використовуваних мов.

По-третє, ці класи познайомити студентів з первинними парадигм для проектування і рішення проблем у використанні сьогодні, а саме структуровані і об’єктно-орієнтовані методи, реалізовані в імперативі (орієнтованої на заяву мови). У той час як є сильні захисники інших підходів (наприклад, з використанням функціональної мови в першому класі), переважна більшість вступних класів, як правило, йдуть більш традиційним шляхом.

По-четверте, і, можливо, найбільш спірне, я вважаю, що метою CS1 є залучення і навчання інформатиці майорів і, можливо, набрання нових. З огляду на нинішній попит на наших випускників і необхідність всіх освічених людей, щоб зрозуміти, інформаційні технології, вона є одним з основних погану послугу, щоб розглянути CS1 як “викорінений” клас. Програмування важке, але ми повинні прагнути зробити його не складнішим, ніж потрібно.

2.2 Наслідки вибору мови програмування

Якщо вступні класи дійсно про комп’ютерної науки, а не деталі конкретної мови, то це означає, що обраний мова повинна мати простий синтаксис і семантику. Ми всі відчули розчарування курсу CS1, що грузне в обговоренні синтаксичних помилок і мовних конструкцій. Наскільки це можливо, ми повинні вибрати мову, який зводить до мінімуму ці складності з тим, що більше часу можна витратити на розвиток навичок проектування. Наслідком цієї філософії є те, що прості проблеми повинні бути вирішені просто. Мова, який вимагає значних накладних витрат нотаціонного вирішувати навіть тривіальні проблеми змушує мову, а не методи вирішення проблем, щоб стати об’єктом дослідження.

Практичний, експериментальний характер вступних курсів також має значення для вибору мови. Мова, який дозволяє конструкції бути виражені з мінімальними витратами і заохочує експерименти перезапис. Таким чином, мова повинна бути дуже високого рівня і гнучкою, що дозволяє студентам швидко і легко експериментувати з альтернативними конструкціями. Це полегшує думати про алгоритму і проектних питань, а не деталі реалізації низького рівня. Наскільки це можливо, мова повинна також забезпечити безпеку для експериментів. Ми повинні сприяти мови, які охороняють від загадкових аварій з покажчика або масиву за межі поля помилок. Студенти на цьому рівні просто дізнатися методи для відстеження та виправлення помилок; мова повинна допомогти їм вчитися, а не зривати їх.

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

І, нарешті, існують практичні міркування при виборі мови. Було б дуже бажано, щоб мова широко доступні на різних платформах. Точно так же, мова, яка використовується практиками за межами наукового співтовариства є кращим мовою, який для “лише навчання” за умови, що відповідає іншим критеріям, які обговорювалися вище. Навчання мови X просто тому, що це широко використовуваний мова не повинна бути важливим фактором саме по собі. Наші студенти будуть вивчати і використовувати багато мов під час своєї кар’єри. Що важливо на перших курсах дає їм найкращу основу основних принципів і методів, які дозволять їм приймати і адаптуватися до різних мов вони будуть стикатися в “реальному світі”.

3 Перевага Python

3.1 Випадок для мов скриптування

Остераут (1998) окреслює різницю між системними мовами програмування (наприклад, C, C++, Pascal, Ada, Java) та мовами скриптування (на зразок Perl, Tcl, Python, Rexx, Visual Basic). Перші статично типізованих, як правило, складені, і являють собою скромні відволікання від базової машини. Останні динамічно типізованих, як правило, інтерпретуються, і дуже високого рівня. Мови сценаріїв, як правило, описуються як “мови-клей” для підключення незалежних компонентів в великомасштабних додатків або як дослідні зразки інструментів для швидкої розробки додатків. Однак, як зазначає Остераут (1998, 23):

кілька останніх тенденцій, таких як більш швидкі машини, кращі мови сценаріїв, зростаюче значення графічних користувальницьких інтерфейсів і компонентних архітектур, а також зростанням Інтернету, значно збільшили застосовність мов сценаріїв. Ці тенденції будуть продовжуватися в протягом наступного десятиліття все більше і більше нових додатків, написаних повністю на мовах сценаріїв і мов програмування систем, використовуваних в основному для створення компонентів.

Традиційно, комп’ютерні програми в галузі науки підкреслювали мови системного програмування над мовами сценаріїв. Однак, мови сценаріїв, здавалося б запропонувати ряд переваг, зокрема, для вступної послідовності програмування. Мови сценаріїв як правило, мають більш простий синтаксис і семантику, ніж мови системи. Через динамічної типізації та інтерпретації вони є дуже гнучкими і заохочувати експериментування. Природа дуже високого рівня дозволяє студентам створювати більш складні і цікаві проекти з меншими зусиллями реалізації.

Можливо, відсутність інтересу до скриптових мов була пов’язана з тим, що вони сприймалися як “іграшкові” мови і не підходили для програмування загального призначення. Хоча це може бути правдою ранніх мов сценаріїв (наприклад, скриптів оболонки Unix), це, звичайно, не відповідає дійсності сучасних варіантів.

3.2 Трішки про Python

З різних популярних мов сценаріїв, Python, ймовірно, найбільш близька за формою до традиційних мов системи (Леірд і Сораіз, 1998b). Крім того, можливо, має краще сузір’я можливостей, щоб рекомендувати його в якості першої мови програмування. Це не мета цієї статті, щоб дати підручник Python; кілька хороших посилання доступні для цієї мети (Лутц, 1996; Уоттерс, Ван Россум та Альстром, 1996). ([виноска] Хост хороших ресурсів Python можна знайти в Інтернеті за адресою http://www.python.org.). Замість цього я зупинюся на особливостях Python, які роблять його особливо гарним вибором серед мов сценаріїв в якості першої мови комп’ютерного програмування. В ході обговорення я буду порівнювати Python із C++, у даний час найбільш поширеною першою мовою, і Java, мовою, найбільш часто згадуваною як “у розгляді”(Макколі та Манаріс, 1998).

3.2.1 Python – проста мова

Загалом, мови сценаріїв набагато простіші, ніж мови системи, такі як C++ і Java (Леірд і Сораіз, 1998b). Python має простий звичайний синтакс. Заяви закінчуються в кінці рядка, і блокова структура позначається відступу. програми на Python виглядають як виконуваний псевдо-коду. Це усуває безліч неприємних помилок для початківців програмістів, особливо розміщення крапки з комою, брекетінг і відступів. Наприклад, поширена помилка в C++ і Java – нездатність узяти блок у фігурні дужки:

if (x < 0)
   cout << "x was negative";
   x = -x;

У мові Python відповідний код працює належним чином, оскільки сам відступ визначає блок:

if x < 0:
    print "x was negative"
    x = -x

Python підтримує використання функцій і класів, але не змусити його. Прості програми насправді просто. Наприклад, розглянемо всюдисущу програму “Hello World” у Python:

print "Hello World!"

C++ вимагає, щоб ця програма бути загорнуті в функції і передувала директива препроцесора:

#include <iostream.h> 
int main()
{  
   cout << "Hello World!"; 
}

У Java ситуація навіть гірша, бо весь код має бути всередині класу:

public class helloWorld
{  
   public static void main(String [] args)
   { 
     System.out.println("Hello World!");
   }
}

Семантично Python також простий. Python динамічно набирається, тому немає ніякої необхідності в оголошенні змінних. Це зменшує обсяг коду, що студенти повинні писати, а також усуває загальні помилки, що випливають з неправильного розуміння тонкі відмінності оголошення, визначення і використання. Наприклад, студенти C++ і Java часто “випадково” переоб’явіть змінні, де вони дійсно тільки хочуть їх використовувати (друкуючи int count = 0; коли мається на увазі count = 0). Такі помилки буває тяжко відстежити.

Python має мінімальний, але повний набір простих керуючих структур: одна конструкція вибору (if-elif-else), один визначений цикл (for) і один невизначений цикл (while). Python також має сучасний механізм обробки виключень, аналогічний знайденому в C++ і Java. На відміну від Java, проте, ви не повинні розуміти механізм винятків для написання простих програм. З педагогічної точки зору for loop мови Python діє показово. Це дозволяє керуючоїзмінної взяти на послідовних значень в послідовності. Він може бути використаний для виконання ітерації будь-якій послідовності, такий як список (масив) або рядка. Наприклад, елементи в списку можуть бути надруковані в такий спосіб:

for item in List:
    print item 

Дія range створює послідовність чисел у заданому діапазоні. Так, range(5) створює список [0,1,2,3,4]. Це може бути використано для забезпечення чисельно контрольованих циклів. Попередній код міг бути написаний (менш ясно), як:

for i in range(len(List)):
    print List[i]

Цикл for простий і безпечний, що дозволяє йому бути введена дуже рано без страху нескінченних циклів.

Python має просту єдину модель даних. Змінні завжди посилання на купі виділено значень (об’єктів). Модель узгоджується, уникаючи плутанини в купі проти автоматичних змінних в C++ або примітивним в порівнянні з типами об’єктів в Java. Обидва цих мов вимагає викладання декількох моделей розподілу для реалізації навіть щодо простих програм.

Аналогічно, Python має тільки один параметр, механізм передачі (у вартісному вираженні). Передача параметрів просто присвоєння фактичної формальним параметрам під час виклику. Після того, як студенти розуміють просту модель присвоювання, вони отримують передачу параметрів безкоштовно.

3.2.2 Python – безпечна мова

Python забезпечує повний динамічний під час виконання перевірки типів і перевірки кордонів на індексах масиву. Python використовує збірку сміття, тому немає ніяких проблем з обірваними покажчиків і витоків пам’яті. Це неможливо для призначеного для користувача коду в Python, щоб зробити порушення сегментації. В цьому відношенні Python схожий на Java, і обидва вони набагато безпечніше, ніж C++.

3.2.3 Python підтримує об’єктно-орієнтоване програмування

Хоча не треба використовувати класи для написання програм на Python, Python підтримує об’єктно-орієнтоване програмування за допомогою механізму класу подібного, забезпечується C++ і Java. Клас модель Python є спрощення моделі C++ і підтримує множинне успадкування. Оскільки Python є динамічно типізованих, немає необхідності для абстрактних класів а-ля C++ або механізм інтерфейсу Java. В цьому відношенні, Python, насправді ближче до об’єктної моделі чистої наданої Smalltalk.

Одним з недоліків Python з точки зору розвитку системи є те, що герметизація забезпечується тільки через конвенції. Там немає механізму для вказівки, що члени класу є приватними. Педагогічно, це не здається, що основним недоліком, так як це ще можна вчити принципам даних приховування; вона просто не виконуються мовою. Мова забезпечує елегантний механізм, але тримає його просто, уникаючи складності різних “режимів видимості”, які повинні бути обговорені в C++ або Java.

Модель динамічного друку Python робить його особливо зручним для обговорення класів контейнерів в курсі структури даних. Клас стек, наприклад, може бути використаний для зберігання об’єктів будь-якого типу. Це може бути стек INT, стек з плаваючою точкою, стек рядок, або суміш типів. Це досягається без необхідності вводити дженерики (шаблони) або виконання динамічного приведення типів. На рисунку 1 показано приклад визначення простого обмеженого класу стека.


class Stack:   
   def __init__(self,size):
       self.data = [None]*size
       self.size = 0

   def push(self,item):
      self.data[self.size] = item
      self.size = self.size + 1    

   def pop(self):
      self.size = self.size - 1
      return self.data[self.size]    

   def is_empty(self):
      return self.size == 0

   def is_full(self):     
      return self.size == len(self.data)

Рисунок 1: bstack.pyпростий обмежений стек.


Python також забезпечує чисту модульну систему, яка динамічно завантажує файли під час виконання подібної Java (мінус громіздких обмежень пакета організації). Це дозволяє легко управляти модульних проектів (Леірд і Сораіз, 1998a) без необхідності файли заголовків і директиви препроцесора С++. Реалізація стека може бути використана за допомогою оператора імпорту:

from bstack import Stack

myStack = Stack(100)
myStack.push("Hello")

Інша реалізація може бути замінена простою зміною імені модуля в операторі імпорту.

3.2.4 Python – це весело

Простота Python дозволяє легко дізнатися. На додаток до структури даних списку (динамічний масив), Python надає кортежі (незмінні списки) і словники (хеш-таблиці). Разом з механізмом класу, вони можуть бути використані для швидкого створення складних структур даних для цікавих проектів. Відсутність заяв типу робить менше коду і більш гнучкого програмування. Існує також величезна бібліотека стандартних і додаткових модулів, які забезпечують компоненти для ДПІ програмування, клієнт-серверних додатків, HTML, бази даних глядачів, анімації та багато іншого. Зростання популярності мов сценаріїв безпосередньо пов’язана з тією легкістю, з якою складні додатки можуть бути побудовані шляхом об’єднання позашляхових готові компоненти. Цікаві проекти можуть бути розроблені з тільки частина коду, які потрібні були б на мові системи. Якщо ми серйозно ставимося до розробки привабливих вступних курсів, Python, як видається, є природним вибором.

3.2.5 Python – це практично

Загалом мови скриптування набувають популярності ([виноска] Див., наприклад, лютневий випуск 1998 р. журналу д-ра Доббса (Dr. Dobbs Journal), спеціальний випуск, присвячений мовам скриптування.) За деякими даними, більше програмне забезпечення написано на мовах сценаріїв, ніж в більш традиційних мовах системи. Хоча Python є кілька більш неясними, ніж його побратими (Perl, Tcl, Visual Basic), це зріла мова, яка широко застосовується в промисловості (Леірд і Сораіз, 1998a). Python доступна для всіх провідних платформ (Windows, MacOS, Linux, Unix, BeOS, Java). І ця мова зовсім безкоштовна.

4 Певні перешкоди (справжні та вигадані)

З огляду на переваги використання мови сценаріїв, як Python для вступних класів інформатики, затяжний питання, чому не всі (хто) це робити? Мови сценаріїв часто відкидаються без належного розгляду. У цьому розділі ми обговоримо деякі з типових заперечень.

4.1 Відсутність перевірки часу компіляції

Деякі викладачі заперечують проти динамічних мов, тому що їм не вистачає часу компіляції перевірки, зокрема перевірки типів. Раніше я думав, що сильна статична типізація має важливе значення для першої мови. Моя теорія в тому, що компілятор повинен зловити як багато помилок, як це можливо для студентів. Ми всі знаємо, мудрість розробки програмного забезпечення, що помилки легше виправити ніж раніше вони будуть виявлені.

Досвід викладання мов, як Pascal, C++, Java і переконав мене в тому, що передбачувані переваги помилки перевірки часу компіляції для неофітів програмістів ілюзорні. По-перше, переважна більшість виявлених помилок компілятором досить пішохода (наприклад, повна відсутність “;”). Мова, як Python, усуває багато з цих загальних помилок за допомогою більш простого синтаксису. Крім того, більшість інших чисто синтаксичні помилки також будуть негайно повідомляти інтерпретатором Python, який аналізує синтаксис програми під час завантаження. По-друге, є невелика перевага в лові тонші помилки (наприклад, типу “несумісність”) під час компіляції. Поширена помилка типу викликана дисбалансом між декларацією і використанням. Багато з цих помилок просто помилки в декларації. У мові без декларацій, ці помилки не відбуваються. Коли помилка справжня помилка в тому, як використовується тип, помилка все одно буде спійманий в динамічно типізованих мовах. Різниця полягає в тому, що він буде спійманий і діагностується під час виконання. Для типів програм, написаних, як правило, протягом перших двох класів CS, час компіляції перевірки не багато переваг. Простота редагування інтерпретувати цикл набагато переважує будь-які переваги знаходження безлічі помилок під час компіляції.

 

Перевірка під час компіляції може бути насправді шкідливо для деяких студентів декількома способами. По-перше, це деморалізує. Студенти повинні мати повну синтаксично правильну програму, перш ніж вони отримують будь-яких результатів. Складання програми та дивлячись на тягнуть з екранів з повідомленнями є тьмяним і дратівливою активністю. З інтерпретується мовою, принаймні, щось відбувається; програма генерує часткову вихід перед зупинкою для помилки. Студент бачить програму в (часткової) дією і має тільки одну помилку, щоб виправити в той час. Кожне виправлення приносить більше прогресу. Це набагато більш обнадійливими ситуація.

Другий применшення великої перевірки часу компіляції є те, що вона дає студентам ілюзію обгрунтованості. Вони вважають, що, як тільки програма компілюється, вона повинна бути в значній мірі правильно. Одним із симптомів цього недостатньо тестування. Інша проблема полягає в тому, що він затримує виявлення помилок проектування. З мого досвіду, це не рідкість для студентів, щоб витрачати чимало часу на програмі і відчувають, що вони майже закінчили, тому що є тільки одна маленька помилка, вони не можуть зрозуміти. Тільки виявляється, що одна маленька помилка, як і раніш,е виникає помилка компіляції. Далеко від “майже зроблено” призначення пов’язано через пару годин, і вони навіть не отримали програму, щоб зібрати ще! Вони не мали шанс виявити головні недоліки в логіці їх вирішення. У інтерпретована мова, знаходячи помилки, йде рука об руку з тестуванням; наявність помилок типу не обов’язково запобігає відкриттю більш серйозних помилок проектування.

4.2 Мови сценаріїв занадто неефективні

Це правда, що інтерпретована мова буде повільніше (зазвичай у 10 разів), ніж скомпільований мову. Багато ранніх мови сценаріїв були навіть набагато гірше, ніж це. Проте, сучасна мова сценаріїв, таких як Python, Perl або Tcl досить швидкий, щоб побудувати основні програми. Наприклад, Python і Tcl обидва були використані для реалізації повнофункціональні графічні веб-браузери. Звичайно, для типів програм, які розробляються в CS1 і CS2, мов сценаріїв, навіть працюють на скромному апаратному забезпеченні, має бути більш ніж достатньо.

У будь-якому випадку ця проблема для підвищення ефективності виконання недоречна. Початківці програмісти, як правило, не писати код виробництва. Їх програми, як правило, не мають жорсткі обмеження за часом і буде працювати тільки кілька разів. Занепокоєння реальна ефективність є кількість часу, витраченого розробки програми. Це де мови сценаріїв світити. Швидке редагування/інтерпретувати цикл, відсутність декларацій, і дуже високого рівня природа мов сценаріїв роблять їх ідеальним інструментом для цього середовища.

4.3 Студенти мають учити системну мову

Це правда, що жодна з основних комп’ютерних наук не повинен закінчити без навчання принаймні один системний мову програмування, таких як C++, Java або Ada. Насправді, було б добре, щоб дізнатися більше, ніж один. Мови сценаріїв не замінюють мов системи; скоріше, вони доповнюють один одного. Все більше і більше програмних систем побудовані з компонентів, запрограмованих в мовах системи і склеєні разом з мовою сценаріїв. Таким чином, в рівній мірі вірно, що студенти повинні також вивчити мову сценаріїв. Таким чином, вони озброєні набором інструментів, щоб вони могли застосовувати найбільш підходящим для даної задачі.

Виникає питання, то, що має бути мовою перших класів? Одним з аргументів для викладання мови як C++, Java або Ada в першому класі є те, що самі ці мови є настільки складними і важкими, що студенти повинні почати вивчати їх відразу ж, щоб мати достатньо часу, щоб опанувати ними. Цей аргумент отримує його в зворотному напрямку. Перші заняття не повинні бути про мову, а про комп’ютерну науки і, по суті, дизайн. Спроба навчити складну мову за своєю суттю применшує цієї мети, оскільки студенти повинні витрачати більше часу на освоєння мови і, отже, менше часу засвоєння іншого матеріалу. Саме з цієї причини деякі педагоги дивляться на Java в якості більш простої альтернативи C++, але навіть Java є дуже складною у порівнянні з Python.

Більш розумний підхід полягає в першу чергу навчити дизайн, починаючи студентів з простий, але потужний мову. З твердим розумінням програмування і дизайну набагато легше зрозуміти такі поняття, як статичної типізації, видимість, дженериків та поліморфізм. В уявному експерименті, уявіть собі, насправді пояснити сенс кожної частини програми Java helloWorld для програміста-початківця. Уявіть, наскільки легше пояснити public, class, static, void і String [] студенту, який уже розуміє функції, класи, змінні екземпляра, змінні класу, типи даних і масиви. Більш складні конструкції мов системи (наприклад, шаблони C++, віртуальні методи, динамічні зліпки) дійсно механізми досягнення деяких з гнучкості, яка забезпечується динамічних мов в статично типізованих рамках. Чому б не навчити концепцій першим на мові, який не вимагає такої складності, щоб висловити їх? А принципи другокурсник рівня класу мов програмування або класу систем програмування, здається, більш підходяще місце для вирішення тонкощах мови системи.

4.4 Python – незнайома мова

Деякі викладачі можуть заперечити Python як першу мову, тому що вона незнайома. Однак, мови сценаріїв є простими, а хтось право викладати інформатику може підібрати Python в дні, якщо не години. Насправді, я б ризикнув сказати, що через пару днів, граючи з Python, багато викладачів, які в даний час викладають C++, краще б знали Python. C++ еволюціонував у процесі стандартизації, і багато з того, що кожен бачить в підручниках застаріла. Справжні фахівці з сучасним C++ відносно рідкісні.

4.5 Наші студенти хочуть мову X

Студенти (і батьки і роботодавці) мають упереджена думка про те, що слід викладати в навчальному плані. Проте, ніхто не повинен затверджувати, що це не в їхніх інтересах, щоб отримати найсильнішу можливу основу в області програмування і дизайну. Як вже говорилося вище, починаючи з мови сценаріїв, ймовірно, не гальмувати прогрес студента у вивченні мови X (незалежно від того, що таке X). Швидше за все, це, ймовірно, зробить їх кращими програмістами на будь-якій мові (ах) вони в кінцевому підсумку за допомогою. Коли я ввів Python в класах верхнього рівня, майже універсальна реакція була такою: “Чому ми не використовували це в першу чергу?”

4.6 Немає підручників

Основні труднощі в спробі навчити нестандартну мову у вступній послідовності є відсутність підтримки підручник. Одним з варіантів може бути використання мови нейтральної книги і розвивати допоміжні лабораторії, використовуючи один з доступних посилань на Python. Що дійсно необхідно для деяких піонерами, щоб викладати вступні курси з використанням мов сценаріїв і розробити відповідні примітки, які можуть стати підручники. Багато викладачів взяли занурення з Java, перш ніж були тексти; В результаті, існує багато нових назв з використанням Java зараз підходить на ринку.

Ця стаття є тривожним сигналом для тих, хто розглядає перехід на Java. Якщо ви можете бути перемикання мов, уважно вивчити мотиви вашого комутатора. Педагогічні міркування виступають за відхід від мов системи на мови сценаріїв, і Python є дуже хорошим вибором. Що необхідно, кілька душ міцними, щоб зробити рішучий крок з Python і розробити відповідні матеріали. Можливо, деякі сучасні автори можуть бути також умовили розробляти версії Python популярних текстів.

4.7 Як щодо схеми?

Для тих, хто використовує схему у вступному класі, виклик для простого першої мови немає нічого нового. Схема має багато спільних рис з мовами сценаріїв в тому, що він малий, динамічний та інтерактивний. (Насправді, він часто використовується як мова сценаріїв.) Схема є хорошим вибором для першої мови, тому що це простий і потужний. Схема дозволяє для обговорення різних парадигм програмування, і є кілька дуже хороших підручників для CS1 з використанням схеми. Здавалося б, ідеальний вибір.

Слабкість схеми є те, що вона сприймається як маргінальної мову, який досить сильно відрізняється від мов системи, які використовуються в інших місцях в навчальній програмі. Це обмежує його популярність в CS1. Python пропонує багато з переваг схеми в той же час схожі на таких мовах, як C++, Java, і Ada, тим самим полегшуючи перехід на ці мови. Для тих, хто хоче вивчити кілька парадигм програмування на перших курсах, Python має підтримку функціонального стилю, включаючи функції першого порядку, карти, застосовуються, лямбда і закриття.

5 Висновки

Поява мов сценаріїв, таких як Python, Tcl і Perl в якості основних інструментів в розробці програмного забезпечення являє собою потенційно революційні зміни в комп’ютерному програмуванні. В даний час, мови сценаріїв недостатньо представлені в навчальну програму з інформатики. Це дивно, тому що, з педагогічної точки зору, мови сценаріїв здавалося б ідеально підходить для даного типу програмування, як правило, робиться у вступних класах.

Одна з головних заповідей, які ми намагаємося прищепити нашим студентам є ідея використання належного інструменту для даної роботи. Якщо клієнт прийшов до мене і запропонував їй потрібна була програма, написана в дуже короткий проміжок часу, що програма не має обмеженого часу або пам’яті обмежень, а також, що після завершення будівництва він буде працювати тільки кілька разів, я б відразу ж запропонувати сценарії мова як відповідний інструмент. Саме такі умови, при яких програмування відбувається в більшості класів CS1 і CS2. Беручи до уваги існування мов сценаріїв, таких як Python, які також забезпечують хорошу підтримку для модульного та об’єктно-орієнтованого проектування програм, немає ніяких підстав для їх не використовувати. Мови сценаріїв є найбільш придатним інструментом для наших вступних курсів. Беручи до уваги відсутність в даний час консенсусу на одному першому мовою, здається, ідеальний час, щоб почати рух до мов сценаріїв. Розгляньте можливість використання Python в ваших вступних класах.

Посилання

Леірд С., Сораіз К., (1998). Початок роботи з Python, SunWorld Online, лютий, http://www.sun.com/sunworldonline/swol-02-1998/swol-02-python.html

Леірд С., Сораіз К., (1998). Оволодіння сценаріями, Byte, червень, стор. 89-96.

Лутц М., (1996). Програмування Python, O’Reilly & Associates, Inc.

Макколі Р. і Манаріс Б., (1998). Комп’ютерні програми: на що вони схожі? Матеріали 29-го освітнього технічного симпозіуму з інформатики SIGCSE, лютий, стор. 15-19.

Остераут Дж., (1998). Сценарії: програмування вищого рівня для 21-го століття, IEEE Computer, березень.

Уоттерс А., ван Россум Г., Альстром Дж., (1996). Інтернет-програмування з Python, M & T Books, Нью-Йорк, Нью-Йорк.

 

 

About The Author

admin

Comments are closed.