Является ли изучение C # как первого языка ошибкой? [закрыто]


26

Я знаю, что здесь есть похожие вопросы, которые я прочитал, но недавно я прочитал этот пост Джоэла Спольски:

Как я могу научить умного человека без опыта программирования, как программировать?

И это заставило меня задуматься о своем способе обучения и о том, может ли это быть на самом деле вредным в долгосрочной перспективе.

Я баловался с разными языками, но C # - мой первый серьезный, я прочитал "Head First C #" и создал несколько проектов. Но после прочтения поста, приведенного выше, я немного разочаровался тем, что могу ошибаться, очевидно, я уважаю мнение Джоэла, и это меня немного смутило.

Я начал читать «Код», как рекомендовано в списке чтения, и нахожу его довольно трудным, хотя и приятным. Я чувствую, что это сняло блеск с моего "хулиганского хакерства" в Visual Studio.

Так что теперь я не уверен, по какому пути мне идти? Должен ли я сделать шаг назад и последовать совету Джоэла и начать читать?

Я предполагаю, что моя главная цель - просто стать хорошим программистом, как и все остальные, но я не хочу впадать в дурную практику, изучая язык .NET, когда кто-то, чье мнение я уважаю, считает его вредным.

Мысли?


4
Изучение CS трудным путем может быть выполнено, но только если у вас есть хороший учитель.
Работа

5
C # не был моим первым языком, на котором был VB.net, и я могу сказать, что важно не то, как вы начали. Я думаю, что C # будет отличным начальным языком, просто не забывайте всегда спрашивать себя, почему все делается так, как есть.
Даниэль Литтл

23
Нет. Любой язык как первый язык хорош для изучения теории информатики. Конечно, чтобы сделать карьеру, некоторые языки лучше других, но в учебных целях все хорошо. Некоторые из лучших программистов, которых я знаю, начинали с BASIC на C64, Apple II или TI-99 / 4A. Это не сгнило в их мозгах, но подтолкнуло их к следующему языку, а затем к следующему.
Джесси С. Слайсер

5
Кроме того, это зависит от того, что вы планируете делать с этими знаниями. C # решает проблемы бизнеса изо дня в день, когда я работаю. Я не смотрел на C в течение двух десятилетий, и я чувствую неприязнь, когда приходится.
Джесси С. Слайсер

19
Изучение чего-либо никогда не является ошибкой. Это всегда намного лучше, чем не учиться .
SK-logic

Ответы:


80

Я занимался различными языками, но C # - мой первый серьезный, я прочитал «Head First C #» и создал несколько проектов. Но после прочтения поста, приведенного выше, я немного разочаровался тем, что могу ошибаться, очевидно, я уважаю мнение Джоэла, и это меня немного смутило.

Я тоже уважаю мнение Джоэла, но это всего лишь мнения . Нет ничего плохого в использовании C # в качестве исходного языка.

Самый большой совет , который я могу вам дать, или кто -либо делать какие - либо программирования (даже если они , начиная с ванильным C!), Чтобы не быть на прежнем уровне, а не быть религиозным . Мне все равно, с какого языка программирования вы начинаете, или насколько чист или праведен этот язык - в наше время вы не можете позволить себе сидеть только в мире программирования.

Например, я начал программировать на PHP3, когда был подростком. Я создал несколько небольших веб-приложений и несколько веб-сайтов; Я думал, что я гениальный программист, и что я могу делать все с PHP3, и нахмурился на людей, которые были все о ASP или BASIC. Мальчик, я был неправ.

Я не начинал расцветать как разработчик, пока не начал расширять свой кругозор и изучать другие языки программирования и концепции. В старших классах я выучил немного RealBASIC, а затем Visual Basic. После бизнес-школы, когда я стал профессиональным разработчиком, я начал изучать C # и Javascript по-настоящему.

Не поймите меня неправильно - я не защищаю вас от попыток быть мастером на все руки. В глубине души и в торговле я все еще программист на PHP. PHP - мой хлеб с маслом, и я знаю это от и до. Однако мои навыки PHP не стали тем, чем они занимались. Вот некоторые очень важные понятия, которые я не понял из PHP, несмотря на профессиональную работу в нем.

  • Javascript: закрытие
  • JQuery (да, отдельно): DOM и Ajax
  • Visual Basic: объектно-ориентированное программирование
  • C #: Обобщения и замыкания
  • Ruby (on Rails): сила дизайна MVC

Я мог бы продолжать, как и многие другие на этом сайте, в течение нескольких дней. Несмотря на то, что я программист на PHP, я смог привнести все эти замечательные концепции обратно в работу, которую я делаю каждый день.

В чем моя точка зрения? Изучите C #. Станьте мастером C # - у вас будет долгая, успешная карьера, и вы, вероятно, совершите некоторые удивительные вещи. Но не прячитесь. Путешествуйте и пробуйте другие языки, среды и концепции.


+1: @toleero - C # или Java отлично подходят для обучения. Джоэл и Пол Грэм, победившие средние, пытались решить проблему, когда разработчики зацикливались на выбранных языках, как указывалось, что это слишком часто встречается.
Джастин Шилд

Между прочим, Objective-C также учит MVC, но он менее условен.
Моше

4
+1. На мой взгляд, вы не можете быть по-настоящему великим разработчиком и мастером своего основного языка, не изучив и не поиграв с другими языками. Это лучший способ расширить свои знания и по-настоящему оценить сильные стороны вашего основного языка.
Никлас Х

3
+1. Ключ от этого - слова, которые он выбрал жирным шрифтом. Слишком легко выучить что-то вроде Java и C # или даже C и потратить 10 лет своей жизни на написание кода, как вы всегда это делаете. Нажимай себя, изучай новый язык каждый год. Вопрос: что вы делаете, попробуйте найти лучший путь. И самое главное, оставайтесь на связи с программистами и StackOverflow.
Эндрю Финнелл

Вы можете сделать все эти примеры в C #. Dom / ajax: библиотеки C # xml и ajax. Объектно-ориентированный? Проверьте. MVC? Asp.net MVC рамки.
Карра

21

когда кто-то, чье мнение я уважаю, думает, что это вредно.

Это напоминает мне историю с участием Ричарда Фейнмана. Студент в Калифорнийском технологическом институте спросил выдающегося космолога Майкла Тернера, в чем заключается его «предвзятость» в пользу того, чтобы выбрать тип частицы в качестве кандидата на включение темной материи, и Фейнман резко сказал: «Почему вы хотите узнать его предвзятость? ... Не обращай внимания на власти, думай сам. "

Программисты приходят из всех слоев общества. В наши дни во многих средних школах и колледжах преподают яву, но она даже не была изобретена, когда Джоэл Спольски учился в школе. Нет единого верного пути, когда дело доходит до того, чтобы стать хорошим программистом. Конечно, есть классика, такая как SICP, с которой в какой-то момент сталкивается большинство программистов, но нет жесткого и быстрого стандарта. Главное - начать с чего-то и сосредоточиться на построении концепций. Великий программист однажды сказал что-то вроде:

Плохие программисты сосредотачиваются на коде, хорошие программисты сосредотачиваются на алгоритмах.

Я думаю, что C # - хороший язык для начала, но я предупреждаю вас быть осторожным с Visual Studio. Это потрясающая IDE, но если вы перетаскиваете a DropDownListи привязываете GridViewк a ObjectDataSourceи используете элемент Buttonуправления для выполнения DropDownListпоиска на основе, то большая часть работы выполняется в IDE, и вы на самом деле не программируете. Воспользуйтесь преимуществами инструментов IDE, но всегда старайтесь создавать концепции и развивать знания.


Отличный ответ.
Ясир

3
Сначала вы говорите: «Хорошие программисты сосредотачиваются на алгоритмах», затем вы говорите: «Работа выполняется в среде IDE, а вы на самом деле не программируете». Что он? Я могу написать программу, правильно выполнять рабочий процесс и не заботиться о «деталях реализации», таких как GridView и DropDown (при условии, что я знаю достаточно, чтобы выбрать правильные и как правильно их реализовать). +1 для остальной части вопроса, но использование IDE не мешает вам быть хорошим программистом.
WernerCD

@WernerCD - Когда я сказал, что "работа выполняется в IDE", я имел в виду конкретный пример, который я привел. Если вы возьмете ребенка, который никогда не занимался программированием, и попросите его следовать пошаговым инструкциям в IDE, он создаст рабочую страницу, но он не программирует. Я думаю, что IDE невероятно полезны для программирования, но как новичку лучше понять, что такое рекурсия, а не перетаскивать элементы управления.
Блэкджек,

2
@Graham - Извините, но я не согласен. Он не пытается изучать IT или разработку программного обеспечения - он пытается изучать программирование. Инструменты IDE, на мой взгляд, лучше оставить на потом, когда вы на самом деле будете компетентным программистом.
Блэкджек,

16
Ключ в том, что хороший разработчик не верит в магию . Работа, выполняемая IDE (или любым другим инструментом), является удобством, ярлыком, но не заменой понимания .
Беван

7

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

Один программист прокомментировал ответ Джоэла: « как человек, которому приходилось биться головой о« программистов », которые очень рекомендовали свои способности в C #, но не могли делать простые вещи, такие как реализация очень хорошо документированного базового класса, найдите утечки памяти в программах на c и c ++ " ...

Но почему обнаружение утечек памяти в приложениях C ++ должно быть простым для того, кто никогда не утверждал, что знает C ++? :) Я не понимаю. Это все равно что критиковать психолога за отсутствие навыков стоматолога. Я , конечно , не очень хороший программист, но я чувствую , что это происходит не потому не знаю , C ++ - это потому , что я не знаю достаточно хорошо , рамки и языки , которые я имею помощью.

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

Хорошо, но - корреляция не означает причинно-следственную связь, и что заставляет нас предполагать, что их отсутствие общих навыков программирования - в чем я не сомневаюсь - является результатом их выбора языка?

Или эффект того, что C # является их первым языком выбора?

Я могу увидеть другие правдоподобные объяснения (возможно , C # это просто модно, и , следовательно , он привлекает много новичков ... большинство людей , для которых C # является первым языком не были программирования очень долго вообще , и это больше форы в его собственное право, чем никогда программирование на каком-то другом языке ... и т. д. и т. д.).


Это больше похоже на критику плотника, который может использовать только электроинструменты. Даже в языках с сборкой мусора знание того, как долго ваши переменные должны зависать, является фундаментальным навыком. Если вы не можете распознать предполагаемое время жизни переменной с явным freeзрелищем в лицо, как вы узнаете ее в программе, написанной на языке, который не дает таких подсказок?
Карл Билефельдт

1
Я понимаю вашу точку зрения. Я знаю , что самые основы жизни переменных (примерно столько же , сколько мне может понадобиться в C # на ежедневной основе: сфера, using, IDisposable, обработчики событий ссылки своих слушателей и т.д.), но я не мог даже всерьез пытаться диагностировать память утечка в приложении C ++, потому что я даже не знаком с синтаксисом! Я не знаю, что означает звездочка.
Конрад Моравский

5

Я бы сказал, что изучать один язык и придерживаться его - это больше ошибка, чем решать, с какого языка начинать. Есть некоторые языки, которые вы можете выучить, которые, конечно, легче, но лучше попробовать и начать изучать тот, которым вы будете часто пользоваться (в школьной обстановке выбор языка уже сделан школой). После того, как вы правильно выучили язык и активно использовали его через несколько месяцев, вам следует побаловаться с другим языком программирования и сравнить.

В .NET вам легко использовать два ( вроде ) разных языка программирования, поскольку вы можете переключаться между Visual Basic и C #. Таким образом, вы можете изучить Visual Basic и увидеть, в чем различия. На этом уровне вы должны быть опытными в базовом процедурном кодировании с тремя базовыми структурами программирования, если вы можете проявить творческий подход ко всем (и знать, как использовать переменные), то вы на пути к тому, чтобы стать великим программистом:

  • Последовательность - Код пишется в последовательности шагов, которые следуют друг за другом заданным вами способом (определяет «переход», пошаговый и переходный период)
  • Условно - код может иметь точки принятия решения (определяет операторы if, операторы switch-case)
  • Зацикливание / Повторение - Код может повторяться, если какое-то решение (которое является расширением обоих выше, определяет циклы for, do-while-loop)

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

Исходя из этого, по крайней мере, один раз в год, попробуйте выучить новый язык программирования, который следует другой парадигме программирования . Вам не нужно полностью идти в ногу с новым языком, но есть некоторые преимущества, чтобы знать другие парадигмы. Существует несколько парадигм, и некоторые языки программирования смешиваются между многими (обратите внимание, что C # на самом деле имеет подмножества следующих трех):

Самые важные вещи, которые вы должны знать, это то, что многие языки программирования следуют своим собственным идиомам и базовому API. Поэтому, когда вы изучаете новый язык, постарайтесь хорошо выучить эти идиомы и API, и у вас все будет хорошо, когда вы будете создавать вещи. Одна хорошая причина в том, что вы станете лучше в разработке и решении задач программирования. Некоторые идиомы на одном языке могут дать вам представление о том, как решить проблему на вашем основном языке.

Также знайте, что есть и еще одна очень веская причина, по которой вы должны изучать другие языки программирования, помимо основного, который вы будете использовать чаще всего: ваши шансы на трудоустройство намного выше.


5

В центре вашего вопроса и многие ответы здесь на C #. Из Википедии :

Язык C # предназначен для того, чтобы быть простым, современным, универсальным, объектно-ориентированным языком программирования.

Исходя из этого, можно с уверенностью сказать, что вы можете выучить C # как первый язык, не нанося долговременного вреда своему мозгу. Я не думаю, что Джоэл осуждает весь язык, хотя, когда он написал :

Попытки использовать ярлык и перейти непосредственно к изучению того, что вы хотите изучить прямо сейчас (например, начиная с C # и ASP.NET), обречены.

Проблема не в языке, а в ярлыках. Слишком часто люди пытаются идти быстрым путем к своей конечной цели, следуя пошаговым учебным пособиям или «изучая все за 24 часа». Вам не нужно тратить слишком много времени на переполнение стека, прежде чем вы заметите, что есть много вопросов в духе: «Я никогда не писал ни строчки кода в своей жизни, но я вхожу в iPhone программирование! Может кто-нибудь дать мне пошаговые инструкции, чтобы делать именно то, что я хочу делать? Спасибо! " Я не говорю, что вы придерживаетесь этого подхода, но это то, от чего вы должны остерегаться.

Если вы хотите развить хорошие навыки программирования, вы должны начать с изучения базовых навыков. Если вы попытаетесь перейти непосредственно к приложениям ООП и GUI и т. Д., Вы, вероятно, пропустите эти основы. Книги, на которые указал Джоэл, действительно очень хороши. Я только просмотрел Желтую Книгу C # (PDF), но похоже, что это, вероятно, лучшее введение в программирование, чем большинство книг по C #, которые я вижу в магазинах.


Я хотел бы отметить, что формулировка не "не учите C #", это "C # и ASP.NET" (выделение добавлено). Я не программист на C #, но .NET и CLR - отличная платформа для обучения.
августа

5

Для меня этот материал в этой другой статье немного напоминает элитарную чушь. Да, я часто рекомендую SICP серьезным разработчикам, которые действительно хотят поправиться, но только тем, кто хочет выйти за рамки «нормы» и постичь глубокую магию. В течение многих лет SICP был стандартным программным текстом для новичков в MIT; но многие работающие программисты никогда не имели возможности посещать это прекрасное, но дорогое и очень избирательное заведение.

Так что же я рекомендую, в ответ на ваш вопрос? Начните с того, что у вас есть, и научитесь думать как программист, а не просто изучая какой-то конкретный язык.

Если у вас есть доступная реализация C #, я могу вам сказать, что это прекрасный язык для таких, как я, таких как Java, JavaScript, Python, Ruby, Scala, Scheme и многие другие языки, которые у меня есть. узнал за эти годы. В конце я пытаюсь выбрать правильные языки и инструменты для конкретной работы, а это означает переключение языков, таких как шляпы.

Нет ничего плохого в использовании забавных способов обучения, таких как обращение к Ruby с помощью Why Poignant Guide and Shoes (как я рекомендовал в другом недавнем посте ). Есть загадочные и мистические пути, такие как бьешься головой о Маленьком Schemer и закаленный Schemer на пути к SICP . Многие современные мыслители попросят вас пропустить все эти старые академические и «корпоративные» вещи и вместо этого погрузиться непосредственно в JavaScript, JQuery и HTML5. Есть много способов начать, так что не тратьте слишком много времени. Просто выберите один и получите код!

На самом деле, я думаю, что немногие работающие профессионалы в наши дни отправят вас назад, чтобы сначала выучить Ассемблер или C / C ++. Честно говоря, если бы они это сделали, я не верю, что они окажут вам большую услугу.

Итак, чтобы немного украсить слова «начните с того, что у вас есть», у меня есть еще три совета:

  • Выберите один язык программирования, который кажется вам классным, и один подход к обучению, который, кажется, имеет смысл, и дайте им все. Стать грамотным на выбранном вами языке; прочитайте столько хорошего кода, сколько сможете!
  • Сразу же возьмите в руки клавиатуру и начните программировать по мере обучения. Выполните все элементарные упражнения в своих книгах по программированию самостоятельно и попрактикуйтесь во всех уроках, которые вы можете найти, с радостью щелкая пальцами, чтобы они действительно работали. Вы будете удивлены тем, сколько навыков вы получите, исправляя ошибки в демоверсиях, которые, как предполагается, работают с кодом, но не работают!
  • Потратьте большую часть своих усилий на изучение того, как хорошие программисты думают о своих проблемах. Узнайте, как анализировать и разбирать сложные проблемы и системы, разбивая их до тех пор, пока вы действительно не поймете их. Затем научитесь синтезировать и проектировать автоматизированные решения, создавая их так, чтобы они облегчали выполнение некоторых задач для некоторых людей на этой планете.

Я начал с FORTRAN IV и QBASIC, и если они меня не испортили, C # тоже не повредит! Удачи и убедитесь, что вам весело во время обучения!


Вы можете найти оригинальные лекции Абельсона и Суссмана здесь: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
Блэкджек,

4

Я думаю, что лучший совет, который я когда-либо видел, когда дело доходит до людей, спрашивающих: «Какой язык я должен изучать?» это просто: хороший программист может работать на любом языке.

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


Я +1 это Это похоже на мою обычную аналогию строительства мотоциклов. Вы можете создать приличный мотоцикл, работая на конвейере и следуя книге, но по-настоящему крутые строители - это вертолеты, которые разбираются во всех аспектах мотоцикла, и в результате вы получаете удивительные вещи.
Джаррод Неттлс

3

Иногда я подозреваю, что выбранные языки имеют гораздо большее отношение к нашим личностям и способу, которым мы подключены, и гораздо меньше, чем к практическим или академическим соображениям, чем нам хотелось бы признать.

Тем не менее, изучение новых вещей никогда не вредно. Вы узнаете день, когда вы переступили порог к развитому или, возможно, сломанному мозгу (я полагаю, что это вопрос перспективы), когда вы начнете понимать, что все имеет руководство. В конце концов, вы можете действительно делать все, что захотите, если у вас есть талант и вы действительно заинтересованы в этом, а не в том, чтобы быть программистом.

По крайней мере возиться с Python и JavaScript. Несомненным преимуществом обучения является возможность писать код и сразу же наблюдать за его выполнением в консольной среде, доступной для ввода / вывода файлов, такой как IDLE, или в среде песочницы, такой как браузер. Что мне не нравится в C # и Java, так это то, что они хотят, чтобы все было ограничено классами, даже если вы просто пишете простую функцию с бессмысленными обертками вокруг нее, чтобы ваши коллеги или чрезмерно ограничивающий компилятор были довольны. Еще одна вещь, которая мне нравится в JS и Python - это то, что они действительно позволяют вам устанавливать свою собственную парадигму. Слишком гибкая из-за множества предпочтений разработчиков. Я до сих пор не уверен, что думать о целесообразности перегрузки основных операторов, но я почти уверен, что мне нравится Python для разрешения этой опции.

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


Как человек, который нанимает из этой орды невыносимой рыбы на мою повседневную работу, я должен согласиться. В этой дискуссии есть много действительно полезных отзывов; Я надеюсь, что @toleero найдет это полезным и не унывает. На мой взгляд, хотя Джоэл гений, мы никогда не должны принимать все, что кто-то говорит, как Евангелие. Книги, которые он рекомендует, полезны. Но так же, как программирование изо дня в день и получение практического опыта. Сделайте это на нескольких языках (скажем, C # и что-то менее похожее на C - Basic, может быть, или Python или Ruby), и вы станете по крайней мере таким же хорошим разработчиком, как и многие другие: o)
Оуэн Блэкер

3

C # не так плох, как Java, в значительной степени. Они лучше поддерживают многие концепции, такие как функциональное программирование, универсальное программирование, детерминированное уничтожение и типы значений, перегрузка операторов и т. Д. Их поддержка этих функций, конечно, все еще может потребовать много работы, но она значительно лучше, чем Java, даже если это не C ++.

Во-вторых, я думаю, что вы неправильно читаете то, что сказал Джоэл. Если вы можете освоить указатели и рекурсию, то не имеет значения, какой язык вы используете сейчас. Самым важным было бы использовать небольшой unsafeкод, разобраться с unsafe quicksortчем-то или чем-то, а затем вернуться к остальной части обычного C #.

Ох и читай :)


2

Первым продуктивным для меня языком был C #. Хотя я играл с Foxpro в школьные годы и немного учился в колледже. C # очень хорошая и очень хорошая отправная точка для всех. Он следует общим основам программирования, таким как строгая типизация, инкапсуляция, наследование и т. Д., Которые, я считаю, следует всегда изучать, независимо от того, используют они их или нет. Позже вы всегда можете перейти на другие языки, такие как Python, которые не соответствуют стандартам фундаментального программирования.

Другой фактор, который люди не добавляют к аспекту обучения в C #, - это наличие лучшей IDE для любого языка, который я видел. Eclipse IDE тоже хорош, но как только вы воспользуетесь Visual Studio, вы поблагодарите Microsoft.

Расширение C # по сравнению с C гарантирует, что вам не нужно изучать другие языки заранее. Все языки за десятилетие или около того произошли от природы C, даже от JAVA.

Итак, вердикт в том, что C # является отличной отправной точкой, которая дает вам возможность быстро изучать другие языки в будущем


Затмение намного лучше для меня, чем Visual Studio. Но я согласен с вами - C # был бы отличным языком, особенно если бы он не принадлежал и не был привязан к злым частным стандартам, уничтожающим темного повелителя Редмонда .
Томас В.

2

Изучение C # как первого языка не является ошибкой, если вы рано или поздно переходите к изучению второго языка. Это гораздо важнее. Еще лучше, если этот второй язык несколько отличается от C # (в этом отношении javascript или ruby ​​будут лучше java). У каждого языка есть свои плюсы и минусы, и это различия, которые сделают вас лучшим программистом в долгосрочной перспективе.


1

Столько, сколько я советую вам изучать много языков (как и другие), убедитесь, что вы знаете (пару) языков, которые вы изучаете очень хорошо.

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

Знание конструкции цикла for - это много языков, но это весело, но бесполезно, если вы не знаете, как обрабатывать ошибки в любом из них.


1

Не беспокойтесь о том, что вы впервые узнали C #. Это похоже на беспокойство, что ваш первый шаг был сделан левой или правой ногой. Единственная разница между изучением управляемого языка в первую очередь заключается в том, что вы просто откладываете, когда вам нужно выучить указатели и детальное управление памятью. Это действительно может работать в вашу пользу, поскольку, когда пришло время изучать C, единственное, о чем вы будете беспокоиться, это управление памятью - вы также не будете жонглировать, пытаясь изучить структуры управления, концепцию функций и т. Д. быть в состоянии полностью сосредоточиться на указателях и управлении памятью.

Стереотип существует, потому что есть программисты на управляемых языках, которые никогда не делали эту вторую часть и не изучали C и C ++, а затем применяли их к заданиям C и C ++.

Это похоже на изучение музыкального инструмента - первое трудно, потому что вы пытаетесь изучить механику чтения письменной музыки И физическую механику артикуляции инструмента, чтобы делать то, что вы хотите. Что касается второго и последующих инструментов, которые вы изучаете, вы можете сосредоточиться исключительно на том, что отличает этот инструмент от того, что вы уже знаете.


1

Начинающему это тяжело, без сомнения. Я сделал vb, javascript, PL / SQL, T-SQL, Uniface и немного C #, чтобы назвать несколько.

Кто-то ранее упомянул Visual Basic как место, где они узнали об объектно-ориентированном программировании, и, честно говоря, VB.NET имеет самый простой для понимания синтаксис из всех языков, которые я когда-либо видел. Лучшая особенность заключается в том, что ключевые слова соответствуют понятиям, которые подробно описаны.

Например, функция myHandler () обрабатывает myButton.click

или класс человека расширяет млекопитающее реализует smartLifeform

Серьезно, для удобства чтения, когда вы новичок, как бы вы хотели, чтобы синтаксис выглядел?

Когда вы ищете свойства и методы (и различие между подпрограммами и функциями), гораздо проще читать в VB.

Аналогично при объявлении переменных

Dim myString As string - очевидно, какой тип и какой экземпляр

C # чувствительность к регистру поощряет то, что для меня является серьезной вредной привычкой - иметь одно и то же имя для класса и экземпляра, где один из них прописные, а другой - строчные

например

Человек человек

  • неужели в вашем словаре так мало слов, что вы должны повторно использовать уже существующие в верхнем регистре?

если вы вызываете human.think, было бы легко ошибочно принять экземпляр за класс и подумать, что вы сразу вызываете статический метод. И часто мы видим, как мы воспринимаем код, у нас нет времени навести курсор на каждый элемент, чтобы редактор мог рассказать нам, что происходит.

C # может иметь некоторые преимущества, но с ним гораздо сложнее начать - даже если это экономит набор текста. Вот почему определенно должно быть место для обоих языков.


+1 для человека человека. Имея c # в качестве второго языка (хлеб с маслом = Delphi) через книгу, а не имея какого-либо глубокого опыта работы с существующим кодом, это всегда заставляет мой мозг немного болеть, видя это. Хотя есть части языка, которые мне действительно нравятся, перетаскивание чувствительности к регистру из C было большой ошибкой ИМХО.
Мэтт Оллвуд

Конечно, потому что Dim myHuman as Humanтак намного лучше? : D
scrwtp

0

Самым большим недостатком, который я вижу, является то, что Visual Studio и связанные с ним инструменты очень и очень хороши - такие вещи, как intellisense и автозавершение кода, могут легко стать костылями. Я бы вообще утверждал, что среда может быть настолько приятной и поддерживающей, что вы склонны чувствовать себя немного растерянным, когда вам нужно, скажем, взломать код ruby ​​в текстовом редакторе. О, и вы, как правило, тоже пропустите такие вещи, как linq.


0

C # прекрасно подходит для начала программирования.

Это то, что мне было сказано для начала, даже не имея возможности побаловаться чем-либо еще (кроме Hello World на Java, некоторых базовых вещей LOGO и некоторых вещей на пустом месте, но ничего «серьезного»).

В общем, это может быть сложно - есть много вещей, которые не кажутся интуитивными, и у них есть свои ограничения, но я думаю, что это поощряет хорошее кодирование и замечательно, когда вы освоите его. Я имею в виду, что это дает вам больше возможностей и немного более профессионально, чем Python (что обычно предлагается), и это будет иметь огромное значение - пробовать C ++ после C # не было слишком болезненным, но если бы я начал с Python, то это было бы очень большое препятствие, даже на уровне синтаксиса.

Кроме того, он имеет хорошую межплатформенную поддержку в виде Mono (для тех из вас, кто думает, что Mono не имеет большого значения - движок Unity Game Engine позволяет вам кодировать его версию). Это также очень полезно для большинства вещей, будь то сценарии игры, веб-дизайн или приложения для Windows. Конечно, некоторые языки будут лучше для определенных строк, поэтому это будет зависеть от общего направления, в котором вы планируете двигаться - например, если вы движетесь в веб-направлении, тогда C # (ASP.NET) определенно будет отличная идея. Если вы планируете попасть в игры, вам следует подумать о C ++.

В конце концов, его стоит изучить, даже если вы в конечном итоге не используете его в пользу простоты Python или архаичной природы Java (поскольку цикл выпуска Java ДЕЙСТВИТЕЛЬНО медленен) - вы изучаете хорошее кодирование практики, не будучи слишком сложным для новичка, чтобы учиться.


этот пост довольно трудно читать (стена текста). Не могли бы вы изменить его в лучшую форму?
комнат

1
Как так? Все еще трудно читать, или хорошо сейчас? Спасибо, кстати, за головы.
Sbspider

-1

Чтобы быть программистом, нужно иметь страсть. Программисты, которых я знаю, изо всех сил стараются узнать и заметить изменения в отрасли. Я начал свое программирование с базового уровня на Commodore Vic 20 (да, тот старый) и продолжал переходить на другие новые языки. Часть моих лет программирования даже включала COBOL. Я также начал замечать, что некоторые языки работают лучше в определенных процессах, чем другие. Я советую вам выучить любой язык и понять основные понятия программирования, такие как циклы, методы, сравнения. Большинство языков поддерживают эти три понятия. Вы никогда не должны говорить «Это лучший способ», а «Как я могу улучшить это». Самое плохое в этом последнем предложении - это то, что вы можете поймать себя на технике. Программирование это весело, сделайте это весело! Интернет открыл совершенно новый способ программирования, потому что уровень доступа к информации у нас сегодня ошеломляющий. Для меня перед интернетом я должен был пойти на полку и вытащить книги по программированию GREY IBM и учиться. Сегодня вы можете просто напечатать вещь в Google и Whammo.


2
этот пост довольно трудно читать (стена текста). Не могли бы вы изменить его в лучшую форму?
комнат

-3

Ух много ответов. Вот моя точка зрения:

C # не место для изучения информатики. Я вижу это как крайне плохую идею. Я перечислю некоторые из моих проблем ниже.

  • C # - это язык Microsoft. Не то, чтобы я здесь судил о РС, просто за пределами мира МС мало кто знает. Если вы просто хотите программировать аппаратное обеспечение MS, тогда продолжайте, но я не вижу в этом серьезного подхода к информатике.
  • Я не большой поклонник обучения программированию на управляемых языках. Я считаю, что их ценность в изучении управления памятью программ и построении структур данных.

Слишком устал, чтобы так быстро выбрать другой язык.


Я могу понять, если вы думаете, что привязать себя к MS было бы плохо для вашей карьеры. Но какое это имеет отношение к изучению информатики? CS не имеет ничего общего с платформами или корпорациями.
svick

-3

Я бы порекомендовал C # или любой язык, который предлагает эти три вещи по своей сути:

Полностью типизированный скомпилированный и полностью объектно-ориентированный ..

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


-6

Нет, этот ответ ужасен. Зачем? Что ж, он прописал несколько хороших книг, которые вы должны прочитать, но без работы в классе и лабораторных работ вы будете потеряны и разочарованы. Вы должны быть с кучей других новых программистов, экспериментирующих, потому что есть очень много, чтобы узнать что-то кроме того, что в этих книгах. Я не говорю, что вам нужно идти на BSCS, но вам нужен также доступ к опытному инструктору, когда в любой момент может произойти целый ряд проблем, таких как проблемы с компилятором, среды сборки ... вы называете это. Вы не будете большим программистом, работающим в вакууме. Какие бы книги ни потребовались для ваших курсов, они будут достаточно хороши, если вы выберете школу на полпути.

Итак, запишитесь на некоторые занятия, и это будет ОЧЕНЬ веселее! Кроме того, если вы планируете устроиться на работу программистом, вам нужны связи, и вы услышите весь гул о компаниях, набирающих в кампусе, и т.д ..

Наконец, формальное образование очень важно, так как программирование требует много теоретических знаний, чтобы понять, как все должно работать на всех уровнях (hw / sw), чтобы вы могли понять, как все исправить. Почти все это черный ящик, поэтому вы должны быть в состоянии выяснить, почему что-то ведет себя так, как есть, чтобы вы могли сделать следующий логический удар в темноте. Без как минимум двухлетней степени программирования (как бы вы это ни называли) вы окажетесь в невыгодном положении.

PS Я бы не подошел к .Net или C #, пока не разберетесь с Java. C # не радует глаз. Это грязный и замутненный код. .Net IDE - отстой Это в мрачных веках стандартов IDE. Java: C # ~ Данные: знания


10
Я с тобой до последнего абзаца. В нем изложено ваше мнение об эстетике C # таким подстрекательским образом, что, похоже, оно не относится ни к какому хорошему ответу.
Адам Лир

9
Даже до последнего абзаца это в основном чепуха. Некоторые люди хорошо учатся в классной комнате - но для других это пустая трата времени. Изучение теоретических основ важно, но для этого необязательно также требуется классное или формальное образование - они помогают некоторым людям, но не всем (даже близко).
Джерри Гроб

Мнение только это; это не констатация факта. Так что не обижайся.
Том Джонс

Вы неправильно поняли рекомендацию для формального обучения. Вам нужно место, чтобы задавать вопросы и сотрудничать со своими сверстниками в лаборатории. Сотрудничество является ключевой концепцией. Извините, если вы пользователь C #, и я вас обидел, хотя это должно быть невозможно среди бесстрастных техников.
Том Джонс

1
Stackoverflow стал той «лабораторией» для многих людей, которые не могут поступить в колледж, но хотят получить поддержку сообщества. Это так же, как класс? Конечно нет. Это достаточно хорошо? Вы ставите.
Блэкджек,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.