Чи є вивчення C # як першої мови помилкою? [зачинено]


26

Я знаю, що тут є подібні запитання, які я читав, але нещодавно я прочитав цю публікацію Джоела Спольського:

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

І це змусило мене замислитися над моїм способом навчання та про те, чи може воно насправді бути шкідливим у перспективі.

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

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

Тож тепер я не впевнений, яким шляхом я повинен піти? Чи варто зробити крок назад і слідувати порадам Джоеля і почати читати?

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

Думки?


4
Навчитися КС важким шляхом можна, але тільки якщо у вас хороший викладач.
Робота

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

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

5
Крім того, це залежить від того, що ви плануєте робити з цими знаннями. C # вирішує проблеми бізнесу день у день, де я працюю. Я не дивився на С, що межує з 2 десятиліття, і я почуваю себе прискіпливим, коли мені доведеться.
Джессі К. Слікер

19
Навчитися чомусь ніколи не є помилкою. Це завжди набагато краще, ніж не вчитися .
SK-логіка

Відповіді:


80

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

Я теж поважаю думки Джоеля, але вони саме такі: думки . Немає нічого поганого в використанні C # як початкової мови.

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

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

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

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

  • Javascript: закриття
  • jQuery (так, окремо): DOM та Ajax
  • Visual Basic: Об'єктно-орієнтоване програмування
  • C #: Загальні та закриті матеріали
  • Ruby (на рейках): потужність дизайну MVC

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

Який мій погляд? Дізнайтеся C #. Станьте майстром C # - у вас буде довга успішна кар'єра, і ви, мабуть, зробите якісь дивовижні речі. Але не робіть себе голубками. Подорожуйте та скуштуйте інші мови та середовища та концепції.


+1: @toleero - C # або Java - це прекрасно, щоб почати навчання. Джоель і Пол Грейх Beating the Середні намагалися перейти через точку розвитку розробників, які застоюються на обраних мовах, як вказували, що це занадто часто.
Джастін Шилд

Objective-C також навчає MVC, до речі, але це менш умовно.
Моше

4
+1. На мою думку, ви не можете по-справжньому бути чудовим розробником та майстром своєї основної мови, не навчившись та граючи з іншими мовами. Це найкращий спосіб розширити свої знання та по-справжньому оцінити сильні сторони вашої основної мови.
Niklas H

3
+1. Ключовим фактором у цьому є слова, які він вирішив жирним шрифтом. Занадто просто навчитися чомусь схожим на Java та C #, а то й на C та витратити 10 років свого життя на написання коду так, як завжди. Натисніть на себе, щороку вивчайте нову мову. Розпитуйте, що ви робите, спробуйте знайти кращий спосіб. І найголовніше - залишайтеся залученими до програмістів та StackOverflow.
Ендрю Т Фіннелл

Ви можете зробити всі ці приклади в C #. Dom / ajax: бібліотеки C # xml & ajax. Об'єктно орієнтований? Перевірка. MVC? Asp.net mvc фреймворк.
Carra

21

коли хтось, на думку якого я поважаю, вважає, що це шкідливо.

Це нагадує мені історію, що стосується Річарда Фейнмана. Студент з Caltech запитав у видатного космолога Майкла Тернера, який його «упередженість» виступає за те, щоб той тип частинок був кандидатом у складі темної матерії, а Фейнман відрізався і сказав: «Чому ти хочеш дізнатися його упередженість? Сформуй свою власну! ... Не звертай уваги на владу, думай сам ".

Програмісти походять з усіх верств життя. Яву сьогодні викладають у багатьох середніх школах та коледжах, але її навіть не було винайдено, коли Джоел Спольський був у школі. Немає жодного «істинного шляху», коли мова йде про те, щоб стати хорошим програмістом. Звичайно, є класика на зразок 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 неймовірно корисні для роботи з програмування, але, як повний новачок, вам краще вивчити, що таке рекурсія, а не перетягувати елементи управління навколо.
BlackJack

2
@Graham - Вибачте, але я не згоден. Він не намагається навчитися ІТ чи розробці програмного забезпечення - він намагається навчитися програмуванню. На мою думку, інструменти IDE найкраще залишити на потім, після того як ви насправді грамотний програміст.
BlackJack

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 і побачити, в чому полягають відмінності. На цьому рівні ви повинні володіти базовим процедурним кодуванням з трьома основними структурами програмування, якщо ви можете бути креативними з усіма ними (і вміти користуватися змінними), тоді ви на шляху стати прекрасним програмістом:

  • Послідовність - код записується в послідовності кроків, які слідують один за одним у визначеному вами способі (визначає "стрибок", крок за кроком та готос)
  • Умовно - Код може мати точки прийняття рішення (визначає, якщо-заяви, заяви-випадок)
  • Цикл / повторення - код може повторюватись за певним рішенням (яке є розширенням обох вище, визначає for-, do-while-loops)

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

З цього принаймні раз на рік намагайтеся вивчити нову мову програмування, що слідує за іншою парадигмою програмування . Вам не потрібно повністю йти в ногу з новою мовою, але є деякі переваги, щоб знати інші парадигми. Існує декілька парадигм, і деякі мови програмування між ними перемішуються (зауважте, що C # насправді має підмножини наступні три):

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

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


5

У центрі уваги вашого питання та багатьох відповідей тут на C #. З Вікіпедії :

Мова C # призначена для простої, сучасної, об'єктно-орієнтованої мови програмування.

Виходячи з цього лише, здається, можна стверджувати, що ви могли вивчити C # як першу мову, не завдаючи довгострокового шкоди своєму мозку. Я не думаю, що Джоел засуджував всю мову, хоча писав :

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

Проблема не в мові, це узяття ярликів. Занадто часто люди намагаються пройти швидкий шлях до своєї кінцевої мети, дотримуючись покрокових навчальних посібників або «вивчити все за 24 години». Вам не доведеться витрачати занадто багато часу на переповнення стека, перш ніж ви почнете помічати, що виникає багато запитань: "Я ніколи в житті не писав рядок коду, але я переходжу на iPhone програмування! Чи може хтось, будь ласка, дати мені покрокові інструкції робити саме те, що я хочу робити? Дякую! " Я не кажу, що ви використовуєте такий підхід, але це щось, від чого вам слід уберегтися.

Якщо ви хочете розвинути міцні навички програмування, слід почати з вивчення основних навичок. Якщо ви спробуєте перейти прямо до програм OOP та GUI тощо, можливо, ви пропустите ці основи. Книги, на які Джоел вказував, справді дуже хороші. Я проглянув лише жовту книгу C # (PDF), але схоже, що це, мабуть, краще вступ до програмування, ніж більшість книг C #, які я бачу в магазинах.


Я хотів би зазначити, що фразування не є "не вивчайте C #", це "C # і ASP.NET" (наголос додано). Я не програміст на C #, але .NET і CLR - прекрасна платформа для початку навчання.
forivall

5

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

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

Якщо у вас є доступна реалізація C #, я можу вам сказати, що це абсолютно чудова мова для працюючих жорстких, як я - як Java, JavaScript, Python, Ruby, Scala, Scheme та багато інших мов, якими я володію навчилися роками. Врешті-решт я намагаюся вибрати потрібні мови та інструменти для конкретної роботи, і це означає, що перемикання мов, як капелюхи.

Немає нічого поганого в тому, щоб використовувати цікаві способи навчання, як-от наблизитись до Рубі через Покірний путівник та взуття Why (як я рекомендував в іншій останній публікації ). Існують таємні та містичні шляхи, такі як удари головою проти Маленького Шемера та Досвідченого Шемера на шляху до SICP . Багато сучасних мислителів могли б пропустити все те, що старіші академічні та «підприємницькі» речі, і замість цього зануритися безпосередньо в JavaScript, JQuery та HTML5. Є багато способів почати роботу, тому не витрачайте занадто багато часу. Просто виберіть один і отримайте кодування!

Реально я вважаю, що небагато працюючих професіоналів сьогодні відправить вас назад, щоб вивчити Assembler або C / C ++. Відверто кажучи, якби вони це зробили, я не вірю, що вони б тобі велику послугу зробили.

Отже, щоб трохи прикрасити "почніть з того, що у вас є", у мене є ще три поради:

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

Я почав з FORTRAN IV і QBASIC, і якщо вони не зіпсували мене, C # теж не зашкодить вам! Удачі та переконайтеся, що ви веселитесь під час навчання!


Ви знайдете оригінальні лекції Abelson & Sussman тут: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

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

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


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

3

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

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

Принаймні возитися з Python та JavaScript. Це певна перевага в навчанні - мати можливість просто писати код і спостерігати за його виконанням негайно в середовищі консолі, доступного для вводу / виводу, наприклад IDLE або в середовищі пісочниці, наприклад у браузері. Мені не подобається C # та Java - те, що вони хочуть, щоб усе було обмежене класами, навіть якщо ви справді просто пишете просту функцію з безглуздими обгортками навколо неї, щоб задовольнити своїх однолітків чи надмірно обмежувальний компілятор. Інше, що мені подобається в JS та Python - це те, що вони дійсно дозволяють вам встановити власну парадигму. Трохи надто гнучким, що налаштовується великою кількістю переваг розробників. Я все ще не впевнений, що думати про розумність перевантаження базових операторів, але я майже впевнений, що люблю Python за те, що дозволяють цю опцію.

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


Як хтось, хто наймає у тієї орди нестерпних риб на своїй щоденній роботі, я повинен погодитися. У цій дискусії є багато справді корисних відгуків; Я сподіваюся, що @toleero вважає це корисним і не розгубиться. На мій погляд, хоча Джоїл є генієм, ми ніколи не повинні сприймати все, що хтось каже, як євангеліє. Книги, які він рекомендує, є корисними. Але так це кодування щодня та отримання практичного досвіду. Зробіть це на кількох мовах (скажімо, C # і щось менш схоже на C - базовий, можливо, або Python чи Ruby), і ви станете принаймні таким же хорошим розробником, як і багато людей там: o)
Оуен Блекер

3

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

По-друге, я думаю, що ти неправильно читаєш те, що сказав Джоел. Якщо ви можете оволодіти покажчиками та рекурсією, то не має значення, якою мовою ви зараз користуєтесь. Найголовніше - скористатись невеликим unsafeкодом, вступити в дію unsafe quicksortчи щось, а потім повернутися до решти звичайного C #.

О, і читайте :)


2

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

Інший додаючий фактор, який люди насправді не додають до навчального аспекту C # - це наявність найкращого IDE для будь-якої мови, яку я бачив. Eclipse IDE теж хороший, але як тільки ви скористалися Visual Studio, ви подякуєте Microsoft.

Удосконалення C # за допомогою C гарантує, що вам не потрібно заздалегідь вивчати інші мови. Усі мови протягом десятиліття або близько того розвивались із природи С, навіть JAVA.

Отже, вердикт - C # - це чудова відправна точка, яка надає вам можливість в майбутньому швидко вивчати інші мови


Eclipse для мене набагато краще, ніж Visual Studio. Але я згоден з вами - C # була б чудовою мовою, особливо якби вона не була власником & замикається на злих власницьких стандартах, знищуючи темного пана над Редмоном .
Thomas W

2

Вивчення C # як першої мови не є помилкою, якщо ви рано чи пізно рухаєтесь і починаєте вивчати другу мову. Це набагато важливіше. Ще краще, якщо ця друга мова дещо відрізнятиметься від C # (JavaScript або ruby ​​в цьому відношенні буде краще, ніж java). У кожної мови є свої плюси і мінуси, і саме відмінності з часом зроблять вас кращим програмістом.


1

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

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

Знання конструкції for-loop є багатьма мовами - це цікаво, але марно, якщо ви не знаєте, як обробляти помилки в будь-якій з них.


1

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

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

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


1

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

Хтось раніше згадував Visual Basic, коли він дізнався про об'єктно-орієнтоване програмування, і якщо чесно, VB.NET має найпростіший для розуміння синтаксис будь-якої мови, який я коли-небудь бачив. Найкраща особливість полягає в тому, що ключові слова відповідають поняттям, що описані вкрай.

наприклад, функція myHandler () обробляє myButton.click

або Клас Human Extends ссавців реалізує інтелектуальну форму життя

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

Коли ви шукаєте властивості та методи (і розподіл між підрозділами та функціями), читати в VB набагато простіше.

Аналогічно при оголошенні змінних

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

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

напр

Людина людська

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

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

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


+1 для людини. Маючи c # як другу мову (хліб та масло = Delphi) через книгу, а не будь-який глибокий досвід із існуючим кодом, це завжди змушує мій мозок трохи бачити це. Хоча є частини мови, які мені дуже сподобалися, перетягування чутливості регістру з C було великою помилкою IMHO.
Метт Аллвуд

Впевнений, адже Dim myHuman as Humanтак набагато краще? : D
scrwtp

0

Найбільшим недоліком, який я можу побачити, є те, що Visual Studio та пов'язані з ним інструменти дуже-дуже приємні - такі речі, як intellisense та доповнення коду, можуть легко стати милицями. Як правило, я заперечую, що оточення може бути таким приємним і сприятливим, що ви, як правило, відчуваєте себе трохи втраченими, коли вам потрібно, скажімо, переламати рубіновий код у текстовий редактор. Ох, і ви, як правило, теж сумуєте за такими предметами, як Linq.


0

Для початку програмування на C # ідеально добре.

З цього мені сказали, навіть не маючи шансу зайнятися чим-небудь іншим (крім Hello World на Java, деякі основні речі LOGO та деякі речі в Scratch, але нічого "серйозного").

Загалом, це може бути важко - є багато речей, які не здаються інтуїтивно зрозумілими, і у нього є свої обмеження, але я думаю, що це заохочує гарне кодування і чудово, як тільки ви знайдете його. Я маю на увазі, це дає вам більше сил і трохи професіональніше, ніж 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), щоб ви могли зрозуміти, як виправити речі. Майже все - це чорна скринька, тож ви повинні вміти зрозуміти, чому щось поводиться так, як є, щоб ви могли взяти наступний логічний удар у темряві. Не маючи принаймні 2-річного ступеня програмування (як би ви його не називали), ви опинитесь у невигідному становищі.

PS Я б не підходив .Net або C #, поки ви не відчуєте Java. C # не радує око. Це безладно і захаращено виглядає код. .Net IDE витягує поза вірою. Це в похмурі століття стандартів IDE. Java: C # ~ Дані: Lore


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

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

Думка саме така; це не констатація факту. Отже, не відчувайте образи.
Том Джонс

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

1
Stackoverflow став тією "лабораторією" для багатьох людей, які не можуть вступити до коледжу, але хочуть підтримати громаду. Це те саме, що і клас? Звичайно, ні. Це досить добре? Будьте впевнені.
BlackJack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.