Возможно, это только я, но, как нынешний студент CS, я уже сталкивался со многими вопросами на этом сайте и в других местах, а не просто "Какой язык я должен использовать для x?" но также "Кто-нибудь еще использует язык Y?" Мой первый CS-класс преподавался на Scheme, который, если я не ошибаюсь, не используется широко (по крайней мере, по сравнению с такими языками, как Java, PHP, Python и т. Д.). Многие из моих одноклассников воздерживались от мысли, что им придется изучать язык, который им больше никогда не понадобится, но я не совсем понимаю, откуда взялся такой большой страх перед изучением менее популярных языков. Нет, я не могу использовать Scheme на любой работе, которую получаю, но я, конечно, не жалею, что научился использовать ее (хотя и для начинающего, не очень углубленно в этом семестре). В этом семестре я беру уроки по поисковым системам, что делается в Perl, и снова я вижу, как одноклассники жалуются на выбор языка. Я могу понять, что у меня есть любимый язык и что он не любит других, но почему некоторые начинают беспокоиться о его изучении? Вы действительно можете выучить «неправильный» язык? Разве изучение чего-то вроде Схемы или Хаскелла не является хорошим умственным упражнением, если не больше, и полезно, по крайней мере, знакомству с различными способами решения проблем?
28
Ответы:
Суть степени CS не в том, чтобы научить вас C # и Java, вы можете изучать их самостоятельно. Его научить вас программированию и вычислениям. Язык это просто деталь. В течение карьеры в программировании вы будете использовать много языков. Сегодня это может быть Java или C #, но через 10 или 15 лет это может быть Erlang или что-то, что еще даже не было изобретено. Изучение разных стилей программирования и разных способов решения проблемы гораздо важнее, чем изучение какого-либо одного языка.
источник
Потому что ваш родной язык будет определять, как вы думаете, пока вы не научитесь иначе.
Если вы неграмотны в вычислительном отношении (начинающий программист), и первый язык, который вы изучаете, слишком «базовый», вы можете не знать о понятиях более высокого порядка, таких как ориентация объекта, множественная диспетчеризация, наследование, функции первого класса, метапрограммирование и т. Д.
Первый язык, который вы изучаете, обычно связан с вашим первым набегом в компьютерное мышление. Если кто-то скажет вам, Джимми, что мир перед вами состоит из символов A, B и C, все ваше мышление будет выражаться в терминах A, B и C. До тех пор, пока однажды не появится надуманный ботаник за то, что вы не знаете X , Y и Z концепции. Нет никакого способа узнать это, зная только ABC.
Люди, которые больше всего обеспокоены чьим-либо родным языком, вероятно, являются просвещенными программистами, которые боролись во тьме. О, теперь я знаю, что такое функция первого класса. Чувак, я бы хотел знать о внедрении наследования и зависимости два года назад!
Ваш родной язык не так важен, как ваше отношение к последующим языкам. Если вы видите далеко впереди вас, чтобы знать, что есть мир за пределами BASIC / C / Perl / PHP / и т. Д., То вы далеко впереди игры. Вот почему многие люди фанатики функциональных языков, так как многие активно развивающиеся языки сходятся к ним.
источник
Когда я учился в колледже, я знал многих людей, которые решили заниматься экономикой не потому, что они были особенно заинтересованы или увлечены ими, а потому, что они думали, что это даст им хорошую работу.
Я специализировался в восточно-азиатских исследованиях, потому что уроки, которые я взял в качестве побочного эффекта моего начального интереса к литературе, зацепили меня. Я поехал в Германию, потому что хотел сделать программу обмена, где я проводил большую часть своего времени в программах японологии и синологии. Я изучал то, что меня больше всего интересовало. Я решил не использовать колледж для изучения компьютерных вещей, так как в детстве я уже много занимался, но я потратил время на программирование и понимание интернета, и в конце концов, возможно, невероятно Я получил хорошую работу, которая сумела объединить все эти интересы.
Разница между Карьеристом и тем, кто учится ради обучения. Карьерист беспокоится, что они изучат «Неправильную вещь», и что они будут сожалеть об этом, потому что это не будет «Правильная вещь, чтобы дать мне работу». Человек, который учится ради обучения, понимает, что у него есть 4 года, чтобы потратить время на изучение всевозможных полей с относительно управляемым давлением; Карьерист считает, что задача школы - научить их чему-то. Ученик выясняет, когда они попадают на незнакомую территорию, и у него больше шансов найти для них подходящую работу. Карьерист заканчивает работу бухгалтера второго уровня в фирме третьего уровня, оплачивает счета и обижается на своего босса.
Да, это архетипы, и каждый должен уравновесить прагматизм со своими страстями, но это существенная разница. Конечно, кто-то с эстетическим программистом может также задать вопрос, но больше в контексте «какой из них будет наименее расточительным использованием моего времени». Но я полагаю, что этот вопрос задает импульс карьеристам, потому что Карьерист гораздо больше боится ошибиться, чем ученик, а ученик обычно делает программиста лучше, потому что ученик не боится ошибок. Ученик, как и Программист, принимает неудачу в погоне за навыком.
источник
Да, изучение функциональных языков, таких как Scheme и Haskell, полезно в качестве введения в функциональное программирование. Насколько ваши одноклассники жалуются на Perl, хотя Perl не так популярен, как раньше, он, безусловно, все еще широко используется в бизнесе.
Я понимаю, что ваши одноклассники хотят изучать практические языки, используемые в реальном мире, но я думаю, что они упускают тот момент, что, как только вы опытный программист и познакомились с несколькими парадигмами программирования, изучение новых языков - это в основном вопрос выбора новый синтаксис. Таким образом, пока вы знакомы с понятиями, вы можете «специализироваться» на любом языке, который предпочитает ваш потенциальный работодатель, без особых трудностей.
источник
Возможно, потому что на людей повлияли такие высказывания, как классический троллинг Эдсгера Дейкстры: «Практически невозможно научить хорошее программирование студентам, которые ранее имели опыт работы с Бейсиком: как потенциальные программисты, они умственно изуродованы вне надежды на возрождение». ( ссылка )
Это приводит к страху перенести постоянное повреждение мозга, если вы выучите «неправильный» язык. Ваш пример Perl неудивителен, так как Perl - один из тех языков, который часто вызывает подобную критику со стороны своих хулителей.
источник
Ваш первый язык должен быть ориентирован на понятия, а не на синтаксис или идиомы. Используя это как руководство:
источник
Спросите своих одноклассников, как они знают, что язык «неправильный», если они не использовали его. Вы можете понять, что вам нравится, используя самые разные языки.
Не зная их, я не могу с уверенностью сказать, почему они так себя чувствуют. Может быть, они ленивы. Может быть, они использовали язык раньше и ему не понравилось. Возможно, они боятся попробовать другой язык. Кто знает. Что я знаю, так это то, что как студент CS, исследователь и работавший в промышленности, зная различные языки, это огромный актив, и вы никогда не знаете, что собираетесь использовать или нет. Пример: Когда я только начинал изучать C, мой учитель познакомил нас с утилитами сценариев оболочки и командной строки, такими как
grep
иawk
. Мои друзья не удосужились изучить их до уровня компетентности. Теперь я использую их на работе каждый день.Perl очень мощный, и если вы знаете, как его использовать, он может сделать вашу жизнь намного проще. Он также похож на Python, и Python активно используется одним из лучших рекрутеров студентов CS: Google. Ваши одноклассники должны есть это. FWIW, я знаю Perl и Python для среднего уровня (не новичок, но не эксперт).
Молодой и тщеславный? Я тоже был таким. Но мое "раздражение" было больше в области математики. Так что из этого опыта я бы поспорил, что они взволнованы об этом, потому что им не нравится изучать новые вещи или что им трудно выучить новые языки. (Но тогда все, что стоит знать, не упадет вам на колени, говорю я)
К первому предложению: Нет, но вы определенно можете изучать языки, которые вы бы предпочли не иметь + кашель + Лисп + кашель + =)
В остальном: да! Вы должны изучить как можно больше языков, чтобы узнать, что вам нравится, и расширить свой кругозор. Нет необходимости овладевать ими всеми, но наличие практических знаний всегда полезно. Вы никогда не знаете, когда язык, который вы считали бесполезной тратой времени на изучение, пригодится вам.
источник
Поскольку найм программистов - это произвольный, капризный процесс, простой факт заключается в том, что, если вы выберете неправильную технологию, вы можете оказаться на пути додо
На первой странице в любое время вы можете увидеть религиозный пыл на такие убеждения, как:
Одна постоянная константа всего этого заключается в том, что 99% компаний хотят, чтобы у вас был X- летний опыт работы с Y- технологиями ... А поскольку у человека есть только столько доступных циклов, то что они тратят на эти циклы, очень важно.
источник
Я думаю, что страх при выборе «неправильного» языка для изучения в основном связан с отсутствием информации и отсутствием руководства , например:
источник
Мы подвержены большему количеству мнений.
По сравнению с тем, как, возможно, что-то было сделано в прошлом, у нас возникает еще одно предположение о том, как мы проводим наше время, потому что у нас больше мнений - у каждого свои мысли о том, каким должен быть первый язык программирования, и так как он такой привередливый субъект, любой может оправдать что угодно .
Из-за нашего стремительного образа жизни у всех есть врожденный страх тратить свое время. Подчеркнутый страх изучения неправильного языка является просто результатом того, что люди легко подвергаются воздействию множества мнений.
источник
Это общая неприязнь к изучению чего-то, что имеет сомнительную полезность. Я вижу, что жало здесь еще хуже, так как это тот класс, который люди хотят посещать, и они все еще учатся чему-то, что они считают бесполезным. Я знаю, что если бы я собирался коллаж, я хотел бы узнать что-то, что я могу использовать в реальном мире.
Единственная часть, где я могу не согласиться с этими людьми, это когда язык активно используется, и они просто не хотят выходить за пределы своего пузыря, чтобы выучить его. Только тогда жалобы не имеют смысла.
источник
Почему это «страх». Я бы назвал это враждебным отношением к принудительному кормлению, которое вы не хотите или не считаете важным. Нет неправильного языка, но у нас ограничено время, чтобы сосредоточиться на вещах. Я должен был делать свои уроки CS с Java и не был доволен этим. Не потому, что я боялся, что Java будет неправильным языком, но это было не то, на чем я сфокусировался.
Теперь Java полезна, верно? LOL Все учат Java. Это то, за что вы не хотите конкурировать. Ваше резюме будет в стеке 1000-х годов с заголовком Недавний выпускник CS, который знает Java. На самом деле, вам, вероятно, лучше учиться по схеме трудоустройства, так как это секретный признак того, что вы поступили в элитный университет, а не в какой-то хреновый общественный колледж.
Я также сказал бы, что подобная враждебность намного шире, чем CS в целом, но свидетельствует о высшем образовании в целом. Я уверен, что преподаватель выбрал Perl, потому что он знает Perl, и может легко оценить его, и боится изучать новые языки, которые студенты скорее изучат. Я думаю, что это ваше собственное образование, и вы должны быть в состоянии наметить технологии, которые вы считаете необходимыми для вашего собственного успеха.
(PS MIT отказался от схемы и переключился на Python)
источник
Время - самый редкий товар из всех, когда вы выходите в реальный мир, и никто не хочет тратить время на навыки, которые не принесут им никакой реальной выгоды.
При этом, я не думаю, что есть «неправильный» язык для изучения - но я бы хотел открыть Ruby много лет назад вместо того, чтобы пытаться делать сложные вещи в PHP ...
источник