Я программировал много лет, но хотел получить диплом, чтобы стать более трудоустроенным. Однажды, уже окончив университет, я выбрал не 5-летнюю специальность по информатике, а более короткую, более ориентированную на практическую реализацию программу разработки программного обеспечения .
Я ожидал, что это могло бы сосредоточиться больше на конкретных навыках, чем на теории, но все же была идея, что университетам и преподавателям нравятся вещи, которые должны быть правильными, формальными, академическими. Это все еще наука, верно? Неправильно - я был удивлен тем, насколько неряшливы были многие IT-курсы.
Во вводном курсе по C ++ мы тестировались на такие фразы, как «почему глобальные ошибки плохие» и «почему хорошие константы», после того, как были написаны 1-2 программы. Случайные анекдоты без надлежащего контекста. Раздаточные материалы содержали system(pause/cls)
, getch
а заголовки вроде conio.h
и iodos.h
. Одна из задач состояла в том, чтобы напечатать «символы ASCII» с 32 по 255 со скриншотом, показывающим такую таблицу, напечатанную с использованием кодовой страницы Windows-1252, но без упоминания кодировки вообще.
Вопрос : когда университет / профессор, кажется, использует устаревшие и / или устаревшие инструменты и методы, а содержание, которое преподается, является некорректным, как вы относитесь к нему конструктивно и с уважением, если вообще?
В некоторых ответах указывается, что вы должны выходить за рамки программирования, поскольку это просто инструмент для изучения таких тем, как структуры данных и алгоритмы. Я согласен с этой идеей, но в этом случае не было такого плана за плохим стилем. Большинство курсов просто обучают другому «инструменту» без какой-либо теоретической базы или какой-либо «большой картины». Часто казалось, что их быстро соединяют ради того, чтобы предложить такой курс.
Я застрял с этим и, наконец, закончил. Качество оставалось довольно низким (за некоторыми исключениями), и несколько других студентов жаловались на это. Как и ожидалось, я узнал намного больше из личных проектов и рабочих мест с частичной занятостью, чем из школы, однако процесс окончания школы и ярлык «студент-программист» кажутся таинственно полезными сами по себе!
Ответы:
Математика и программирование - это совершенно разные вещи. Математика - это наука, программирование - это техника. В академическом мире программирование - это то, что вы должны знать, чтобы иметь дело с реальными вещами, которые на самом деле интересны и важны - с алгоритмами.
Кому интересно, если компилятор древний и вы используете
system
вызовы? Кого волнует, если у вас Linux, а не Windows? Ну, профессора нет, это точно. И они не должны, на самом деле. Не надейтесь стать профессиональным программистом на курсах в академическом учреждении. Это не то, что вы идете туда.Это правда, что компилятор, который он ожидает от вас, является древним, а предположение об ОС анахронично и проблематично. Вы можете поднять это, и, возможно, это будет иметь дело. Но не потому, что курс несовместим с отраслью, а потому, что он вызывает непосредственные трудности для студентов. Найдите этот старый компилятор и запустите его на вашем MacBook ...
В целом, академические исследования не должны быть потрачены впустую на изучение C ++ и Android, вы должны изучать реальные знания информатики там. У тебя не будет другого шанса для этого. Android? Скачайте Eclipse с ADT и начните работать над ним дома, как я. Мне не нужна школа для этого.
Я думаю, что не стоит ожидать развития техники от университетов. Особенно в исследовательских университетах. Можно сказать, что место, которое предлагает только бакалавров, должно быть более ориентированным на отрасль, а исследовательские университеты - нужны исследователи. Профессора ищут перспективных аспирантов и кандидатов наук, а не отличных программистов. Поэтому я думаю, что вы должны установить свой уровень ожиданий соответственно.
источник
Информатика - это программирование, а физика - столярное дело.
Если вы хотите стать плотником, изучение физики не поможет этому. Он научит вас многим интересным вещам, которые вы, возможно, сможете применить к своей работе, но не научит, как стать хорошим плотником. Для этого вам придется освоить ремесло столярного дела.
Точно так же, если вы хотите стать хорошим программистом, вам придется научиться ремеслу программирования . К сожалению, не существует учреждения, которое бы выдавало какие-либо сертификаты. Так что, по сути, это то, что вам придется делать самостоятельно, с любой помощью, которую вы сможете найти. Для вас это означает повторение и размышление. Напишите много кода, а затем вернитесь, чтобы посмотреть на него. Также найдите время, чтобы прочитать чужой код. Рассмотрите возможность участия в проектах с открытым исходным кодом.
Университеты не очень заботятся о программировании и тем более о деталях, которые изменятся в течение следующих нескольких лет. Что вы видите в своей школе, так это то, что они выбрали некоторую среду программирования (плохую, но это не так важно) и теперь показывают ее вам, чтобы у них была справочная система, в которой они могут научить вас различным методам программирования. Можно утверждать, что система отсчета плохая и что даже язык - странный выбор. С их точки зрения это, вероятно, не имеет значения, потому что оно выбрано совершенно произвольно.
источник
Нет ничего плохого в изучении стиля DOS. Я уверен, что многие из старожилов здесь начинали с DOS, или даже с более ранними операционными системами, написанием линейных программ, и настроились очень хорошо. Компьютерный мир меняется так быстро, что я не буду зацикливаться на таких особенностях, как, например, какая библиотека использовалась для чего.
На самом деле, я подозреваю, что причина, по которой у нас есть мир, полный программистов, которые могут рассказать вам, что такое внедрение зависимостей , но изо всех сил пытающихся ответить на FizzBuzz , заключается в том, что многие программисты не проводят много времени на этом самом базовом уровне.
Похоже, что это введение в программирование, поэтому, по сути, не беспокойтесь об этом. Изучите основы, и у вас все получится. Если вы заинтересованы в других платформах, изучите их самостоятельно. Это отличная вещь о программировании.
источник
Как вы можете справиться с этим? Скачайте электронные книги по программированию или потоковое видео, попробуйте примеры самостоятельно. Не зависит от ваших профессоров. Программирование высоко изучено самостоятельно.
источник
Во многих университетах есть профессора программирования. Я учился в одной из лучших аспирантур в моей стране и научился приседать в программировании. Я думаю, что большинство юниоров таковы, потому что действительно хорошие программисты выбирают более высокооплачиваемую работу (а не преподавание). Вам следует заняться небольшим проектом и попытаться написать его самостоятельно. Вы можете получить советы от многих форумов, таких как этот. Это может быть лучшим способом обучения в долгосрочной перспективе.
источник
Я думаю, что университет должен преподавать абстрактные понятия языков программирования, алгоритмов и т. Д. И не должен быть тем местом, где вы изучаете программирование: программирование - это очень практическое занятие, и вы можете изучать его только на практике.
Во время учебы я изучил основы программирования на Pascal, затем у меня был один проект на C (мы должны были изучать язык самостоятельно), а затем у меня был курс по понятиям языка программирования (процедурный, объектно-ориентированный, функциональный, логический). , Фольклором было то, что в MSDOS у вас есть conio.h или далеко указатели, которых нет в системе UNIX. Это было то, что мы, студенты, обсуждали за пивом, это не было тем, что вы обсуждали на уроках, потому что это было не так важно. Преподавание в университете фокусируется на абстрактных, общих знаниях и избегает углубления в детали: примеры и детали представлены только для иллюстрации общих вещей.
Пример, который вы привели в отношении ASCII против Unicode и библиотеки MSDOS conio.h, означает, что в каждой среде программирования есть свой особый способ выполнения и организации чего-либо. Если вы программируете на C ++ в Visual Studio, вам придется использовать другие библиотеки, некоторые из которых не найдены, например, в Linux. Поэтому, если бы курс проходил в Windows 7 / Visual Studio, некоторые люди могли бы жаловаться, что было бы лучше сделать это в Linux / GCC. Но, IMO, это не главное.
Итак, я думаю, вы должны постараться не отвлекаться на детали и сосредоточиться на общих понятиях, которые рассматриваются в курсе. Например, что в большинстве языков программирования вам потребуется некоторая библиотека для реализации консольного ввода-вывода и что, учитывая среду программирования, вам придется решать свою проблему с помощью имеющихся у вас инструментов. Может быть, это звучит для вас совершенно очевидно, и у вас создается впечатление, что вы на самом деле не изучаете что-то, потому что у вас уже есть некоторые предварительные знания (это может случиться), но у меня не сложилось впечатление, что вы посещаете плохой курс.
источник
Университеты дают основания. Как только он станет сильным, вы сможете строить небоскребы на его основе. Я изучал основы, C и C ++ во время учебы в колледже. Позже, когда я делал проект в Visual C ++, я полагал, что это совершенно другой мир. Позже я понял разницу между фреймворком и языками.
Выберите правильный университет, где они дают целенаправленное развитие вашей области вычислительной техники. Который может помочь вам позже в вашей карьере.
источник
Полные распечатки на
system("");
самом деле - чертовски хорошая вещь! Я шокирован, что люди ничего не знают об этих функциях в настоящее время.system("pause")
и вы избавляетесь от всех ошибок функций getX.system("cls")
, и вы только что сохранили одну страницу кода.system("mkdir foo")
и вы только что сохранили 2 страницы размещения буферов, разделения пути, _makepath_ss, 256 путей, тонны выходов ошибок и так далее.Более того, код настолько прост, что обезьяна это поймет.
Школа полиморфных извращений - это то, что должно быть запрещено законом.
PS: Более того, при всем моем уважении, я с трудом признаю, что людей учат С ++ с исключениями и виртуализируют все как ХОРОШУЮ вещь, потому что в нем больше ловушек и мин, чем вы можете себе представить, и даже Бьярн Страуструп проповедует исключения как что-то супер легкое и безопасное, в то время как на самом деле это ядерная мина.
Смотрите анализ о Misra-C ++ и JSF-C ++. И http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Мне лень найти все оставшиеся статьи сегодня.
При всем этом я являюсь разработчиком на С ++, и мне очень нравится множество функций и языка в целом.
источник
Мое предложение может звучать там, но выслушать меня ... Переключить специальности.
По моему опыту в академической сфере, специальность «Компьютерные науки» была очень низкоуровневой, чтобы понять, что заставляет компьютеры работать. Вы начали с базового учебника по C ++, чтобы убедиться, что знаете, что такое программа, а также основы памяти и вычислений, лежащих в основе этой программы, а затем вы изучили сборку, концепции ОС, электротехнику, цифровой дизайн и т. Д. И т. Д. эту степень и ищите для работы с NVidia или AMD, или Lockheed; где-то, где они производят новое оборудование, которому нужен кто-то, кто может понять это оборудование на достаточно низком уровне, чтобы писать драйверы и управлять программным обеспечением.
Похоже, что вы хотите, это курс обучения, который в моем университете назывался Управление информационными системами. Это курс, которым я следовал; Он научил программированию на Java, VB.NET, C #, а также немного PHP и других веб-сценариев. Это также требовало исчисления (но не в такой степени, как CS), бухгалтерского учета, финансов, статистики, бизнес-коммуникаций, OO A & D, проектирования баз данных и системного анализа. Я получил BBA вместо BS, и у меня были основные инструменты, чтобы начать работать в качестве разработчика программного обеспечения для Windows или Web.
То, к чему вас готовит специальность «Информатика», во многом зависит от того, какой университет его предлагает. Похоже, вы на раннем пути, чтобы получить очень анахроничный, низкоуровневый взгляд на компьютеры, которые не похожи на то, что вы ищете из своего образования. Я призываю вас осмотреться в университете и найти учебный курс, в котором больше внимания уделяется типу компьютерной работы, которую вы захотите освоить после школы.
Неважно, что ваш курс обучения начнется с самого базового написания программы на уровне консоли. Язык не имеет значения; то, чему вас учат, - это базовое процедурное программирование; как думать достаточно маленькими шагами, чтобы компьютер мог следовать за вами от шага к шагу (потому что компьютер ничего не воспринимает как должное и не может выполнить большинство человеческих прыжков в логике). Оттуда вы перейдете к объектно-ориентированному программированию (вместо одной длинной функции, которая делает все, гораздо удобнее поддерживать несколько меньших «объектов» кода, которые представляют состояние и логику объектов реального мира), затем программирование, управляемое событиями («Не звоните нам, мы вам позвоним»; ваша программа в основном запускается, говорит ОС настроить исходный графический интерфейс пользователя,
источник
Курсы информатики не научат вас программированию. Это прогулка в парке по сравнению с некоторыми из программ, которые я делал на моем курсе CS.
По моему опыту, основная проблема заключается в том, что практически нигде не научит вас программированию на эквивалентном уровне, поэтому у вас нет выбора.
источник
Я думаю, что может быть некоторая путаница в том, что и почему вы изучаете.
Похоже, что вы изучаете вводную программу информатики. Он предназначен для людей с минимальным опытом, которые изучают основы работы компьютеров на низком уровне.
Также кажется, что вы полусерьезный или профессиональный программист. Вы программируете в течение 10 лет и владеете 3 языками. Похоже, вы знаете, что делаете, по крайней мере, достаточно, чтобы работать в команде. Вы чувствуете себя неуместно в этом курсе? У других студентов такой же уровень опыта или навыков, как у вас?
Что вы собираетесь выбраться из этого курса?
Вы только после этого «клочка бумаги»? Если это так, не переставайте пытаться устроиться на работу во время учебы. Подайте заявку на работу, скажите им, что вы компетентный программист, и вы учитесь, потому что вам нужен лист бумаги, чтобы получить работу. Если вас нанимают, подумайте о том, чтобы уволиться - если у вас есть профессиональная работа, вам больше не нужен этот листок бумаги. Принять более низкую, чем обычно, заработную плату, потому что лучше учиться (на работе), чем платить за учебу учебу в школе - и вы тоже учитесь быстрее. Через год или два вы будете в основном в курсе, а затем вы можете попросить о достойном повышении заработной платы, или вы можете найти себе другую работу, потому что у вас будет опыт.
Или вы пытаетесь чему-то научиться?Тогда перестань судить своего профессора. Как незабываемый учитель старшей школы, который обычно говорил: «Сядь и заткнись». Почти гарантировано, что у профессора неизмеримо больше опыта и знаний, чем у вас, и вы могли бы многому научиться у него. Если он идет слишком медленно для вас, постарайтесь получить кредит на эти вводные курсы, основываясь на вашем предыдущем обучении и опыте.
Но вы в правильном направлении? Вы также могли бы многому научиться у профессора литературы или профессора истории ... не особенно актуально. Возможно, вы не хотите «информатику», а вместо этого хотите получить более практические навыки «реального мира». Попробуйте «программную инженерию». Посмотрите на другие учреждения для более целенаправленного курса.
Точно так же, как когда вы начинаете новую работу, урок или курс обучения могут быть очень трудными для обзора извне. Вы, кажется, находитесь в курсе, который не дает вам то, что вы ожидаете. Пересмотрите ваши варианты.
источник
Я думал, что многие ответы на этот вопрос были разочаровывающими. Они вернулись к усталому старому спору о CS против программирования и т. Д. Это может быть так, но мне кажется, что курс, на котором работает OP, тоже не учит.
Я был в ситуации, когда я уже работал программистом и учился сам, прежде чем учиться на полставки в колледже. Я осторожно ходил по магазинам, но обычно считал, что учебная программа - пустая трата времени. Также они не позволили бы мне пропустить курсы, несмотря на то, что у меня уже есть профессиональный опыт в этой области.
По моему опыту, значительная часть профессоров довольно ленивы и используют устаревшие учебные программы. Честно говоря, звучит так, как будто ты тратишь время впустую. Я даже сомневаюсь, поможет ли получение диплома найти работу.
Я сомневаюсь, что вы можете многое сделать для изменения курса. Вы можете дополнить его учебой самостоятельно. Или просто забудьте все это, и изучите CS самостоятельно, а также сделайте несколько отраслевых сертификатов.
Я должен добавить, что понятия не имею о ценности диплома на рынке труда вашей страны. Если диплом сам по себе является ценным, несмотря на его содержание, вам, возможно, придется смириться с учебной программой, которая в некоторой степени отсутствует.
источник
Они должны обслуживать студентов. Большинство студентов не могут программировать. Таким образом, они не вынуждены идти туда технически.
У них тоже есть свои специализированные области исследований, но они этому не учат. В любом случае, многие исследователи не являются хорошими учителями, так что вы можете считать себя счастливчиком, если они преподают то, что вы уже знаете!
Во всяком случае, вы, кажется, не знаете, что такое информатика. Дело не в том, что практично для промышленности.
источник
Я хотел бы попросить (а затем настаивать), чтобы вернуть ваши назначения в стандарте C ++. Это вполне разумно, так как вы не можете выполнить задания в противном случае.
Что касается плохого стиля; с самого начала неизбежно будет что-то из этого. Чтобы правильно использовать стандартную библиотеку io, требуется немало продвинутых функций c ++, в частности шаблоны и итераторы. Я понимаю, почему лектор заставляет вас использовать очень простые функции io для начала. Я не побоялся бы спросить об этом, хотя, это показывает энтузиазм и немного света в ваших глазах. Ваш лектор должен быть в состоянии включить ваш вопрос в будущую лекцию, где вы (надеюсь) исправите свои ранние упражнения.
Я бы оставил все как есть. Хотя c ++ может быть независимым от платформы языком, часто это не так. Изучение некоторых системных функций Windows не является плохой вещью, особенно если вы научитесь делать это по стандарту. В какой-то момент вы столкнетесь
conio.h
при взгляде на код других людей - и хорошо знать, что он делает.источник