Чому C ++ часто є першою мовою, яку викладають у коледжі? [зачинено]


12

Моя школа розпочинає навчальну програму з інформатики з курсів програмування на C ++, це означає, що це перша мова, яку вивчає багато студентів.

Я бачив, що багатьом людям не подобається C ++, і я читав різні причини. Мабуть, здається, поширена думка, що C ++ не дуже гарна мова. У мене складається враження, що це не дуже сподобалося на основі деяких питань щодо StackExchange, а також таких публікацій, як:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ вузол / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
тощо.

(Примітка. Це не моя думка, що C ++ - це погана мова. Насправді це основна мова, якою я користуюся. Однак Інтернет, а також деякі професори справили на мене враження, що мова не дуже сподобалась. Насправді , один з моїх професорів постійно дряпає на C ++, але це все ще початкова мова в моєму коледжі!

Зважаючи на це, чому це перша мова, яку викладають у багатьох школах? Які причини започаткування навчальної програми з програмування C ++?

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


6
Які школи та де? Усі біля мене (3 у місті, та ще декілька інших за пару годин їзди) навчають Яву як першої мови. C ++ приходить за останній рік або два (залежно від того, які курси бере студент). Так було принаймні останні 10 років.
FrustratedWithFormsDesigner

7
Професори, як і інші програмісти, мають лише помірно раціональні симпатії та негаразди. У той же час, вони схожі на студентів, які не мають досвіду.
Майк Данлаве

@Casey Ви, мабуть, зіткнетеся з деякими тертями з іншими користувачами тут, оскільки ви лише заявили, що C ++ не подобається, але це не має ніякого виправдання. Якщо ви зосереджуєтесь саме на тому, щоб з’ясувати, чому C ++ обраний в університетах, я настійно пропоную вам відредагувати будь-які посилання, які йому сподобалися чи не подобалися, оскільки це в значній мірі не має значення для вашого актуального питання.
Адам Лір

4
У перший рік справа в тому, щоб відокремити пшеницю від пшениці.
Стівен Еверс

2
Було б цікаво мати декілька статистичних даних про те, скільки коледжів / університетів використовують які мови для своїх вступних курсів.
Джеррі Ковф

Відповіді:


25

Кожна окрема мова має культове наслідування закоханих і ненависників; це стосується C ++, Java, C #, Haskell, Objective-C, будь-якого іншого.

Є багато поважних причин сподобатися або не подобатися мові.

Зрештою, є кілька причин, чому C ++ переважно викладають у університетах:

Не надто поспішайте відкидати це як "погану" мову; Я рекомендую вам зануритися в нього, по-справжньому вивчити це, створити кілька проектів середнього та великого розміру, використовуючи його. Потім зробіть те саме з іншими мовами; в цей момент у вас буде достатньо досвіду та розуміння, щоб сказати "Я думаю, що C ++ - це погано, тому що X, Y, Z" або "Я думаю, що C ++ - це добре, тому що A, B, C у Java немає".

Вам ще є чому навчитися, молодий коник.


2
Це може бути не "поганою" мовою, якщо ви піднімаєтесь до філософії "поганий є суб'єктивний", але практично для кожного поєднання технічних проблем існує більш продуктивна, безпечніша мова. На мій погляд, причина C ++ викладається в тому, що це те, що люди використовують, і це те, що люди використовують, тому що це те, що люди знають, і це те, що люди знають, тому що це те, що викладають університети. Крім популярності, C ++ не має суттєвих достоїнств, які я бачу, і я програмую з цим професійно.
weberc2

13

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


9
Мене хвилює той факт, що ця помилкова аналогія набрала стільки відгуків. Це не так, як працює навчання. Одне з багатьох помилкових уявлень про дидактику.
Конрад Рудольф

12
C++ isn't that bad. 

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

Розгляньте школи як капсулу часу до минулого. :)

Я дуже хочу, щоб це було навпаки.


дуже розумний момент! Мені не дали ніяких вправ на розумні покажчики, або RTTI чи RAII в коледжі. WTF!
Чані

12

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

Я думаю, що так само і з C ++. Це мова, яку знає багато людей, тому варто домогтися базового вільного володіння.

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

Нарешті, у нього немає "комерційних" питань, які мають деякі інші мови (наприклад, Java-Oracle або .NET-MS). Я знаю, що багато університетів не хочуть звинувачувати в навчанні продукту однієї компанії над іншим.


1
+1 для c ++, що не є комерційною мовою. Добре вивчати мову, не переживаючи політику та тактику ведення бізнесу. <встановлення Java7 в Linux, наприклад>
Chani

5

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

Причин навчання C ++ у коледжі з першого курсу може бути декілька:

  • Він багато в чому використовується. Існуюча база коду просто величезна, і навіть зараз, коли існують такі мови, як Ruby, Python або C #, C ++ все ще багато використовується навіть при створенні програм з нуля, в тому числі для веб-сайтів. У цьому випадку вивчення C ++ є хорошим вибором. Принаймні, кращий, ніж витратити два роки на навчання Ада, тобто те, що ніколи не використаєш у своєму житті, якщо не розробиш програми для космічних кораблів.

  • Це не надто абстрактно. Наприклад, як ви можете пояснити студентам, що таке вказівники, якщо вони вивчили лише C # або Java?

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

Це робить C ++ більш підходящим, ніж Ada, Java або PHP.


1
Здається, що C краще для ваших двох очок. Чи є школи, які викладають Ада? Я б точно взяв це за C ++, але потім знову дивно!
Jetti

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

Крім того, я не можу придумати багато речей, які Ада робить гірше, ніж C ++, і я б набагато скоріше використовував це, ніж C ++ (мій код все одно буде простішим і безпечнішим), і я програмую на C ++ професійно! А для навчання студентів вказівникам завжди є Ada, Go або будь-яка з кількох здорових мов. А щодо вашого останнього пункту, C ++ без зайвих труднощів. Багато проблем, з якими стикаються програмісти на C ++, не мають нічого спільного з програмуванням, а з подоланням C ++. Програмування на будь-якому рівні є досить прямим упередженою мовою.
weberc2

5

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

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

Незважаючи на те, що C ++ все ще є широко використовуваною мовою, оскільки це чудове поєднання методологій швидкості та об'єкта. Хоча багато людей вважають, що це не повний OOP, я вважаю, що це дає вам більшу частину гнучкості OOP, не змушуючи вас бути загальним фанатиком. Більшість компіляторів навіть дозволяють писати чистий C.

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


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

Це насправді правда. Більшість * NIX-платформ вбудовані в компілятори, і це, як правило, має психологічний ефект на більшість людей у ​​вигляді "Звичайно, я міг завантажити ТОЙ компілятор, але ця прийшла разом із моєю ОС, напевно, вона повинна бути найкращою".

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

4

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


Це звучить як аргумент для Ада, а не для C ++ ...
weberc2

3

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

Існує менше синтаксису "пуху" для отримання цієї початкової програми "привіт світ" у порівнянні з Java або C #. Чи повинен новачок бачити слово "статичний" для додатка привіт привіт? У java / C # вони роблять.


3

Коли я вивчав інформатику, спершу Ява вражала, але зараз мій університет викладає дві мови для нас - лінгвістів обчислювальної техніки: спочатку Prolog, а потім C ++.

C ++ викладається з (принаймні) наступних причин:

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

  • Це дійсно швидко. Ви не можете використовувати Python, Scheme або Prolog для обробки величезних наборів даних, які є загальними для цих часів. Подумайте алгоритми графіків з мільйонами вузлів. (Ось чому комп'ютерні ігри зазвичай пишуть на C ++.)

  • Студенти можуть дізнатися, що робить компілятор. Насправді, доки я лише вивчав Java (починаючи з середньої школи), робота компілятора мені завжди здавалася магічною. Ви просто не дізнаєтесь про стек та купу, всю статичну та динамічну штуку тощо, як початківця Java. C ++ демістифікує весь комп'ютер.

  • Для того, що він може зробити, це нормально в часі навчання (хоча це, мабуть, одна з найскладніших мов, якщо ви дійсно в ній поринете). Він пропонує приємну бібліотеку, яка допомагає з плавною кривою навчання. (Однак, до цього існують різні підходи. У моєму університеті нас навчали писати власні строкові класи та розумні покажчики до того, як нам дозволили користуватися бібліотекою; Bjarne Stroustrup, винахідник C ++, заохочує протилежний порядок.)


Це не пояснює, чому, наприклад, Ада не викладається як перша мова.
weberc2

2

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

Я насправді люблю мову, і вважаю її вищою за більшість альтернатив.

Це також настільки продуктивно, як і більшість інших мов, і не такий "крах", якщо ви знаєте, що ви робите, і подумайте, перш ніж скопіювати-вставити випадковий кодекз.

Також добре прочитайте - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Однак деякі речі C ++ насправді погані, наприклад, винятки та неінтуїтивні накладні витрати в деяких випадках. Це причина, я думаю, чому Лінус так негативно ставиться до цього у публікації, яку ви цитували.

Корисне прочитання, щоб торкнутися однієї з пов’язаних тем - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx


3
Ця відповідь просто абсолютно неправильна. Перш за все, тому що не існує мови під назвою "C / C ++".
Конрад Рудольф

1
  1. Професори не люблять готувати новий курс, і є обмеження, скільки ви можете запропонувати.
  2. Мови приходять і йдуть, тому вони відмовилися від спроби залишитися на передовій (Див. №1)
  3. Це університет, а не технікум. Більше зосередження на наданні фундаменту, ніж навчанню на роботі.
  4. Охоплює досить широкий спектр програмування: сервер, настільний ПК, вбудований, UNIX, Windows.
  5. Вони використовують його як курс проти бур’янів. Кожна основна область дослідження має щонайменше одну.

1

Раніше був Паскаль, раніше Паскаль був чимось схожим на Базова. Цікава частина - що далі? Можливо, нічого. У мене є думка про те, "чому c ++". Тому що це важко, але це не важко схожий lisp. Ні, я дійсно розумію, що C ++ є гарною мовою для системного програмування, я знаю, що на С ++ існує багато проектів, кодованих на C ++, і є безліч бібліотек, щоб студенти могли створити все з цим. Але ми говоримо про студентів та їх можливість створювати логіку та розуміти систему. Ви не можете бути хорошим кодером C ++, якщо не можете створити просту логіку і зрозуміти, як працює система, і це, на мою думку, головна причина. І так, ще одна проста причина - стабільний старт кар’єри.

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