Чому, здається, існує великий страх у виборі "неправильної" мови для вивчення? [зачинено]


28

Можливо, це тільки я, але, як нинішній студент CS, я вже стикався з багатьма питаннями на цьому веб-сайті та в інших місцях, присвячених не просто "Якою мовою я повинен користуватися для x?" але також "Чи все ще хтось використовує мову Y?" Перший мій клас CS викладали у схемі, яка, якщо я не помиляюся, не використовується широко (принаймні, порівняно з мовами, такими як Java, PHP, Python тощо). Багато моїх однокласників висловлювали думку про те, що треба вивчати мову, якою ніколи більше не доведеться користуватися, але я не зовсім розумію, звідки походить стільки цього страху страху вивчати менш популярні мови. Ні, я не можу використовувати схему в будь-якій роботі, яку я отримую, але я, безумовно, не шкодую, що навчився користуватися нею (хоч і в початківців, не дуже поглиблений у тому семестрі). У цей семестр я беру клас пошукових систем, що робиться в Перлі, і я знову бачу однокласників, які скаржаться на вибір мови. Я можу зрозуміти, що є улюблена мова і не подобається іншим, але чому деякі вправляються над вивченням її в першу чергу? Чи справді ви можете навчитися "неправильній" мові? Чи не вивчати щось на зразок схеми чи Haskell хороших розумових вправ, якщо нічого іншого, і корисно хоча б піддаватися різним способам вирішення проблем?


Цікаво, що мої перші два роки навчання у форматі CS стосувалися виключно C # та Java, і здогадуєтесь, що я в кінцевому підсумку використовував у своєму першому розміщенні кооперативу? Слово з чотирьох букв, починається з «П».
Анон.

6
@Shewbox, ти маєш рацію, вони помиляються, ти отримаєш перевага між навчанням, вони не будуть. Кінець історії.
окудо

7
Вони роблять SEO (оптимізацію пошукових систем) з менеджерами з найму.
rwong

1
@rwong: і, на жаль, дехто з нас повинен був навчитися важкому способу не ставити "Я використав XXX один раз і більше ніколи його не торкнуся", тому що деякі рекуйтери спам на відповідність ключових слів.

1
@JB: 99% людей роблять інших схожими на те, що вони цілуються.
Майкл К

Відповіді:


27

Сенс ступеня CS не в тому, щоб навчити вас C # та Java, ви можете вивчити їх самостійно. Це навчить вас про програмування та обчислення. Мова - лише деталь. Протягом кар'єри в програмуванні ви будете використовувати багато мов. Сьогодні це може бути Java або C #, але через 10 чи 15 років це може бути Ерланг або щось ще не винайдене. Вивчення різних стилів програмування та різних способів атаки на проблему набагато важливіше, ніж вивчення будь-якої мови.


Точно - мій ступінь передує C ++, не кажучи вже про Java або C #. Хоча нас викладали в основному на Паскалі, ми мали проблеми з різними мовами з ранньої стадії, а на другому курсі ми провели курс, який склав "мову місяця", симулятор (який використовується для моделювання) залишається моєю найлюбшою пам’яттю - хоча немає жодного шансу, що я міг би написати будь-який симуляційний код - головним чином через OOP, який він мене навчив (хоча я цього не знав)
Мерф

17

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

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

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

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

Ваша перша мова не так важлива, як ваше ставлення до наступних мов. Якщо ви бачите далеко перед собою, щоб знати, що існує світ поза BASIC / C / Perl / PHP / тощо, то ви далеко випереджаєте гру. Ось чому багато людей є фанатиками функціональних мов, оскільки багато активно розвинені мови сходяться до них.


1
Нам усім потрібно почати з цих основних понять. Коли хтось вивчає нову концепцію (візьмемо приклади дизайну як приклад), вони схильні використовувати її скрізь деякий час. Якби я не провів перші 5 років, які я програмував у структурі програм базового навчання, і як думати як програміст, тоді, коли я потрапив до ОО, я був би настільки зайнятий вивченням процедурної частини, на якій не міг би зосередитися на Частина ОО. При цьому, +1 для "Ваша перша мова не так важлива, як ваше ставлення до наступних мов" та понять .
Майкл К

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

О Майкл, твоя редакція настільки класніша, ха-ха-ха.
Марк Канлас

Якщо однокласники ОП стурбовані. Схема є неправильною мовою для вивчення, вони, мабуть, не все, що просвітлено. :)
Девід Молес

Деякі мови мають складний синтаксис, хоча насправді вони є простими (похідні С), інші мають простий синтаксис, будучи насправді складним (Groovy). Під цим я маю на увазі - в C / C ++ або Objective-C - речі є досить декларативними та процедурними в межах будь-якого діючого коду, тоді як у Groovy багато речей, що «відбуваються під кришкою», «заховані» синтаксичним цукром. Моя пропозиція для новачків, як правило, поєднуватись із складними мовами синтаксису, які ближче відображають те, як насправді працює комп'ютер - адже ці знання спрощують використання інших мов.
dcgregorya

11

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

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

Різниця між кар’єристом і тим, хто вчиться заради навчання. Кар’єрист переживає, що вони вивчать Неправильну річ, і що вони пошкодують, тому що це не буде правильною річчю, яка припаде мені на роботу. Людина, яка вчиться заради навчання, усвідомлює, що у них є 4 роки, щоб витратити час на вивчення всіляких полів з відносно керованим тиском; кар’єрист вважає, що завдання школи - навчити їх чомусь. Учень з'ясовує речі, потрапляючи на незнайомі території, і має більше шансів знайти для них саме потрібну роботу. Кар'єрист закінчує бухгалтера другої ставки у фірмі третього рівня, оплачує рахунки та обурює свого начальника.

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


9

Так, вивчення функціональних мов, таких як Scheme та Haskell, добре, як вступ до функціонального програмування. Що стосується ваших однокласників, які скаржаться на Perl, хоча Perl не настільки популярний, як раніше, це, безумовно, все ще широко використовується мова в бізнесі.

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


5

Можливо, тому, що на людей вплинули такі твердження, як класичний тролінг Едсгера Дійкстри, "Навчання хорошому програмуванню практично неможливо навчити студентів, які мали попереднє опромінення BASIC: як потенційних програмістів вони психічно понівечені поза сподіванням на відновлення". ( посилання )

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


5

Ваша перша мова повинна зосереджуватися на поняттях, а не на синтаксисі та ідіомах. Використовуючи це як настанову:

  • Perl означає чимало пошуку спеціальних змінних та прихованого синтаксису
  • PHP означає змішування понять через його органічний ріст
  • Java означає невелику плутанину, оскільки не все насправді є об'єктом
  • Складання / C / C ++ означає масу матеріалів низького рівня, що чудово, якщо ви хочете займатися розробкою вбудованих систем, але це шкодить концепціям вищого рівня
  • SQL корисний для того, щоб побачити, як природну мову можна (і не можна) відобразити на код та структури даних
  • Visual Basic для додатків зосереджується на спеціальних предметах, що викидаються, і, таким чином, робить занадто простим пропуск важливих понять, таких як правильне поводження з помилками та рефакторинг
  • LISP виглядає як простий синтаксис, але також має занадто багато скорочених виразів, відверто безглуздих без детального знання їхніх повних назв
  • Хаскелл часто дуже схожий на математику, але може швидко перерости в синтаксичний суп
  • Python ... Насправді Python є єдиною мовою, на яку я не можу знайти жодних серйозних заперечень для початківців. Можливо, просто тому, що це остання мова, яку я вивчив, і наступна мова навчить мене помилки моїх способів.

Я помітив, що ви нічого не писали про C # або VB.Net.
HK1

4

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

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

Не знаючи їх, я не можу з упевненістю сказати, чому вони почуватимуться так. Можливо, вони ліниві. Можливо, вони раніше вживали мову і не сподобалась. Можливо, вони бояться спробувати іншу мову. Хто знає. Що я знаю, це те, що, будучи студентом, дослідником і працюючи в галузі, знаючи різні мови, це величезне надбання, і ти ніколи не знаєш, чим ти будеш користуватися чи ні. Приклад: Коли я вперше вчився C, мій вчитель представив нам програми сценаріїв оболонок та утиліти командного рядка типу grepта awk. Мої друзі не намагалися вивчити це до рівня компетенції. Зараз я їх використовую на роботі щодня.

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

Perl дуже потужний, і якщо ви знаєте, як ним користуватися, це може зробити ваше життя набагато простішим. Це також схоже на Python, і Python широко використовується в одному з найкращих рекрутерів студентів CS: Google. Ваші однокласники повинні їсти це. FWIW, я знаю perl та python до проміжного рівня (не для початківців, але не для експертів).

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

Молодий і марний? Я був і таким. Але моє «роздратування» було більше в царині математики. Тож із цього досвіду я б загрожував, що вони над цим спрацюють, тому що їм не подобається вивчати нові речі або що нові мови важко їх вивчити. (Але тоді, все, що варто знати, не збирається просто впасти у вас на колінах)

Чи справді ви можете навчитися "неправильній" мові? Чи не вивчати щось на зразок схеми чи Haskell хороших розумових вправ, якщо нічого іншого, і корисно хоча б піддаватися різним способам вирішення проблем?

До першого речення: Ні, але ви точно можете вивчити мови, які б ви не хотіли мати + кашель + Лисп + кашель + =)

До решти: Так! Ви повинні вивчити якомога більше мов, щоб дізнатися, що вам подобається, та розширити свій кругозір. Немає вимоги оволодіти ними всіма, але володіння робочими знаннями завжди корисно. Ви ніколи не знаєте , коли мова ви думали , що було б марною тратою часу , щоб дізнатися пригождается.


1
Що з Ліспом?!?! :)
Майкл К

1
+1 для "вивчити якомога більше мов". Якщо ви знаєте різноманітність мов, вибирати одну для заданого завдання стає тривіально.
Майкл К

1
@Michael: Більше того, це полегшує засвоєння нового, оскільки ви знаєте більшість концепцій вже.
Девід Торнлі

@Michael: Нічого поганого з Lisp =). Я просто не хлопець на мові функціонального програмування. Плюс стільки круглих дужок !! Однак я бачив ДУЖЕ елегантні рішення, реалізовані в Lisp. Багато поваги до схеми та гуру Ліса.
аква

3

Оскільки наймання програмістів - це такий довільний, примхливий процес, простий факт полягає в тому, що якщо ви виберете неправильну технологію, ви можете опинитися на шляху додо

На головній сторінці в будь-який момент часу ви побачите поруч із релігійним запалом такі переконання, як:

  1. Ступінь коледжу з інформатики необхідний, щоб бути хорошим програмістом.
  2. Ступінь магістра з інформатики робить людей поганими програмістами.
  3. Сертифікати абсолютно необхідні для просування вашої кар’єри.
  4. Сертифікати - це червоний прапор, який вказує на поганого програміста.
  5. Ступінь коледжу в галузі, що не є інформатикою, як правило, приносить кращі програмісти.
  6. Ви не хороший програміст, якщо ви також не програмуєте вечорами та вихідними.
  7. і по ньому йде.

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


2

Я думаю, що страх у виборі "неправильної" мови для вивчення, головним чином, обумовлений нестачею інформації та відсутністю настанов , таких як:

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

Ось чому, наприклад, схема є такою чудовою мовою викладання. Програмування - це дві речі: абстрагування та повторне використання. Схема має рівно дві особливості: абстрагування функції та виклик функції (тобто повторне використання). Чорт, у нього навіть немає синтаксису!
Йорг W Міттаг

2

Ми піддаємося більшої кількості думок.

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

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


1

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

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


1

Чому це «страх». Я б назвав це ворожнечею, щоб силою годували те, чого не хочеш або не вважаєш це важливим. Жодна мова не є помилковою, але у нас обмежений час, щоб зосередитися на речах. Мені доводилося робити свої уроки CS з Java і не був радий. Не тому, що я побоювався, що Java не є мовою неправильної, але в моїй кар'єрі не було уваги.

Тепер Java корисна? LOL Усі навчаються Java. Це те, за що ви не хочете змагатись. Ваше резюме буде у складі 1000-х із заголовком «Недавній випускник CS», який знає Java. Насправді, напевно, краще за схему розумного навчання працездатності, тому що це таємний знак того, що ти пішов до елітного університету, а не до якогось дивного коледжу.

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

(PS MIT відмовився від схеми і перейшов на Python)


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

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

На практиці - вивчення нових мов легко, як тільки ви зрозумієте програмування. Люди рекомендують такі мови, як C, оскільки це вимагає від вас декларувати покажчики та розподіляти пам'ять та захищати доступ запису до ваших покажчиків ... коли ви думаєте, що в цих умовах все інше досить легко, тому що ви вже враховуєте всі ці речі. Важче зробити зворотне - починаючи з більш абстрактної мови, а потім будуючи досвід, щоб зрозуміти всі основні речі, що відбуваються.
dcgregorya

1

Час - найрідкісніший товар із усіх, коли ви виходите в реальний світ - і ніхто не хоче витрачати час на навички, які не принесуть їм реальної користі.

Попри це, я не думаю, що "неправильної" мови слід вивчати - але я б хотів, щоб я виявив Рубі років тому, а не боровся з передовими справами в PHP ...

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