Чому ми вивчаємо Java в університеті? [зачинено]


25

Ява часто зустрічається в наукових колах. Яка причина цього?


9
Немає ліцензійних витрат для Java IDE, як для екосистеми Microsoft. Більше ваших великих грошей на навчання в університеті.
mjhilton

16
Що? ви можете отримати Microsoft Visual Studio Express безкоштовно.
Quant_dev

12
Насправді більшу частину часу ви можете отримати Visual Studio безкоштовно, якщо ви студент, а також усі інші програми Microsoft.
Ерін

5
бо ти хочеш заробляти гроші, коли закінчиш право? Проведення 4-х років на вивчення речей, які ніхто не використовує у realсвіті, не приносить користі ні студентам, ні компаніям, які хочуть найняти студентів.

5
@JarrodRoberson, лише деякі компанії використовують Java, університети повинні насправді навчати вас на широкому спектрі мов, щоб ви були краще підготовлені до реального світу. Ви не хочете, щоб застрягли, щоб бути просто Java-програмістом, коли існує так багато інших способів мислення та розвитку.
CaffGeek

Відповіді:


73

А декількох університетах є хтось із достатньо відомих, що багато (якщо не більшість) рішень обертаються навколо подобань, неприязнів, думок, смаку тощо. Техаський штат A&M має персонал Bjarne Stroustrup; це, мабуть, нікого не здивує, що їх навчальна програма має наголос на C ++.

Однак більшість університетів дещо відрізняються. По-перше, рішення часто приймаються набагато більше на користь викладачів, ніж студентів. Найбільш великим критерієм у багатьох випадках є "яка мова вимагає найменших зусиль з нашого боку?" Більшість з них також обережні у своїй лінощі - вони хочуть не лише мови з найменшими передовими поняттями, а й тієї, яка є (наприклад) найповільнішою для впровадження, оновлення чи прийняття чогось нового.

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

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

Java є перетином цих трьох:

  1. Кожна концепція, яку вона втілює, була добре відома до 1980 року. За межами самого елементарного поняття, що таке OOP, не так багато відомо.
  2. Це несмачний, без запаху, нетоксичний, біорозкладаний, політично правильний вибір.
  3. Майже єдиною іншою мовою в історії, яка існувала так довго і (ймовірно) інноваційною, є SQL. Незважаючи на те, що вони навряд чи називають швидкими цілями, COBOL і Fortran все ще інновації більше, ніж Java.
  4. Він широко використовується. Коли ви переходите до цього, професори та PHB мають схожі критерії.

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


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

1
FWIW, я віддаю перевагу ванілі.
Гонки легкості з Монікою

Я підписався, щоб підтвердити вашу відповідь
user2445942

22

Я вивчав комп’ютерні науки на початку дев’яностих, безпосередньо перед появою Java. Підхід, який дотримувалися наші професори, був такий.

Перший курс: вступний курс з програмування та алгоритмів на Паскалі. Чому Паскаль? Тому що це чиста мова, призначена для викладання концепцій програмування без засобів для злому. Звичайно, ми, студенти, знали, що найпопулярнішою мовою в той час була С і що з'явилася нова мова зі зростаючою популярністю: С ++. Тож ми постійно читали та обговорювали ці мови та робимо невеликі проекти, використовуючи їх самостійно. Отже, ідея полягала в тому, що на уроці ми займаємося серйозною теорією (Паскаль), а вдома вчимося зламати (С). :-)

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

Під час третього курсу ми провели курс з мов програмування, на якому вивчали різні парадигми мов програмування (імперативні, функціональні, логічні, об’єктно-орієнтовані), вивчали загальні концепції та методи впровадження, а також переглядали основні мови програмування (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Нам наш професор сказав на початку курсу: ви не повинні оцінювати цей курс, думаючи про те, скільки мов програмування ви знаєте в кінці курсу, а про всі загальні поняття, які ви засвоїли, як вони пов'язані між собою, для чого вони гарні, як вони використовуються на яких мовах. Тоді вивчення певної мови - це лише питання читання книги, перегляду наявного коду, спроби використовувати його у конкретному проекті тощо.

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

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

Особисто я б все-таки використовував Pascal або подібну мову для першого курсу, тому що це дозволило б мені розрізнити структури управління та структури даних, які в Java / об'єктно-орієнтовані мови тісно інтегровані. Отже, на мою думку, Паскаль дозволив би поступовіше ознайомитись із основними поняттями програмування.

Крім того, вчений-комп’ютер (і хороший програміст) повинен знати про основні механізми / структури виконання, такі як стек, купа, параметри передачі, розподіл пам'яті, покажчики або як реалізувати абстрактні типи даних, не використовуючи вбудовані засоби мова (списки, набори тощо). Java відбирає багато цього від програмістів (це, звичайно, добре), але новачкам слід дізнатися про ці речі. Можливо, після першого курсу програмування на Java потрібно також взяти більш загальний курс з мов програмування.

Це лише мій досвід та думки.


1
Коли я був в університеті на 1 курсі, ми проводили Ада для курсів програмування (деякі збори в курсі комп'ютерних систем). 2-й рік був досить схожим на мовний стиль. На третьому курсі нам сказали саме це, "кожен комп'ютер, який знає поняття програмування, повинен мати можливість прочитати книгу та вивчити нову мову програмування". До кінця року ми навчалися C, C ++, Java та якою мовою ви робили свій проект (мій був Python) Це була найкраща підготовка, яку я коли-небудь отримував до реального світу, як швидко вчитися та на літу
Емі

(+1) Мови програмування, пов'язані з Pascal, краще використовувати для навчання програмуванню, оскільки його батько "Ніклаус Вірт" ретельно проектує їх для навчання. ;-)
umlcat

@umlcat: Дякую Так, я думаю, що добре мати C або C ++, де можна порушити правила і зламати. Але перш ніж порушувати правила, ви повинні знати, які правила ви порушуєте. Для цього дуже корисно мати чисту мову програмування, як Pascal, щоб дізнатися, як слід програмувати в «ідеальному світі». Тоді ти хоча б знаєш, що робиш, коли хакуєш. :-)
Джорджіо

@Giorgio: Я думаю, що студентів слід викладати спочатку Паскалю, а пізніше C / C ++ та пізніше Java. Я не маю на увазі лише те чи інше, але все в певному порядку. Деякі школи кидають викладати одну на користь іншої. Також я працюю на C та Java. Сподіваюсь, що це допомагає ;-)
umlcat

@umlcat: Я повністю згоден. Я також додав би Lisp, Haskell, Prolog: чим більше парадигм програмування можна знати, тим краще.
Джорджіо

10

Я був у школі, коли вийшла Java. І мій університет майже змінився за ніч. Люди відверто хизувалися на Яві в академічних колах. Коли я вийшов, я був молодшим, і до мого старшого року майже всі навчальні заклади швидко рухалися, щоб змінити свою навчальну програму. Не тільки в моєму університеті, але і всюди. Це було дійсно так швидко. Нашим другим вступним курсом був Паскаль, і він швидко перейшов на Java менш ніж за рік. Чому вони перетворили так швидко? Дві великі причини.

Один вчений хоче викладати теорію та алгоритми. Мови, які полегшують вивчення тих алгоритмів, яким не потрібно багато досвіду для роботи: найкраще: схема, Python, Java, Smalltalk тощо. Чим більше мова стає тим, чим сильніше відволікаєшся від вивчення реальних алгоритмів. У той час, коли мови розписів були громадянами другого класу, нахилялися роботодавцями як дешеві чи швидкі та брудні. Академіки розглядали їх як більше копіювальних котів, але те, що працедавці хочуть, також покладається на академіків.

Це підводить нас до наступної причини. Роботодавці хочуть певного мовного досвіду, і в той час, коли це було C / C ++. Але C / C ++ потребує багато досвіду для вивчення, і є багато кутових випадків, а також, якщо вони, або буци, які відволікають. Ми вивчили курси C / C ++, але не на нижчих рівнях. У той час роботодавці були злі на програми CS, оскільки студенти не виявились гуру C / C ++.

Java прокотилася через галузь занадто швидко, як і наукові школи. Тож нарешті вчені отримували те, що хотіли. Мова високого рівня, яку було легше вивчити, а мову прагнули роботодавці. Це було все надто досконало. Я мав повернення друга до академії, можливо, через 3 роки після того, як я пішов, і він сказав, що ви можете знайти книгу Java у кожному предметі CS. Ось так швидко Ява перейняла академічні центри.

Особисто я думаю, що Java не скинула CS, я думаю, що це насправді було гарною справою, оскільки студенти можуть вивчати CS, брати участь у відкритих джерелах та знаходити роботу навіть у школі. Я все ще вважаю, що ви повинні вивчати багато мов, як студент CS, і це не повинна бути тільки Java. Але, якби всі вони використовували пітона, Джоел також ненавидів би і пітона.


Якщо у вашій школі досі використовували Паскаль у середині 90-х, то вони все одно прострочилися на капітальний ремонт. Мої перші заняття з CS були в Паскалі, але це було в 1980 році! Цікаво, однак, що лише вступні курси - класи верхнього рівня, використовувані C (для внутрішніх ОС), Модула (для проектування компілятора), Prolog та деякі аспірантури навіть використовували Ада. Я не розумію, чому школи все ще не роблять цього.
TMN

1
Більшість або все ще використовували Паскаль ще в 1995 році, декілька переїхали до Модули. Шахта почала вводити C ++ у 1995 році для літніх людей, зберігаючи Паскаль для юніорів. Я думаю, що вони вже замінили Pascal на Java (їм потрібна мова низького рівня, оскільки велика частина роботи передбачає взаємодію з обладнанням, тому C ++, ймовірно, все ще існує).
jwenting

Ми трохи використовували C / C ++ після вступного курсу Паскаля. Prolog, LISP, Schema, Smalltalk, Assembly використовувались у класах середнього рівня. Оскільки важливість урядового споживання техніки зменшилась у 1990-х роках, Ада припинялася і згадується лише в кінці 1990-х. Я думаю, що небезпека Java не має нічого спільного з Java, але з монокультурою та навчанням. Зараз я розробник Flex, і Adobe минулого тижня закінчила свої можливості заробляти на життя. Я не переживаю, бо маю давню історію використання не лише 1 мови. У мене є Java, Ruby, Php, Python.
кругляки

8

Для цього є кілька причин, зокрема:

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

Зауважте, що існує ряд шкіл, які викладають C # з багатьох однакових причин. Причин набагато більше, деякі з них більш притаманні окремій школі. По суті, Java стала об'єктно-орієнтованою "ОСНОВОЮ" минулих років.


Є чудові книги з Java, а також підсилює OOP, наприклад перший об'єкт Java з використанням BlueJ. Однак у C # я не бачив таких навчальних книг, які б узяли вас з нуля і добре вас засвоїли. Чи згодні ви зі мною?
Гома

Я буду. Викладання - дуже складне завдання, і вчителі все ще вчаться, як найкраще вчити. Ви знайдете ряд шкіл в Інтернеті, таких як "Штрайєр", і школи "Цегла та майстер", як правило, спрямовані на Яву. Можливо, тому, що інтернет-школи обслуговують учнів, які вже працюють. Основні книги програмування можуть застосовуватися до будь-якої мови, тому є матеріали.
Берін Лорич

"Сміття, зібране таким чином, не потрібно навчати вказівникам та керувати пам’яттю вручну". якщо ви як інженер програмного забезпечення не знаєте про покажчики та управління пам'яттю або не знаєте, як вони працюють, вам не вистачає деяких дуже важливих знань.
праворуч

У Java може не бути *синтаксису, але це було б дуже важко використовувати без основного розуміння покажчиків.
dan04

@WTP, і тому Java часто використовується для вступних курсів (де раніше використовувалися Pascal або Modula), а пізніше вводиться C (++).
jwenting

6

Мені подобається публікація Джоела Спольського під назвою The Perils Of Java Schools . Я вважаю, що Берін Лоріст вірно сприймає цю програму, спрощуючи циркулярну програму, і вона також застосовується до реального світу.

Я багато разів чув таке: "Ступінь інформатики - це не ступінь для вивчення програмування, це вивчення теорії". Мова не обов'язково має значення (хоча це не повинно перешкоджати), поки ця теорія вивчається. Java - це порівняно проста мова, яка дозволяє витратити більше часу на вивчення теорії за всім. Це одна з причин того, що MIT використовує схему (тому я чув).


2
Міт перестав використовувати схему кілька років тому - cemerick.com) / 2009/03/24 /…
nate c

@nate c - ya я не був впевнений. Тим не менш, Python досить легко навчитися також. Дякуємо за посилання!
Jetti

Я б повністю стукав зі своїми учнями, якби я викладав клас. Я б закликав писати власну мову програмування, і ви можете використовувати цю мову програмування лише з курсу уроку.
berlinbrown2

1
@ Берлін - Я думаю, тому ти не вчитель тоді :)
Jetti

3

Багато відповідей, поданих вище, є хорошими, але вони щось не залишають.

Java - це багатоплатформна мова. Один студент може використовувати свій Mac, інший свій ПК та ще один її обліковий запис Unix. Той самий код зробить те саме. Подумайте, наскільки простіше підтримати і вчителя, і шкільний ІТ-відділ.

Це було справжнє значення Java, коли вона вийшла. Жарт був "Код один раз, налагодження скрізь", але він дійсно виймає апаратні та операційні системи з рівняння.


Можливо, це пояснює, чому Java обрана на C, C ++ або C #, але Ruby та Python (серед інших) працюють просто на крос-платформі.
Ерік Вілсон

Влучне зауваження. Я вважаю, що відділи CS також віддають перевагу сильно набраним мовам з ряду причин. Крім того, Java поклала початок в американських Рубі, але насправді це не вдалося до 1999 року або пізніше, а Python був досить обмеженим, поки не вийшов 2.0.
Меттью Флінн

1

Я чув, як професори говорять, що використовують Java для навчання, тому що:

  • використовує новіші парадигми (OOP, деякі дженерики)
  • синтаксично дуже простий, хоча досить багатослівний
  • ніяких вдосконалених понять, таких як функції вищого порядку, закриття, випічка або продовження, які можуть заплутати людей, які ще вивчають основні поняття
  • для цього написано багато бібліотек
  • студенти не замикаються при налагодженні витоків пам’яті, оскільки існує gc

Особисто я радий, що взяв CS в Берклі, коли вони використовували схему для викладання. Хоча я не усвідомлював, якою елегантною була мова насправді, лише через кілька років.


1

Трохи фону

Я взяв єдиний клас Java, який пропонували в нашій школі. Це було в кінці 90-х - на початку 2000 року. Ява зростала, але майже не знімалася. Виходячи з великої розробки C, я трохи засмутився всім кодовим кодом, необхідним для отримання Java та роботи. Я не міг зосередитися на своєму завданні. Я не міг просто відкрити файл із "відкритим". Мені довелося визначити клас, а потім імпорт тощо, тощо.

Я займався комп’ютерною інженерією, тому спершу я взяв програму складання, а потім C, а потім C ++, схему і один курс Java. Це була переважно шкільна програма, орієнтована на С. Клас алгоритмів викладали за допомогою C.

Коли я пішов у промисловість, Ява явно був домінуючим гравцем. Можливо, це був єдиний програвач під час конвертації з бекенд-систем COBOL в додатки веб-бізнесу Java. На початку 2000 днів Java зробила величезні успіхи у світі бізнесу.

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

Зрештою, я не думаю, що це має значення.

Щоб відповісти на ваше запитання: Чому ми вивчаємо Java в університеті?

Яву слід викладати, але не використовувати її на всіх курсах:

Ви повинні вивчити Java в якийсь момент коледжу, якщо ви вивчаєте інформатику. Він популярний у світі бізнесу. Ви повинні вивчити Java та, можливо, C #. Я б не АБСОЛЮТНО не навчав би Java як вступного курсу програмування. І Java, безумовно, не повинна бути основною мовою, що використовується на всіх курсах.

Щодо критики Java:

Java отримує багато критики, і це завжди є. Я читав журнали Java, в яких згадується Java із запитанням: "Чи готова Java для підприємства?". Платформа Java досі залишається широко використовуваною платформою. Але для більшості загальних завдань програмування Java працює чудово. І немає жодних основних проблем із використанням Java. Це не зашкодить вашому набору навичок. Це може бути, якщо ви просто покладаєтесь на бібліотеки Java, не вивчаючи, що відбувається нижче. Але Java не спричинює будь-якого пошкодження мозку (деякі розробники насправді вважають це правдою).

Плюс, чому розробники не атакують C або C ++? Або принаймні C ++. Парадигми імперативного програмування дуже схожі. І я б ніколи не замислювався над тим, щоб написати веб-сервер на C ++, але я можу з Java.

Ось як я налаштував навчальну програму:

  1. Вступний курс: Схема, Python, Мова складання, C (всі три)
  2. Курс алгоритмів: C, Haskell, Python (всі три)
  3. Курс операційної системи / Мережевий курс: C / C ++
  4. Розробка графічного інтерфейсу: Java Swing, C ++ на Win32
  5. Об'єктно-орієнтоване програмування: (це хитро, я не мав би курсу OOP). C ++, Java, C #
  6. Підприємство? Розробка: Java, C #, Python
  7. Мовна конструкція, укладачі: Haskell, Scala, C, збірка, схема, звичайний Lisp, prolog.

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

Тема Java в школах не є проблемою, якщо вони повністю не хочуть захищати вас від Java або хочуть навчати ТІЛЬКИ Java. В обох випадках школи є невиправданими.

(Вибачте Рубі Ланг)


(-1) "Мова асамблеї" занадто складна для "Вступного курсу". Я не маю на увазі "не вчу цього", я маю на увазі "ми навчимо це пізніше"
umlcat

1

Вибачте, довго нудна відповідь:

(1) Ви мали на увазі:

"Чому ми вивчаємо Java в університеті, як першу мову програмування?"

(2) Або ти маєш на увазі:

"Чому ми взагалі вивчаємо Java в університеті, навіть якщо ми вивчаємо інші мови програмування перед Java?"

Здається, ви насправді означаєте обидва питання.

У випадку (1):

Я не думаю, що Java (або .NET C # і Visual Basic) слід викладати як перші мови програмування. Структурований і модульний Паскаль повинен бути першим, навіть якщо він звучить старе та застаріле.

Багато людей думають, що ми повинні навчити людей об'єктно-орієнтованому програмуванню або функціональному програмуванню немедленно, лише тому, що його "ажіотаж" або "тренд".

Я вивчаю Structured Pascal як невелику версію "Об'єктно-орієнтованого програмування", а не як щось подібне. Я бачу структуровану програму як єдиний невеликий об’єкт.

Після цього я пропоную продовжити функціональні мови та об'єкт Pascal.

А пізніше C, C ++, C #, VB.Net, Java.

Основні причини, що мені не подобається Java або C #, як перша мова програмування, це те, що вони мають суміш понять "покажчики", "вказівники на об'єкти" та самі "об'єкти" ("посилання").

Я вважаю, що студенти повинні мати на увазі, відмінності та подібність цих понять. Порівняння об’єктів Strings на Java - хороший приклад цього odditie:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

У випадку (2):

Я думаю, що Java або C # слід навчати в школі, оскільки вони мають кілька оновлених хороших функцій, і в той же час вони мають реальне використання у світі.


0

Ви повинні вивчити Java в якийсь момент коледжу, якщо ви вивчаєте інформатику. Він популярний у світі бізнесу. Ви повинні вивчити Java та, можливо, C #. Я б не АБСОЛЮТНО не навчав би Java як вступного курсу програмування. І Java, безумовно, не повинна бути основною мовою, що використовується на всіх курсах.

Я більше не можу погодитися. Java в моєму коледжі була мовою, яку вам довелося взяти, щоб потрапити в програму CS&E в моїй школі. Яву надзвичайно легко навчати. Тому що ви можете обмежитися певними поняттями, які «непрограмісти» можуть навчитися.

Я також не можу сказати, ви б чи не хотіли АБСОЛЮТНО викладати Java як вступний курс програмування. Ви в основному сказали, що НЕ БУДЕ АБСОЛЮТНО НЕ БУДЕ навчити цього ?

Проста причина вже пояснена. У Java немає ліцензійних платежів. Ви можете навчити це за допомогою базового редактора тестів. Його застосовують з неправильних причин, безумовно.

Я не погоджуюся з попередньою відповіддю, що Java не зробила студентів, що передають це "тупіше", це дійсно показує, коли у них виникають проблеми з відносно простими поняттями, такими як масиви та списки в C ++.


Я зазначив би, що незнання - це не те саме, що бути «німим». Люди, які "проходять" Java, можуть не знати цих "простих понять", оскільки їх не навчали. Це не означає, що якби знадобився якийсь час, щоб це зрозуміти, вони не отримали б цього.
Джетті

0

Перехід з C на Java стався не в той час .

Десь близько 2000. Я був в останньому класі С у своєму університеті.

  • У C ++ було занадто багато функцій, щоб не бентежити новачка. (І це все ще відбувається. І планує додати деякі.)

  • .NET не дозріла і навіть більш дорогим , ніж сьогодні.

  • Ціль C була давньою, і використання її Apple летіло нижче радіолокатора ( iPhone навколо не було)


Інші проблеми .NET на той час? Немає портативного виконання - не було монографії .
ZJR

Немає нейтральності текстового редактора . ( Війни текстового редактора некрасиві, але справжні) І IDE за замовчуванням, що змушує студентів балуватися котловими .
ZJR

До речі, я вважав за краще, щоб світ пішов шляхом Об'єктивного С , Apple не була б єдиною дитиною в цьому бальному парку, і навіть його бізнес-модель була б трохи менш божевільною.
ZJR

0

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

Я програвач-хобіст. Я дуже випереджав криву, коли мова зайшла про "комп'ютери" та "програмування". Я закінчив ступінь бакалавра - бакалаврів - у 2007 році та магістратури - приблизно два роки пізніше - 2009. Я працював з безліччю мов, включаючи асамблеї, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH Scripts, Javascript, COBOL тощо .

IMHO - мова, яка використовується для навчання студентам програмування - це показник часу, в який ми зараз живемо. Наприклад, у 1980-х Асамблея була мовою низького рівня, тоді як C вважалася мовою високого рівня.

Протягом 1990-х C ++, Java, Perl та подібні мови набули важливого значення насамперед тому, що набагато вищий рівень, ніж C, і втілювали принципи швидкого розвитку. Тому вони якось перестали навчати Асамблею студентам CS та навчали C як спосіб вираження алгоритмів. Повільно, що змінилося за останнє десятиліття, коли C вважається занадто низьким рівнем мови, щоб ефективно засвоїти суть алгоритмів та без надто багато «системних» ноу-хау. Це насправді надзвичайно важливо, оскільки фокус навчальної програми CS повинен бути більше "теоретичним", ніж практичним, і кожен раз, коли хтось хоче написати алгоритм, якщо він / вона замикається з розподілом пам'яті та арифметикою вказівника, тоді ви не отримаєте де завгодно.

Навіть сьогодні, якщо ви перебуваєте в програмі Masters CS, вам доведеться виконати певні "Системні" вимоги (як мінімум в США, і це не має сильно відрізнятися для американських університетів), що потребує студентів, щоб мати змогу програмувати додатки на рівні систем та в деяких випадках настільки глибокий, як злом рівня ядра, щоб фактично пройти вимоги. Тож, хоча C не є дефакто-мовою, яку викладають у школах, вона доречна, якщо ви хочете спеціалізуватися на таких системах, як «Високопродуктивні обчислення» чи подібних нішах.

Я також хотів би зазначити ще один момент - C вимагає великої дисципліни, щоб виправити все, тоді як мови, такі як Java, трохи розслаблені щодо таких обмежень. Це полегшує проведення курсів, не вимагаючи, щоб RA / TA запускали GDB для налагодження програми студента :)


0

Я думаю, що значна частина цього полягає саме в тому, що використовується в галузі.

У моїй програмі CS була Консультативна рада з питань промисловості, яку складали вищі співробітники місцевих технічних та космічних компаній, і вони багато вкладалися в навчальну програму. Вступні класи CS відмовили Паскаля на користь C року, коли я розпочав (1986), значною мірою за бажанням IAB. Аналогічно, на деяких курсах вищого рівня викладалося Ада, оскільки місцеві аерокосмічні компанії повинні були використовувати його для роботи в галузі наукових досліджень.

Зараз Java досить всюдисуща, особливо зараз, коли пристрої Android вилітають. Це смокче з дидактичної точки зору, але тоді це зробив і С.


0

Тому що вони сподіваються, що менше студентів не зможуть пройти курс, що саме по собі НЕМАЄ ІМХО. Можливо, одна з причин того, що майже ніхто більше не сприймає університетських ступенів серйозно, принаймні тут.

Java занадто проста мова, і не вчить ПК мати парадигму обмежених ресурсів. У той же час змушує «думати нічого, що не можна вирішити черговим шаром абстракції».

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.