C# — Что лучше для начала С или С++


Содержание

C# или C++ для новичка

всем доброго времени суток! Хочу обратиться с таким вот вопросом:
Я изучал C# где-то месяца 3 самостоятельно (обучался медленно так как был другими вещами еще занят). в итоге конечно научился создавать простые консольные приложения. Моя цель-научиться создавать компьютерные игры, конечно я понимаю что 1 не создам номальной компьютерной игры-это врятли возможно, но я буду стараться и искать напарников.
Часто сталкивался во время обучения: типо C# и идущий с ним ХNA лажа, типо C# лажа и все в таком духе.
вот хочу спросить совета: продолжить учиться на C# или изучать C++ ?
Можно ли на C# создать чото более менее нормальное?
И еще С++ для человека практически незнакомого с программированием можно самому обучаться или опыт програминга будет тут необходим?

C# + XNA мне скажем так не нравится (что бы ни кого не обижать, а то щас начнется)
C# как язык вполне очень даже сильная вещь.
если сравнивать с С/C++, то сложности будут и там и там, не бывает без сложностей :)
хотя сложности имею немного разный характер.
В С/С++ есть очень много ньюансов без знания, которых можно найти очень много шишек на свою опу, но для С++ есть выбор OpenGL vs DirectX
для C# есть можно сказать только XNA, все остальное скажем так самописные либы,
которые не сказать чтоб очень плохи, но они немного отстают от того, что выходит для С++
та же XNA не поддерживает DX10, допустим огловские враперы не поддерживают OpenGL 3.0
можно конечно и самому писать всяческие враперы, но тогда C# становится ни чуть ни легче С++

В данный момент C# больше ориентирован на бизнес приложения, C++ более универсален.

А с++ вполне по силам научиться самостоятельно если опыт програминга очень низкий?

C# не лажа — а очень мощный и перспективный ЯП, причем очень активно развивающийся.

Только вот для игр не подходит ;)
Хотя когда появится работающий silverlight.

Если опыт программиста очень низкий, лучше идти подметать двор, разгружать вагоны.
Вопрос о том что изучать глупый, что бы быть хорошим программистом вы должны знать и то и то.
Вопрос о том можно ли что то сделать на C# — глупый, возьмите и попробуйте. Пока вы сидите и думаете о том,
что лучше с++ или С# за это время можно было бы сделать уже что то, и заработать тот же опыт. Подбросьте монетку в конце концов!

cNoNim
>C# как язык вполне очень даже сильная вещь.
Ути пути, а как же — «С# кал, C++ managed — наше всё»?

  • jenik15
  • Пользователь

C# — будущее и для новичка он не раскрывает, и не показывает «в лоб» всех своих подводных камней! Но, к сожалению, он как ни крути, ориентирован на очень быструю разработку бизнес приложение и максимально повторное использование готового кода, что очень хорошо для сколачивания денег с клиентов в минимальные строки и плохо что он этим и ограничен!
Но будем надеяться, что он обретет могущество с++ и мультиплатформеность java. )

Arturio
> А с++ вполне по силам научиться самостоятельно если опыт програминга очень
> низкий?
Можно. Я же сам научился. Значит и ты сможешь. Опыта программирования у меня небыло вобще. Правда пробовал что-то писать на Visual Basic, но потом понял что этот язык не для меня. С этим языком программирования твои мозги стлеют. Поэтому С++ — лучший выбор. Он универсален. С# разработан для разработок интернет-приложений, и плюс выбора графического API (как сказал cNoNim ) у тебя не будет, только XNA.
Из книжек по С++ посоветую «Как программировать на С++» Х.М. Дейтел, П. Дж. Дейтел, ну и на перспективу книга Бьерна Срауструпа «Язык программирования С++». А выбор графического API это уже другая тема.

Zakus, я как бы не отказываюсь от своих слов :).
С++ managed — наше все. но я не думаю, что в нево лучше лезть с нуля.
а поповоду твоего C# ты бы лучше подсказал мне в соседней теме про маршалинг, раз такой умный и всеми руками за C#.
мне хотелось все сделать по правельному на по хоже без CLI там делать не чего.

C# калечит мозг напрочь. :)

Arturio
> А с++ вполне по силам научиться самостоятельно если опыт програминга очень
> низкий?

А ты думаешь все начинали с огромным опытом? Опыт приходит с практикой.

>С# разработан для разработок интернет-приложений
Куда я попал.

>а поповоду твоего C# ты бы лучше подсказал мне в соседней теме про маршалинг, раз такой умный и всеми руками за C#.
Я буду тратить своё время на помощь ТЕБЕ? :DDD Так ещё и в области не интересной мне?)

>мне хотелось все сделать по правельному на по хоже без CLI там делать не чего.
Это классика жанра — «у меня не получается сделать это, значить язык говно».

Имхо, не имеет значения на каком языке программирования начинать. Главное, понять основные принципы вообще, потом понять ООП в частности, а приложить полученные знания можно в очень короткий срок на любой ЯП, наиболее подходящий для решения конкретной задачи.
Я начинал по довольно стандартной схеме VB6->Delphi7->Builder->MSVC++, сейчас по работе пишу (в той или иной степени) практически на всех известных мне языках программирования кроме ассемблера и фортрана.

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

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

Arturio
Попробуй С++: а) Как проблюешься, приходи на C# + XNA. б) Как войдешь в Нирвану, забудь про C# + XNA.
PS. И научись наконец складывать личное мнение на основе опыта, а не слов от неизвестных тебе людей.

Пусть с бейсика начинает — проверенный путь

Что выбрать C++ или C# [закрыт]

Хотелось бы заняться созданием программ мой выбор пал на C++ и на C#. Не знаю что и выбрать. Хотел бы спросить у вас дорогие хешкодовцы, что лучше выбрать. C C# я немного знаком, но имею представление хоть и не большое о нём. А что за зверь C++?

Закрыт по причине того, что не по теме участниками Sergey Rufanov, aleksandr barakin, ixSci, Vladimir Glinskikh, Владимир Мартьянов 5 авг ’15 в 15:14 .

Похоже, этот вопрос не соответствует тематике сайта. Те, кто голосовал за его закрытие, указывали следующую причину:

  • «Вопросы-опросники запрещены на Stack Overflow на русском. Для получения ответа, перефразируйте ваш вопрос так, чтобы на него можно было дать однозначно правильный ответ.» – Sergey Rufanov, aleksandr barakin, ixSci, Vladimir Glinskikh, Владимир Мартьянов

Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

2 ответа 2

Если для Вас программирование это что то новое, то начинайте с С (обычный С без каких то там ++ и #). Берите в руки терминал (да да устанавливайте Linux, это не шутка, привыкайте к хорошему), обычный блокнот, например, sublime text 2, книгу «Язык программирования С» и начинайте штудировать ее. Я сторонник того, что программист, даже пусть какой нибудь php developer просто обязан хоть немного, но все же понимать как все работает на низком уровне.

Так вот, вы проштудировали С и теперь думаете, что же дальше, а дальше дела обстоят так, если вы выбираете C#, то привязываетесь к одной единственной ОС Windows (пусть даже и есть какой то там Mono) и зависите от Microsoft. Большинство вакансий на C# это ASP.NET — веб, так что… тут сами думайте… По поводу книг, для начала лучше взять Шилдта он понятно описывает ООП, да и сам язык тоже, затем я бы вам предложил Троелсен, ну и на конец, когда вы уже будете хорошо плавать в C# и в программировании, можете почитать Рихтера, он уже описывает не язык C#, а платформу .NET. (Все книги посоветовал мой друг, который более менее шарит в .NET и C#).

Дальше у нас на очереди С++. Ну… что тут сказать, для чего С++, если есть С ? А по делу, на С++ хорош тем, что программист волен выбирать уровень абстракции, то есть в одной программе он может писать как на самом низком уровне (работать с памятью итд итп), так и на самом высоком (я надеюсь меня правильно поймут). На С++ можно писать относительно кроссплатформенные вещи, для этого существует Qt. По книгам могу посоветовать начать с этого, потом Страуструп, ну это уже больше как справочник, затем Мейерс, Саттер и Александреску и, если вы все это будет подкреплять практикой, то будете многих людей разносить в щепки в плане С++.

C или C++?

C или C++?

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

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

Кардинальная разница между C и C++ не в классах или шаблонах по отдельности, а в общей идеологии: C позволяет программистам максимально контролировать (для языка программирования высокого уровня) программу, а C++ идет по пути усложнения компилятора, чтобы позволить программисту писать программу как ему будет «удобно». При этом, опять же, в идеальном случае, компилятор языка поймет желание программиста и полученный код будет все равно максимально эффективным (или близким к эффективному). С одной стороны, подход C++, не может не вызвать интереса и одобрения, так как дает возможность создания эффективных программ не снижая при этом их читабельность или удобство наращивания. Но с другой стороны — повышение сложности компилятора сопряжено с различными трудностями, многие из которых до сих пор не преодолены.

Когда я только начинал изучать C++ (это было, наверное, лет 6-7 тому назад), я был удивлен большому количеству резко отрицательных мнений о нем у профессиональных программистов. Тогда мне это было непонятно, что, в общем, неудивительно: Бьерн Страуструп не только пошел по пути усложнения компилятора, но и по пути усложнения языка программирования, так что изучение C++ это очень долгосрочный процесс и, наверное, на сегодняшний день это самый сложный язык программирования. А так как противопоставить что-либо языку программирования можно только после того, как придет понимание основных идей и большинства конструкций языка, а так же после выполнения крупных проектов на нем, то и время детского воодушевления и радости при виде мощного инструмента (каким является C++) значительно больше, чем у других языков программирования.

Несмотря на то, что за эти 7 лет C++ прошел достаточно большой путь и сильно изменился, мне кажется что источник тех нареканий, которые имеют смысл, остался. Хочется отметить, что есть большое количество нареканий относительно бесcмысленных, на мой взгляд, таких как уже упомянутый странный термин «малая объектно-ориентированность». Очень часто можно услышать, что «C++ это не Smalltalk». Странное суждение: если программисту больше нравится Smalltalk, то на нем и надо программировать.

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

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

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

Конечно же, проблемы, связанные с ошибками в компиляторах, проявляются очень редко. Собственно поэтому можно уже сейчас оценить круг задач, которые лучше решать при помощи C++, чем C (при наличии, конечно же, хороших навыков программирования в обоих языках): это практически все программы, от которых не требуется беспрерывная работа 24 часа в сутки. Очень неприятно обнаружить, что программа, которая писалась и отлаживалась на каких-то тестовых примерах, не может выдержать реальной нагрузки и проблема кроется именно в том, что где-то глубоко внутри библиотеки, поставляемой с компилятором, не был реализован механизм блокировки доступа к разделяемому ресурсу. Кроме того, обычно переносимость программы с одного компилятора на другой уменьшает количество используемых возможностей языка программирования, потому что разные компиляторы, как это ни смешно звучит, по разному «соответствуют стандарту». Или, точнее, не соответствуют ему. А подобное ограничение на конструкции языка (одно из самых обидных лишений, конечно же, ограничение на использование шаблонов) сводит на нет большинство преимуществ C++.

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

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

Более строго, можно сказать, что обычно к разрабатываемому программному обеспечению предъявляются какие-то требования, связанные с его качеством. Эти требования не могут быть настолько жесткими, чтобы совсем исключать вероятность наличия ошибок в программе, но чем они сильнее, тем лучше использовать старый и проверенный во многих разработках C. В остальных же проектах может быть обратная ситуация: сложность разработки на C вызовет увеличение сроков, связанное с отладкой и выявлением ошибок в коде у самих программистов. Но, повторюсь, подобные ошибки обнаружить проще, чем ошибки в компиляторе или стандартной библиотеке.

Цукерберг рекомендует:  Вакансии Radeant

Резюме

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

C# — Что лучше для начала ? С или С++

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

В общем-то для разработки игр, именно для разработки, не для программирования — нужно начать этим заниматься, а не думать, что лучше =)

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

Saitei Дата: Вторник, 02 Августа 2020, 00:08 | Сообщение # 3

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Здравствуйте! Я уже давно задавался вопросом — какой яп учить мне для разработки игр, С++ или С# ? Говорят что С++ мощнее, но С# легче . И какой движок для языка есть (для С# слышал есть Unity 3D ).

А ты просто попробуй. Потом сформируй своё мнение и реши что тебе подходит лучше всего)

Ordan Дата: Вторник, 02 Августа 2020, 01:10 | Сообщение # 4

Ошибочная логика, нужно брать не то что, капельку мощнее, а то что подойдет именно тебе. Ориентируйся на движок с которым хочешь работать, у каждого свой двиг.
И как писали выше, с++ лучше брать если хочешь кодить с нуля или же писать софт.
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)

Мои проекты ТЫК
Мои видяхи на ютубэ ТЫК

Если ты споришь с идиотом, вероятно тоже самое делает и он.

Bo Дата: Вторник, 02 Августа 2020, 06:11 | Сообщение # 5
В своё время прочитал, понравилось на эту тему http://gcup.ru/forum/7-25576-2#427645
ShortKedr Дата: Вторник, 02 Августа 2020, 06:24 | Сообщение # 6

200?’200px’:»+(this.scrollHeight+5)+’px’);»> Цитата ShortKedr ()
aveBHS, для C++ есть C++,

В том смысле, что .

Что есть для C++ в плане разработки игр? — Для C++ есть сам C++, и его тут просто исчерпывающее количество =)

C# — Что лучше для начала ? С или С++

Профиль
Группа: Участник
Сообщений: 11
Регистрация: 16.11.2006
Где: Новосибирск

Репутация: нет
Всего: нет

Цитата(Torrero @ 14.11.2006, 15:55 )
Народ а посоветуйте плиз хорошую книжку по С,для тех кто хочет начать с нуля.
Цитата(MAKCim @ 14.11.2006, 19:04 )
После С избавится от С-ого стиля программирования сложно, из-за чего происходит смешение языков С и С++, что, имхо, нехорошо
Цитата(FiMa1 @ 15.11.2006, 11:11 )
Г.Шилдт начинает одну из своих книг по С++ с фразы: Эта книга подразумевает что вы уже знаете С. Если нет, то, пожалуйста, сначала выучите этот язык, а потом переходите к чтению этой книги.
Цитата(Rodman @ 15.11.2006, 11:16 )
С++ можно начинать без С, но тогда а его изучение уйдет больше времени чем сначала выучить С а за ним С++..

Профиль
Группа: Модератор
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162

JackYF
Дата 20.11.2006, 14:33 (ссылка) | (нет голосов) Загрузка .
Цитата(Антоха @ 20.11.2006, 01:22 )
С++ можно начинать без С, но тогда а его изучение уйдет больше времени чем сначала выучить С а за ним С++..

В самую точку! smile

ИМХО не согласен.

Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6

Доброе всем времечко суток!
Приношу извинения, если поднял, по общему мнению уже решенно-бородатый топик. Преследуемая цель — избежать появления новых вопросов на данную тему. Ориентировано на новичков.
Все сказанное ниже, разумеется имхо, разумеется оспариваемое.
Вопрос, поставленный топикстартером в принципе производный от вопроса «посоветуйте какую лучше книгу читать по программированию — С или С++?». Ниже будет понятно почему.
Но прежде ответьте мне на один простой вопрос — что я НЕ БУДУ знать о языке Си, если начну с изучения руководства по С++? Ответ только один — НИЧЕГО, в смысле, фактически, вы будете знать и язык Си! Почему? Да потому что язык С++ полностью впитал в себя язык Си (здесь улюлюканья), ну или почти полностью. Да назовите мне хоть одну книгу по С++, которая начиналась бы сразу же, к примеру, с тем «Классы», «Инкапсуляция», «Шаблоны типа и производные классы». Думаю вы затруднитесь назвать таковые.
Вот вам хоть содержание небезызвестной книги «Язык Си» под авторством КР:
———————————————————————————
Глава 1. Обзор языка
1.1 Начнем, пожалуй
1.2 Переменные и арифметические выражения
1.3 Инструкция for
1.4 Именованные константы
1.5 Ввод-вывод символов
1.5.1 Копирование файла
1.5.2 Подсчет символов
1.5.3 Подсчет строк
1.5.4 Подсчет слов
1.6 Массивы
1.7 Функции
1.8 Аргументы. Вызов по значению
1.9 Символьные массивы
1.10 Внешние переменные и область видимости
———————————————————————————
Глава 2. Типы, операторы и выражения
2.1 Имена переменных
2.2 Типы и размеры данных
2.3 Константы
2.4 Объявления
2.5 Арифметические операторы
2.6 Операторы отношения и логические операторы
2.7 Преобразования типов
2.8 Операторы инкремента и декремента
2.9 Побитовые операторы
2.10 Операторы и выражения присваивания
2.11 Условные выражения
2.12 Приоритет и очередность вычислений
———————————————————————————
Глава 3. Управление
3.1 Инструкции и блоки
3.2 Конструкция if-else
3.3 Конструкция else-if
3.4 Переключатель switch
3.5 Циклы while и for
3.6 Цикл do-while
3.7 Инструкции break и continue
3.8 Инструкция goto и метки
———————————————————————————
Глава 4. Функции и структура программы
4.1 Основные сведения о функциях
4.2 Функции, возвращающие нецелые значения
4.3 Внешние переменные
4.4 Области видимости
4.5 Заголовочные файлы
4.6 Статические переменные
4.7 Регистровые переменные
4.8 Блочная структура
4.9 Инициализация
4.10 Рекурсия
4.11 Препроцессор языка Си
4.11.1 Включение файла
4.11.2 Макроподстановка
4.11.3 Условная компиляция
———————————————————————————
Глава 5. Указатели и массивы
5.1 Указатели и адреса
5.2 Указатели и аргументы функций
5.3 Указатели и массивы
5.4 Адресная арифметика
5.5 Символьные указатели функции
5.6 Массивы указателей, указатели на указатели
5.7 Многомерные массивы
5.8 Инициализация массивов указателей
5.9 Указатели против многомерных массивов
5.10 Аргументы командной строки
5.11 Указатели на функции
5.12 Сложные объявления
———————————————————————————
Глава 6. Структуры
6.1 Основные сведения о структурах
6.2 Структуры и функции
6.3 Массивы структур
6.4 Указатели на структуры
6.5 Структуры со ссылками на себя
6.6 Просмотр таблиц
6.7 Средство typedef
6.8 Объединения
6.9 Битовые поля
———————————————————————————
Глава 7. Ввод и вывод
7.1 Стандартный ввод-вывод
7.2 Форматный вывод (printf)
7.3 Списки аргументов переменной длины
7.4 Форматный ввод (scanf)
7.5 Доступ к файлам
7.6 Управление ошибками (stderr и exit)
7.7 Ввод-вывод строк
7.8 Другие библиотечные функции
7.8.1 Операции со строками
7.8.2 Анализ класса символов и преобразование символов
7.8.3 Функция ungetc
7.8.4 Исполнение команд операционной системы
7.8.5 Управление памятью
7.8.6 Математические функции
7.8.7 Генератор случайных чисел

Что из этого я НЕ БУДУ знать, начав с руководства по Си++.
Подавляющее большинство книг по С++ начнется с ключевых понятий, включая понятия переменных, констант, типов и операций с ними, указателей и т.д. и т.п. А разве не это же Вы будете изучать открыв и книгу по «чистому» Си?
Будут ли хоть какие-то отличия если я начну с руководства по Си, а не по по Си++ (ООП не в счет)?

    Объявление вида
FiMa1
Дата 15.5.2007, 15:51 (ссылка) | (голосов:1) Загрузка .
Код
int f();
Код
int f(. );
Код
int f(void);
Код
int *ip = (int *) malloc( 10 * sizeof( int ) );
Код
int *ip = (int *) calloc( 10, sizeof( int ) );
Код
int *pi = new int[10];
Код
printf( «One plus two is %d\n», 1 + 2 );
Код
cout

Что проще – выбирать вам ;) и т.д.

Здесь я не хочу выступать в роли ярого противника языка Си, более того, в силу некоторых обстоятельств, я сам с него начинал, однако я хочу указать, что всю функциональность языка Си вы сможете иметь либо в том же, либо в еще более улучшенном виде в Си++. Не стоит также забывать, что и malloc и printf вы также сможете использовать и в Си++. Потому что язык С++ полностью впитал в себя язык Си. Встретив malloc или printf где-то в коде вы легко найдете описание для этих функций и будете использовать их без каких-либо затруднений. Ведь к тому времени вы уже будете знать из руководства по СИ++ что такое функция в Си и как с ней работать.
Есть ли преимущества С++ по сравнению с Си (ООП не в счет)? Здесь повторю уже вышеприведенное, сказанное когда-то господином Страустрапом:

  • Макрокоманды практически не нужны в С++: используйте const или enum;
  • Чтобы определить поименованные константы; используйте inline;
  • чтобы избежать расходов ресурсов, связанных с вызовом функций; используйте шаблоны типа, чтобы;
  • Задать семейство функций и типов;
  • Не описывайте переменную, пока она действительно вам не понадобится, а тогда ее можно сразу инициализировать, ведь в С++ описание может появляться в любом месте, где допустим оператор;
  • Не используйте malloc(), эту операцию лучше реализует new;
  • Объединения нужны не столь часто, как в С, поскольку альтернативность в структурах реализуется с помощью производных классов;
  • Старайтесь не использовать указателей типа void*, арифметических операций с указателями, массивов в стиле С и операций приведения. Если все-таки вы используете эти конструкции, упрятывайте их достаточно надежно в какую-нибудь функцию или класс;
  • связывание в стиле С возможно для функции на С++, если она описана со спецификацией extern «C»;

Даже если Вы сейчас многого не понимаете из вышеприведенных терминов, не трудно заметить, что в Си++ многое предстает в более безопасном виде, а это значит, что меньше времени Вы будете проводить в отладке.
Таким образом, друзья, моё имхо в том, что начинать надо с хорошей книги по Си++, по-моему мнению для новичка одной из таковых можно считать Х. М. Дейтел, П. Дж. Дейтел «Как программировать на C++» (вы сможете её найти в сети ;) или Г. Шилдт «Теория и практика C++».

Уфф, ну и накатал. Жду комментариев. Всем большое спасибо!

Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70

Daevaorn
Дата 15.5.2007, 15:55 (ссылка) | (нет голосов) Загрузка .
Цитата(FiMa1 @ 15.5.2007, 16:51 )
Что из этого я НЕ БУДУ знать, начав с руководства по Си++.

Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6

FiMa1
Дата 15.5.2007, 16:06 (ссылка) | (нет голосов) Загрузка .
Цитата(Daevaorn @ 15.5.2007, 15:55)
Цитата(FiMa1 @ 15.5.2007, 16:51 )
Что из этого я НЕ БУДУ знать, начав с руководства по Си++.

идеологию процедурного программирования.

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

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

Возможность повторного использования одного и того же кода из нескольких мест программы без его копирования.
Легче отследить поток выполнения программы, чем в случае использования инструкций GOTO или JUMP, которые могут сделать из большой, сложной программы так называемый «спагетти-код».
Возможность поддержки модульности и структурности.

Процедурные языки программирования Ада (язык общего назначения), Бейсик, Си, C++.

В новой версии Си++ не стало функций? Больше нет возможности повторного использования одного и того же кода из нескольких мест программы без его копирования? Теперь в Си++ это реализовано через использование goto? В нем больше нет модульности? Пожалуйста, не говори да.

Это сообщение отредактировал(а) FiMa1 — 15.5.2007, 16:10

Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5

Откройте Страуструп Язык программирования С++, специальное издание параграф 1.6 страница 49 и прочитайте действительно авторитетное мнение, в котором вам доходчиво объяснят зачем нужен С и почему его учат.

adLucem
Дата 15.5.2007, 16:38 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Модератор
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162

Лично я не понял цели этого длинного повествования.

FiMa1, кому ты и что хочешь доказать? Себе — пожалуйста.
С++-никам? Так они с тобой согласятся в большинстве.
С-никам? Так они будут дальше использовать только или почти С, потому что они к нему привыкли/он им больше нравится/личные предпочтения инструментов работы с консолью, файлами, памятью и т.п./нежелание переучиваться/они пишут ядро Линуха/ ит.д.

JackYF
Дата 15.5.2007, 17:06 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6

FiMa1
Дата 15.5.2007, 17:20 (ссылка) | (нет голосов) Загрузка .
Цитата(adLucem @ 15.5.2007, 16:38)
Откройте Страуструп Язык программирования С++, специальное издание параграф 1.6 страница 49 и прочитайте действительно авторитетное мнение, в котором вам доходчиво объяснят зачем нужен С и почему его учат.

adLucem, спасибо! Я не раз перечитал этот пункт книги, прежде чем создавать пост..

Цитирую, для тех у кого нет под рукой издания:
«В качестве базового языка для С++ был выбран С, потому что он:
[1] является многоцелевым, лаконичным и относительно низкоуровневым языком;
[2] подходит для решения большинства системных задач;
[3] исполняется везде и на всем;
[4] стыкуется со средой программирования UNIX.
Но эти же описания, можно отнести и к Си++, т.к. Си стал базой Си++!

Скажу следующее, я НЕ ПРИЗЫВАЮ НЕ УЧИТЬ СИ! Об этом и не говорит сам Страустрап когда пишет «Чем лучше вы знаете С, тем труднее вам будет избежать программирования на С++»
«Язык Си остается подмножеством языка Си++» — стр. 45 того же руководства Страустрапа. Поэтому «Знание Си не является обязательным для из изучения Си++» пишет он на означенной Вами стр. 49.
Всемогущий Биарне не счел нужным развивать дискуссии на эту тему более. Однако, сказав, ключевую фразу ЯЗЫК СИ ОСТАЕТСЯ ПОДМНОЖЕСТВО ЯЗЫКА СИ++.
Вам придется учить Си в любом случае, иначе никак. Но нужно уствоить, что ВЫ БУДЕТЕ ЗНАТЬ СИ, и ВЗЯВ РУКОВОДСТВО ПО СИ++ (можно одно из вышеперечисленных). Из любого из таких руководств Вы получите знание Си и плавно начнете изучение языка Си++.

Добавлено через 6 минут и 55 секунд

Цитата(JackYF @ 15.5.2007, 17:06)
FiMa1, кому ты и что хочешь доказать? Себе — пожалуйста. С++-никам? Так они с тобой согласятся в большинстве.
Цитата
С-никам? Так они будут дальше использовать только или почти С, потому что они к нему привыкли/он им больше нравится/личные предпочтения инструментов работы с консолью, файлами, памятью и т.п.

Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 6
Всего: 9

Hurricane
Дата 15.5.2007, 17:49 (ссылка) | (голосов:2) Загрузка .
Цитата
С-никам? Так они будут дальше использовать только или почти С, потому что они к нему привыкли/он им больше нравится/личные предпочтения инструментов работы с консолью, файлами, памятью и т.п.

Даже не в этом беда. Они будут и дальше _думать_ как в С. Передавать тип объекта в функцию и выполнять действия в зависимости от него. Их будет угнетать необходимость аксессоров и закрытых членов классов — ведь в С это все доступно. Они еще долго после перехода на С++ не будут пользоваться передачей по ссылке, заменяя ее передачей по указателю, проверяя его каждый раз на NULL и городя жуткие конструкции многоэтажных if’ов (хотел написать — элегантно решая их с помощью goto, но сейчас опять полетят гнилые помидоры ), или плодить ненужные экземпляры объектов, передавая их копии. Прочитав чуть ли не в первый день изучения плюсов о перегруженных и виртуальных методах, они еще долго будут проектировать классы без их использования, или вставлять такие конструкции «просто так», «чтобы было». Спросите меня, откуда я это знаю.

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

Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6

FiMa1
Дата 16.5.2007, 09:01 (ссылка) | (нет голосов) Загрузка .
Цитата(Hurricane @ 15.5.2007, 17:49)
Но несмотря на все это, если бы я еще раз проходил изучение языков с нуля, я бы опять начал с С.

Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5

adLucem
Дата 16.5.2007, 09:38 (ссылка) | (нет голосов) Загрузка .
Цитата(FiMa1 @ 16.5.2007, 07:01 )
начинать надо с Си, но с подробной книгой по Си++ в руках

Корень всех зол — преждевременная оптимизация.

Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43

nerezus
Дата 16.5.2007, 09:55 (ссылка) | (нет голосов) Загрузка .
Цитата
Моя позиция такова — да, безусловно, начинать надо с Си, но с подробной книгой по Си++ в руках. Что Вы выигрываете? Изучив Си, в первой половине книги

Мм, а я бы не стал покупать книгу с названием «C/C++». И купил я себе книгу только по C++. Естественно никаких scanf и т.д. там не описывается(и считаю это правильным). И никакой C там не описывается. Примеры таких книг: та же книга Страуструпа, Джесс Либерти и т.д.

Да и собственно библиотеки C++ лишены таких недостатков библиотек C, типа статичных переменных в функциях и т.д.

Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6

FiMa1
Дата 16.5.2007, 10:05 (ссылка) | (нет голосов) Загрузка .
Цитата(adLucem @ 16.5.2007, 09:38)
Корень всех зол — преждевременная оптимизация.

Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 3
Всего: 25

Изучайте и то и другое!

Это сообщение отредактировал(а) dizzy1984 — 16.5.2007, 12:46

dizzy1984
Дата 16.5.2007, 12:45 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59

Vyacheslav
Дата 16.5.2007, 15:01 (ссылка) | (нет голосов) Загрузка .
Цитата(Rockie @ 14.11.2006, 21:48 )
А еще Джоэль Спольски сторонник венгерской нотации и ярый противник использования исключений в программах

Тут кто-то примеры хотел о вредных привычках, перешедших от С?
Можно еще вспомнить, как при переходе с С на С++ больно бьет по рукам более строгая типизация С++.

Цитата(Антоха @ 20.11.2006, 01:22 )
Во-во, именно эта фраза меня сразу и толкунла к тому чтобы изучать я сначала начал всётаки С. Это разумнее как мне кажется! Ну конечно, как говорилось выше, смотря для каких целей Ва это нужно.

А я начинал с С ( С++ тогда в СССР был в ввиде экзотики типа С with classes) , а потом перешел на С++. И могу сказать, что если пред Вами нет задач, для которых нужен С, то ну его нафиг. Будет только мешать.

Преимущества и недостатки C# — Учим Шарп #1

Опубликовано shwan в 06.11.2020

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

Что бы тебе ни рассказывали на всевозможных онлайн курсах, книгах, тренингах и конференциях, о том, как можно стать программистом за 21 день – все это ложь, п*дежь и провокация.

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

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

История языка C#

Я постараюсь долго не задерживаться на этом пункте, но основную информацию расскажу.


Данный язык создан всеми так горячо любимой корпорацией Зла Microsoft в 2000 году. Он очень многое унаследовал от своих родителей (С++ и Java), но и привнес нового.

Возможной версией использования символа хештега принято считать наследование плюсиков от предков, примерно следующим образом: C → C++ → C++++(C#), потому что символ «#» при хорошем воображении можно получить путем объединения 4-х знаков «+».

Язык активно развивается. Регулярно выходят новые версии C#, которые добавляют новые синтаксические конструкции в язык, а также увеличивают его быстродействие и надежность.

Преимущества C#

Данный язык использует объектно-ориентированный подход к программированию во всем. Это означает, что тебе нужно будет описывать абстрактные конструкции на основе предметной области, а потом реализовывать между ними взаимодействие. Данный подход пользуется большой популярностью, потому что позволяет не держать в голове всю информацию, а работать по принципу черного ящика: подал входные данные -> МАГИЯ -> PROFIT.

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

Еще стоит упомянуть, что все это работает на базе платформы .NET Framework. Что это означает? Для многих непосвященных, это просто какая-то приблуда, которую нужно установить на комп, чтобы программа запустилась, но дело обстоит значительно глубже. Написанный тобой код на языке C# транслируется в промежуточный язык (IL), который в свою очередь уже преобразуется в машинный код на твоем компьютере прямо во время выполнения приложения (JIT). Спрашивается, зачем это все? А суть в том, что ты можешь пилить со своим другом Васей на разных языках один и тот же проект и ни одному из вас не придется переучиваться. Но я никогда не видел, чтобы это реально использовали на практике. Но это еще не все. Так как окончательная компиляция из промежуточного кода выполняется в живую на твоей конкретной машине, то возможно увеличение производительности за счет использования специфических команд именно твоего процессора.

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

Ты просто скачиваешь нужное тебе решение из nuget и начинаешь его использовать. В большинстве своем они бесплатны. Сюда же можно отнести большое количество обучающего и справочного материала. Практически на любой свой вопрос ты сможешь найти ответ на стековерфлоу. Ну а на крайний случай всегда можешь спросить в моем телеграм чате для программистов.

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

Но IDE действительно хороша, к тому же имеется ее полнофункциональная бесплатная версия Community.

Еще к плюсам можно отнести строгую типизацию, которая позволяет защититься от дурака, и не так давно появившаяся кросспратформенность в .NET Core (да-да, мелкомягкие потихоньку захватывают линукс).

Недостатки C#

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

C# очень легко дизассемблируется. Это означает, что с большой долей вероятности твой код будет получен и изучен конкурентами. Конечно же, есть специальные инструменты, которые могут усложнить этот процесс, но на 100% защититься от этого практически невозможно.

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

C# не является повсеместно распространенным языком. Большинство программистов сосредоточены в коммерческой Enterprise сфере, что накладывает весьма серьезные ограничения на поиск работы в небольших городах, где кроме Delphi или PHP ничего жизни не видели. К тому же, как бы то ни было, C# в первую очередь ассоциируется с Windows. Вряд ли в обозримом будущем что-то изменится и Винда все также будет продолжать доминировать на рынке, но все же небольшой риск остается, особенно учитывая недавние фейлы с обновлениями в Windows 10.

Перспективы развития C#

C# входит в первую пятерку самых популярных языков программирования на 2020 год. Он используется во многих крупных компаниях, а также и в небольших стартапах. Сейчас компания Microsoft делает большой упор на развитие универсальности и кросспалтформенности для этого языка. Уже сейчас с его помощью можно разрабатывать практически любой тип приложений.

Компания Microsoft остается одной из крупнейших IT компаний мира, а C# ее флагманский язык программирования, который постоянно развивается и впитывает в себя все новые возможности. Поэтому в обозримом будущем проблем у данного языка возникнуть не должно.

Сферы применения языка C#

В этой области C#, наверное, впереди планеты всей. Хочешь разрабатывать обычные приложения для компьютера – пожалуйста, стандартные WinForms Application и консоль тебе в помощь. Хочешь такие же, но покрасивее? – используй WPF. И специальные приложения для магазина в Windows Store тоже. Веб-приложения? – Легко ASP.NET всегда придет на помощь. На Linux? – тоже не вопрос, .NET Core уже здесь. Мобильное приложение? – Xamarin сделает сразу под все платформы. Хочешь написать игру? – движок Unity показывает себя очень даже неплохо, и при этом также адаптирует игру под различные платформы. Хочешь приблизить апокалипсис с восстанием машин и создаешь искусственный интеллект? – есть целая платформа с кучей инструментов для этого Microsoft AI Platform. Также и для компьютерного зрения и ботов. Я вообще с трудом могу придумать пример того, что невозможно реализовать на C#. Я где-то встречал даже операционную систему написанную на шарпе. Поэтому в этой области все хорошо.

Зарплаты разработчиков C#

Здесь все в целом неплохо. По данным на 2020 год, C# явно не является самым высокооплачиваемым языком, но и не самый низкооплачиваемый тоже. Среднее значение зарплаты для данного языка в России около 90к рублей. Это весьма неплохой результат, но бесспорно есть и более дорогие языки. В целом, уровень заработной платы намного больше зависит от прямоты рук и уровня знаний, поэтому не так важно на каком языке писать, главное делать это хорошо. Но данная цифра задает примерный уровень для Middle разработчика в среднем по России. От этого уже можно отталкиваться.

Итоги

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

В целом это перспективный язык, достаточно простой для освоения начинающим. Но следует помнить, что существует множество альтернатив, которые лучше подходят под некоторые задачи. Например, могу порекомендовать языки C++, Java, Python.

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

Основная идея C# — это универсальность. Ты можешь реализовать все на одном языке и для любой платформы, но с большой долей вероятности это будет работать медленнее, чем разработанное специально под конкретную платформу.

Он неплохо подходит как для начинающих в качестве первого языка, так и для реализации крупных коммерческих проектов.

На этом мы заканчиваем наш первый урок. Подписывайтесь на мои социальные сети: Вконтакте, Телеграм, YouTube и Дзен. Ну а еще есть специальный закрытый чат, для изучающих C# по моему курсу. С вами был Вадим. Пока!

Программа минимум: что должен знать начинающий C# программист

Рассказывает Мош Хамедани, автор курсов по C# на Udemy

Мои студенты часто задают вопросы такого рода:

Мош, меня только что приняли на должность Junior C#-разработчик. Что ты посоветуешь? Что мне необходимо выучить?

Итак, если вы ищете первую работу в качестве C#-разработчика или недавно её получили, эта статья расскажет вам, какие навыки являются необходимыми. Я постарался объединить их в единый «путь», который подойдёт желающим разрабатывать как декстопные, так и веб-приложения.

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

Каждый навык будет сопровождаться одной или несколькими ссылками на полезные ресурсы.

Базовые навыки

Вне зависимости от выбранной сферы разработки существует несколько моментов, которые стоит знать.

Структуры данных и алгоритмы

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

4 октября 2020 – 1 марта 2020, Москва и онлайн, беcплатно

Вы можете удивиться, но крупные компании наподобие Microsoft, Apple и Amazon уделяют на интервью много времени именно проверке знания структур данных и алгоритмов, а не ASP.NET 5 или WPF! Они просто хотят понять, можете ли вы мыслить, как программист.

Вот неплохая книга для начала изучения: Data Structures and Algorithms Made Easy

Если вы в чём-то не разобрались — не отчаивайтесь! Просто убедитесь, что вы поняли, что такое списки, стеки, очереди, деревья и хеш-таблицы, и умеете их реализовывать на чистом C#. Реализуйте несколько алгоритмов поиска и сортировки.

Базы данных

SQL Server — это наиболее часто используемая реляционная СУБД среди .NET разработчиков. Разберитесь в основах реляционных баз данных и базовых операциях в SQL Server.

T-SQL — это язык запросов, используемый в SQL Server. Освойте функции SELECT, INSERT, UPDATE, DELETE, JOIN и GROUP BY.

Вот полезные материалы:

Когда вы работаете с РСУБД, то часто используете системы объектно-реляционного отображения для работы с объектами в базе данных. Существует много таких систем, но самой популярной является Entity Framework.

Материалы для изучения:

Веб-разработка

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

Поэтому все веб-разработчики делятся на 3 группы:

  • Фронтенд-разработчики;
  • Бэкенд-разработчики;
  • Full-stack-разработчики: те, кто занимаются и фронт-, и бэкендом.

В зависимости от ваших предпочтений стоит выбрать один из двух путей. Full-stack-разработчики обычно более востребованы.

Фронтенд

Если вы собрались заняться фронтендом, то вам нужно познакомиться с основами HTML, CSS и Javascript.

HTML — это язык разметки веб-страниц. В отличие от языков программирования (таких как C#), у него нет логики. Для декорации нашей страницы мы используем CSS. И, наконец, JavaScript — язык, отвечающий за поведение веб-страницы.

Материалы для изучения:

Бэкенд

ASP.NET MVC — это доминирующий среди C#-разработчиков фреймворк для создания серверных веб-приложений. Для работы с ASP.NET MVC вам всё равно потребуется базовое знание HTML, CSS и Javascript. Поэтому я советую вам начать изучение с фронтенда и затем перейти к бэкенду, изучив весь спектр веб-разработки.

Вот моё руководство, в котором мы создадим простое приложение с использованием ASP.NET MVC5 и Entity Framework 6: A Step-by-Step ASP.NET MVC Tutorial for Beginners

Десктоп-разработка

Если вы хотите заняться разработкой приложений под Windows, вам понадобится отличный от предыдущего набор навыков (хотя и они, как ни странно, могут пригодиться). Большинство заданий потребует от вас знания XAML, WPF или Windows Forms.

10 фактов в пользу C# в 2020 году

«Разве стоит изучать C# сейчас?» — этот вопрос мне приходится слышать время от времени. Предположим, у вас есть друг – JavaScript-программист, искренне недоумевающий от причин изучать С#. Что же, похоже настало время развеять это недоумение.

Для начала давайте проясним, какие нужно иметь при себе «в запасе» технологии и фреймворки, которые вы можете использовать каждый день, – это хорошая практика. Технология, которая действительно «отмирает», как только появляется сколь-нибудь более современный аналог, не стоит нашего внимания. Выбор «подходящего» языка программирования, который мы будем использовать практически каждый день, всегда было стрессовым вопросом. И если у вас ещё нет окончательного ответа, возможно, эта статья позволит вам определиться.

Использование .net core под Linux означает, что вам никогда больше не нужно прикасаться к Windows-серверам (конечно же, если вам самим этого не захочется)!

    Это не тотMicrosoft, который был раньше

Для тех разработчиков, которые никогда не прикасались к продуктам Microsoft, использование их инструмента кажется синонимом к зацикленности на одной торговой марке, сумасшедшим проприетарным лицензиям, голубым футболкам и так далее. И, будем откровенными, не так давно все это так и обстояло. Сообществу .NET – разработчиков потребовалось немало времени, чтобы избавиться от этого. Не очень-то весело застрять в рамках Windows-машины и дорогих Windows-серверов, в то время как мир значительно больше этих рамок. В частности, это одна из причин, почему я оставил платформу .net и решил попробовать Ruby on Rails, но это уже другая история. Что подкупает, так это любовь современной Microsoft к открытым платформам.

Действительно, все ваши опасения касательно Microsoft могли бы быть правдой, если бы не open-source и одержимость мыслью о том, что коды инструментов разработки должны быть доступны каждому и каждый разработчик сам бы смог выбирать удобные ему инструменты разработки.
А учитывая то, что Microsoft собирается выкупить GitHub (уже выкупила – прим. переводчика), похоже, что компания все больше близится к своим непосредственным истокам – а именно к созданию инструментов для разработки.

Это все еще тотMicrosoft, который был раньше

Не будем забывать о том, что Microsoft – это, в первую очередь, гигант программной индустрии. Что это значит? А это значит, что за С# стоит такая мощь, которая в любом случае будет поддерживать язык программирования «на плаву» в течение многих лет.

C#заслужил свое место

Согласно показаниям опроса, проводимом на Stack Overflow, C# занимает 8 место в списке наиболее популярных технологий. В 2020, правда, было четвертое. И 4 года подряд до этого так же четвертое. «Падение» с 4 позиции на 8 частично может быть объяснимо добавлением html и css к опросу 2020 года, а с популярностью этих технологий трудно соперничать. Так, в 2020 году около 34.4 процентов разработчиков в списке наиболее часто используемых инструментов называют С# — и с этими показателями, пожалуй, ни один из существующих языков не может посоперничать.

Нативные мобильные приложения

Используя Xamarin и C#, вы сможете создавать мобильные приложения для IOS и Android (ну и для Windows Phone, ясен пень). Почему? C 2020 года Xamarin стал частью Microsoft, которая к тому же дала доступ к исходному коду.

Разработка на Mac, деплой наLinux

А вот это прямая отсылка к .net core, так как .net core – это современный кроссплатформенный стандарт. .Net core работает в рамках Windows, Mac и Linux-сред – без никаких дополнительных танцев с бубном. Что это значит? Это значит, что вы можете разрабатывать на C# программы для практически всех существующих наиболее популярных операционных систем, конечно же! Microsoft предоставила отличный инструментарий для разработки под все вышеперечисленные технологии.

Быстрые и современные (веб) приложения на .netcore

Net core и asp.net core – инновации в мире .net и asp.net стандарта-фреймворка. Когда-то монолитные, закрытые технологии теперь перестали быть такими! Разбор в деталях был бы вопросом уже другой статьи, но комбинация C# + (asp).net core является более чем достойной причиной начать изучать С#.

VisualStudio– не более чем опциональное решение

Разработка под С# значила использование Visual Studio. Некоторым разработчикам было все равно, некоторым это пришлось не по душе. Теперь же, если хотите, вы можете использовать любой удобный для вас текстовый редактор + командную строку для компиляции. Плюс, если что, уже на данный момент существует Visual Studio для Mac (хотя и пока-что не такая мощная, как для Windows).

Андерс Хейлсберг и Медс Торгерсен

Андерс Хейлсберг является создателем С#. Он работает на постоянной основе в Microsoft. Хейлсберг является одним из самых светлых ныне живущих умов в современной компьютерной индустрии. Но, поскольку на данный момент он переключился на TypeScript, программным менеджером C# стал Медс Торгерсен.

Адекватное асинхронное программирование

С использованием C# асинхронное программирование станет намного проще и безболезненнее: async-await на страже ваших нервных клеток! Вырезка из официальной документации: «Используя эти два ключевых слова, вы сможете использовать ресурсы .NET Framework, .NET Core или Windows Runtime для создания асинхронных методов так же просто, как и для создания синхронных».

К примеру, те же async-await в JavaScript были сделаны по примеру таки С#.

Надежное, составное, компилируемое

Конечно, тот факт, что C# — компилируемый, статически типизируемый язык программирования, не делает его особенным. Но стоит ли переходить на C# с таких динамически типизированных языков, как PHP, Python, Ruby и так далее, понимая, что для работы со строго типизированным кодом вам наверняка понадобится больше сноровки? Что же, возможно это так. Но, тем не менее, строго типизированный код позволяет работать со связями в коде, находить определения, проводить «безопасный» рефакторинг и так далее. В общем, применять множество тех вещей, которые в значительной мере упрощают процесс программирования.

Обратная сторона медали заключается в том, что каждый раз, как только вы хотите запустить свой C#-код, для начала вам необходимо его скомпилировать. Это может надежно «вырубить» некоторых разработчиков, привыкших работать в рамках динамически типизированных интерпретируемых языков программирования, так как им будет казаться, что постоянная предварительная компиляция замедляет процесс разработки приложения. Впрочем, разрабатывая более масштабное приложение, преимуществом такого подхода становятся возможности современных сред разработки – а именно отладка, рефакторинг или расширение кода

Как это может мне помочь?

Появление .net core открыло множество дверей для C# в частности и стандарта .net в целом. Итак, вы думаете, что С# «отмирает»? Спешим разубедить. Его будущее ярко и солнечно, а кроссплатформенность привлечет новое поколение разработчиков.

Автор перевода: Евгений Лукашук

C# — Что лучше для начала ? С или С++

На чем основано ваше высказывание? На пример мы при тестах в инсте узнали, что среди аналогичныч программ на C++ и C# работающих через ADO с SQL базой на C# работают быстрей.

Ну а на счет скорости запуска и занимаемой оперативной памяти C++ конечно впереди.

На чем основано ваше высказывание?

Ну а на счет скорости запуска и занимаемой оперативной памяти C++ конечно впереди.

ну,во первых ADO это адо,попробуй заклиентиться через сеть,увидишь странные результаты,скорость от теста к тесту будет меняться то в пользу .NET то в пользу С++
на С++ можно написать механизм работы с АДО обгоняющий шарп,но нахрена если разницы не заметишь?

а вообще кей правильно сказал:
«Actually I made up the term \»object-oriented\», and I can tell you I did not have C++ in mind.»
P.S.
повторюсь-выбирай что душе ближе,хоть питон :)

Сообщение отредактировал tz-lom — 17.01.09, 18:15

Ага, все уже пистолеты наточили? Ну тогда и я выскажусь.
Независимо от всех споров и высказывания мнений, каждый все же выбирает тот язык, на котором ему писать удобно или необходимо.
Новичкам, понятное дело, нравится C# ввиду его легкости, но нельзя забывать, что на кпк фреймворк при запуске «отъедает» изрядное количество ресурсов. Быстродействие кода C# не намного меньше чем у C++, когда необходимые сборки уже скомпилированы (например, код вызывается второй и последующий разы после старта приложения и до его завершения). Но при старте, разумеется, .NET программы сильно проигрывают нативным приложениям.
Еще про C# хотелось бы сказать, что при его использовании для реализации сложных вещей этот язык не намного проще C++ или С (закоронелые дотнетчики, попробуйте сделать клиент-сервер с ремоутингом, и вы поймете, о чем я).

С другой стороны, научиться писать С++ и С программы сложнее. Но честное слово, оно того стОит. Вы получите практически все возможности своей машинки, если сможете их использовать, конечно.

Вывод — если надо написать какую нибудь программку, чтоб похвастаться перед знакомыми, хватайте C# или VB.NET — и в путь.
Если хотите написать потом и что-то посложнее — лучше сразу начинать с C++.
Однако, если мне нужно быстро написать огромное приложение без особых требований к железу но зато с огромной кучей бизнес-логики, то выбор обычно падает на дотнет, к моему большому стыду.
Воооттт. :)

это говорит лишь о том, что «аналогичную программу» на си писал кто-то очень криворукий.

Помнится аналогично скептически относились и к Delphi, типо она очень не эффективный код компилит, пока пара людей не провела нормальные тесты с дизассемблированием аналогичных программ на Delphi и на C++, которые и показали что разницы критичной в общем то и нет и все это лишь ИМХО заядлых программеров.

Я прекрасно понимаю людей которые всю жизнь программили на Си, а тут вдруг появился СиШарп, да еще и ненативный какой то :happy: Людям свойственно отрицать то, что им не привычно. А вы вот для начала попробуйте сами проведите элементарные тесты и проверьте результаты (именно работы приложений). И кстати, скорость запуска .NET приложений заметна только на КПК, на ББ вприципе уже и разницы то не заметно, так что с приходом гигагерцовых мобильных процов, интегрированных видеоподсистем и более быстрой оперативной памяти на КПК, я думаю, что грань между нативом и не нативом сотрется для пользователя (сам кстати тоже не люблю .NET).

Сообщение отредактировал shep — 17.01.09, 22:22

shep,
ну,во первых я как пользователь традиционно старых компов (3,5 года назад у меня в ЛИЧНОМ пользовании был только 386 под который я писал программы,далее pentium 166 и небывало мощный целерон аж 2 гигагерца с целыми 512МБ на борту и встроенной видеокартой в подарок!) просто терпеть не могу ненативный код,и если на твоей машине запуск дотнет программ не заметен,то я им мог «наслаждаться» и по 40 секунд и более.
це раз
на Delphi я пишу ещё с. правильно,386го :),на первой делфе,и никогда не имел претензий к выдаваемому бинарнику и скорости его работы (не тормозило)
с приходом терагерцовых процов и прочей хрени правило «пиши хороший быстрый код» никто не отменил,ибо все эти терагерцы и пикобайты с радостью сожрёт индусский код от мелкософт (дотнет в том числе)

про всю жизнь на Си это опять таки мимо,я вообще ненавижу С++,хоть и пишу на нём :lol:
да,вот такая вот загадка,ибо приходится,когда нибудь (когда доделаю всё что надо доделать) я радостно пополююсь в сторону С++ и буду его обсирать как сейчас дотнет :rofl:
а пока я просто хочу призвать людей писать так как это ближе к системе,понимать КАК выполняется их код,что такое компьютер и ОС внутри,а не писать индоподелки которые работают чёрт его знает как
в конце концов хороший программист на .NET это всего лишь хороший программист на .NET,не более а Сишник сможет же при желании изучить синтаксис да хоть ассемблера и писать на нём не менее хорошие программы,ибо понимание Си приводит к пониманию как работают эти железки >-)

shep,
ну,во первых я как пользователь традиционно старых компов (3,5 года назад у меня в ЛИЧНОМ пользовании был только 386 под который я писал программы,далее pentium 166 и небывало мощный целерон аж 2 гигагерца с целыми 512МБ на борту и встроенной видеокартой в подарок!) просто терпеть не могу ненативный код,и если на твоей машине запуск дотнет программ не заметен,то я им мог «наслаждаться» и по 40 секунд и более.
це раз
на Delphi я пишу ещё с. правильно,386го :),на первой делфе,и никогда не имел претензий к выдаваемому бинарнику и скорости его работы (не тормозило)
с приходом терагерцовых процов и прочей хрени правило «пиши хороший быстрый код» никто не отменил,ибо все эти терагерцы и пикобайты с радостью сожрёт индусский код от мелкософт (дотнет в том числе)

про всю жизнь на Си это опять таки мимо,я вообще ненавижу С++,хоть и пишу на нём :lol:
да,вот такая вот загадка,ибо приходится,когда нибудь (когда доделаю всё что надо доделать) я радостно пополююсь в сторону С++ и буду его обсирать как сейчас дотнет :rofl:
а пока я просто хочу призвать людей писать так как это ближе к системе,понимать КАК выполняется их код,что такое компьютер и ОС внутри,а не писать индоподелки которые работают чёрт его знает как
в конце концов хороший программист на .NET это всего лишь хороший программист на .NET,не более а Сишник сможет же при желании изучить синтаксис да хоть ассемблера и писать на нём не менее хорошие программы,ибо понимание Си приводит к пониманию как работают эти железки >-)

Не спорю ни с 1 словом. Программиста, который знает только ненативные языки программирования программистом не считаю (он скорее оператор ЭВМ :P )

C или C++ что выбрать

День добрый! Я начинающий программист, очень хочется писать под Linux. Что же мне выбрать C или С++? Порекомендуете! Заранее спасибо!

Re: C или C++ что выбрать

Мне лично, больше нравится С99.

Re: C или C++ что выбрать

С Си будет жить проще. Когда станет не хватать, учи сразу схему/лисп

Re: C или C++ что выбрать

Re: C или C++ что выбрать

А в каком направлении хочется писать?

Re: C или C++ что выбрать

Re: C или C++ что выбрать

Re: C или C++ что выбрать

> А в каком направлении хочется писать?

BioReactor real-time control management.

Re: C или C++ что выбрать

в направлении сетевых приложений, в частности в области Ldap.

Re: C или C++ что выбрать

Re: C или C++ что выбрать

>А в каком направлении хочется писать?

Настенная живопись, то бишь расписание стен остатками живых программистов.

Re: C или C++ что выбрать

Сначала лучше выучить C

Re: C или C++ что выбрать

Да и лучше не учить, а решать какие-нибудь задачи, используя Си как инструмент. Практика в первую очередь.

Re: C или C++ что выбрать

Если ничего до сих пор серьзного не написал, то лучше всего начать с C. Потом к чему-нибудь более специализированному и удобному в своей области.

Существует обоснованное мнение, что если на чём то пишешь, то нужно знать как оно работает. т.е. используешь Java — разберись с устройством VM и GC. Используешь Python — напиши пару интерпретаторов. Используешь C — учи asm. ;)

Re: C или C++ что выбрать

Тему сперва в talks, потом в топку :)))

А вообще, конечно pure C :) или С & glib

Re: C или C++ что выбрать

Недавно в Москву приезжал дядька из МС, говорил, что они давно уже экспериментируют с Хаскелем. Уверял, что ФП и в частности Хаскель — это очень круто, потому что можно автоматически распараллеливать код, а это сейчас очень важно в свете многоядерных процессоров.

Re: C или C++ что выбрать

А на μC++ они не смотрели?

Re: C или C++ что выбрать

Кстати, есть еще C#! :)

Re: C или C++ что выбрать

не знаю, может и смотрели, но упомянул он только о Хаскеле

Re: C или C++ что выбрать

>Недавно в Москву приезжал дядька из МС, говорил, что они давно уже экспериментируют с Хаскелем.

вас это удивляет? ghc разрабатывается в microsoft research’е

>Уверял, что ФП и в частности Хаскель — это очень круто, потому что можно автоматически распараллеливать код, а это сейчас очень важно в свете многоядерных процессоров.

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

Re: C или C++ что выбрать

>то что можно — это все понятно(функции «чистые»), но на практике не выгодно автоматически распараллеливать

и что сие должно означать ?

>хотя паралелизовать при помощи Control.Parallel очень легко и понятно, хотя явный хак

в каком месте это хак, да ещё и явный ?

>ну еще не стоит забывать про ленивость, она сильно производительность снижает

совершенно верно. только не всегда, не сильно, не снижает. и не ленивость

Re: C или C++ что выбрать

если выбор из C и C++, то несомненно C. независимо от того, какой высокоуровневый язык будешь применять в дальнейшем, без знания C далеко не уйдёшь. удачи

Re: C или C++ что выбрать

> ну еще не стоит забывать про ленивость, она сильно производительность снижает

В теории она вовсе не обязана этого делать. И умные компиляторы об этом знают (см. Clean).

Цукерберг рекомендует:  21 пример красивых сайтов приложений для iPhone
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих