C++ или С#
Или, учитывая, что языки из одного семейства, я особо много не потеряю?
Java или javascript
какая аналогия в яп летчику поезда?
Сишарп для юнити
Дтф для тупых вопросов
Это какая-то форма прокрастинации — ходить по интернету и спрашивать что же мне лучше выучить, А или Б. Какой язык, какой движок, какую книжку, какой пакет моделирования.
Правильный ответ — оторвать жопу и начать уже хоть что-то делать. Если первый шаг сделан, то — продолжать что-то делать, а не прыгать между 100+ связками технология\движок\язык.
Спасибо добрый человек. А какой видеоредактор посоветуете начинающему ютуберу?
А ты с какой целью интересуешься? От этого зависит ответ.
И не надо строить иллюзий что языки одного семейства, они отличаются так же как банан от огурца
Пока нету точной цели, учу просто для развития, не ставлю определённый язык как
Нельзя просто прочитать книжку и выучить язык. Языки вообще не учатся. Можно ознакомиться с синтаксисом, но смысл фич ты поймешь только тогда когда будешь использовать язык для конкретных задач. Особенно это касается С++ — я сомневаюсь что вообще есть люди которые знают все его тонкости.
Даже Страуструп и те, кто составляют стандарт, наверно не все знает
Фундаментально реши, каким программистом ты хочешь стать.
Если хочешь писать охрененные низкоуровневые алгоритмы, и выжимать последние проценты из железа, учи C++. C# абсолютно бесполезен как язык в этом плане. Даже Unity вон неспешно мигрирует на DOTS (считай, мелкое не-ублюдочное подмножество C#, работая в котором ты ощущаешь себя Си-программистом из 80-х годов, но зато твой код работает почти так же быстро, как работал бы хорошо написанный аналогичный C++ код). В этом направлении очень много бабла, если ты уходишь в финансы (весь speed трейдинг — чистый C++), очень много фана, если ты уходишь в геймдев (почти всё, что не юнити — чистый C++; все вот эти фростбайт энжины, сорс энжины, все движки всяких юбисофтов и EA, и так далее). Много работы в серверном мире, но надо знать куда идти где востребована производительность (гугл, яндекс, прочее такое крупное, а мелкие компании не будут писать C++ сервера под бизнес-задачи приблизительно никогда, т.к. железо для них будет дешевле времени программиста). В РФ сильно меньше возможностей, чем не в РФ.
Если хочешь просто соединять готовое, посмотри на C# и Python. Ты будешь сильно продуктивней, если надо просто сделать чтобы что-то работало. Скажем, надо тебе в Azure поднять фигню, котрая будет что-то считать и хранить для пользователей, а потом что-то другое отправлять в другой сервис — хуяк-хуяк, готово. Тут примотал какой-то готовый нугет изолентой, там нафигарил адаптер от одной библиотеки к другой, и всё заработало. Самому писать ничего не надо. Получилось медленно и через жопу, зато работает вот прямо уже, а не через два месяца. Заодно будь готов подхватить ещё полдюжины языков под всякие отдельные задачи (тут прилепить чей-нибудь JS код, там позвать какую-то фигню на Scala. ). Есть куча людей, которым это приносит больше фана чем первый вариант с C++. В первую очередь, требования к тебе как к программисту сильно ниже. Денег в целом сильно больше для людей среднего уровня (т.к. быстро решаются вполне понятные бизнес проблемы, и это приносит вполне понятное бабло), но потолок роста для программиста очень низкий. Либо ты уходишь в руководящие должности, либо остаёшься примерно на той же зарплате что и средний senior, т.к. между средним C# программистом и крутым C# программистом для бизнеса в общем очень невелика разница. Это примерно как разница между начинающим укладчиком асфальта и крутым укладчиком асфальта — асфальту в общем плевать, кто его укладывал, если руки не совсем уж из жопы. Ты никогда не станешь Джоном Крамаком или Джеффом Дином. Будь готов стать безымянным code monkey, если не повезло с компанией.
Но. Есть третий вариант: уйти в профессию, для которой кодинг — просто инструмент. Модный buzzword последних нескольких лет — data scientist, например. Обучать нейронки, анализировать петабайты говна, и пр. Там в общем от выбора языка мало что зависит, т.к. вполне может быть, что твоя гигантская сеть, обучаемая на кластере из 2000 серверов, тупо зовёт из python код какого-нибудь уже готового фреймворка (и плевать, в общем, насколько оно быстро и медленно, т.к. твой личный код ничего не привносит). Там в целом полезно знать все языки, но не надо быть специалистом в каком-то конкретном. Потолок ЗП крайне высок, но надо применять мозг.
Что лучше выбрать, C или C++?
И то и другое сложно, т.к. это два разных языка для решения разных задач. Даже подход к разработке разный. Многие до сих пор используют «C с классами» и думают, что пишут на C++. Другое дело, что зная C/C++, легче начать использовать C++/C, чем зная Java.
На ваше усмотрение и в зависимости от того, чем вы хотите заниматься. C++ объективно сложнее и имеет более высокий порог вхождения. Вроде на Java какие-то игрушки под андройд пишут, хотя я и не уверен.
- Вконтакте
Справедливости ради, на Java есть игровые движки, например, libgdx. Но это скорее тот случай, когда прям пригорает сделать игру, знаешь Java, а учить новый язык нет времени и желания. Специально под один только libgdx учить джаву смысла нет.
Имеет смысл учить готовый движок или хотя бы библиотеку, чтобы не потратить пару лет жизни и получить в итоге бледное подобие гульмена. Игры это в первую очередь контент — геймплей, история, левел-дизайн, а не движок; времена технологических прорывов типа Wolfenstein 3d → Doom → Quake и гениев-одиночек прошли. Даже если у вас какой-то совершенно революционный геймплей, все равно лучше взять либу, которая упрощает вывод на экран, работу со звуком, загрузку ассетов и прочее (OpenGL довольно низкоуровневая вещь).
Важность C при обучении программированию
Программирование — процесс создания разработчиком софта, который бы запускался на компьютере и решал конечное количество проблем. Люди занимались программированием с тех пор, как были изобретены компьютеры. Сначала это делалось с помощью вакуумных трубок, а после изобретения транзисторов — с помощью бинарных кодов. Первые низкоуровневые языки программирования появились одновременно с Colossus — первым программируемым компьютером.
С тех пор в этой сфере произошло много изменений, разработчики постоянно улучшают компьютерные системы. В наши дни мы можем наблюдать компьютеры, которые в тысячи раз мощнее тех, что были в начале технологической эры.
OС и программирование
Сначала все компьютеры были одинаковыми и использовали одинаковую архитектуру, но со временем появилась необходимость в операционной системе, которая бы взяла на себя управление базовыми операциями над «железом» компьютеров. Так появились несколько ОС. Деннис Ритчи был человеком, который переписал одну из них — Unix — с ассемблера на С. Для того, чтобы «обучать» операционные системы, необходим был язык программирования, который говорил бы им, что делать. Таким образом, программирование — это процесс создания набора команд, которые говорят, какие операции должна исполнять ОС.
C — низкоуровневый язык программирования, который поддерживает прямое управление «железом». Он был разработан Деннисом Ритчи в 1973-ем году в AT&T Labs. С помощью этого языка вы можете с легкостью управлять памятью, процессором, регистрами и даже подключенными устройствами! Ассемблер также был одним из первых языков низкоуровнего программирования, изобретенных после бинарных кодов, но он был менее понятен человеку, чем C.
Язык C также известен как отец современного программирования. Хоть кроме него и существовали языки вроде BASIC, С имел гораздо больше преимуществ, чем его конкуренты.
С — язык общего назначения. В нем нет классов, нет интерфейсов. Зато в нем есть гораздо более полезные и мощные инструменты — например, указатели и многие другие, позволющие манипулировать памятью прямо во время исполнения программы. Также С использовался как «строительный материал» для других, более высокоуровневых языков: Java, D, C#. C++ и Objective-C после компиляции превращаются в код на C, который затем компилируется в машинный код ради более быстрого исполнения.
Почему больше не пишут хорошего софта?
Новое поколение разработчиков занято привлечением внимания аудитории, а особенно девушек, а не своей основной задачей — построением лучшего цифрового мира. Я видел слишком много вопросов вроде «Почему я получаю ошибку null ?». Серьезно? Человек, задавший такой вопрос, не понимает самой сути программирования, не желает самостоятельно разобраться в проблеме. Он всего лишь услышал где-то, что Билл Гейтс — самый богатый человек на земле, и решил, что он может стать таким же. Все, что ему нужно — это всего лишь создавать софт, и скоро он будет миллиардером! Такой менталитет современных программистов не позволяет им создавать хорошие программы.
Зачем учить С?
Навык программирования на С очень важен, и С должен преподаваться в университетах вместо С++. Пусть С++ и поддерживает ООП, С — это тот язык, который должны знать 90% программистов. 10% могут полагаться на С++ или любой иной высокоуровневый ЯП. За свою программистскую карьеру я учил C#, Java, Visual Basic, ASP.NET и многие другие высокоуровневые языки, и всегда были люди, которые жаловались на их скорость. Знаете, что им всегда отвечали? Учите С или С++, так как они компилируются в машинный код, а значит, выполняются с крайне большой скоростью!
Проблемы на уровне университета
В университете, где я учусь, преподают только С++ и только на бумаге. По мне, так учить программированию без практики — это значит убить саму концепцию программирования. И хотя в моем университете это происходит из-за недостатка хороших кадров, новые программисты ВСЕГДА должны быть обучены навыкам программирования. Помню себя во времена изучения мною HTML — код ASP.NET для меня тогда выглядел ужасно запутанно.
Побочные эффекты незнания низкоуровневых ЯП
Большинство встраиваемых устройств и микроконтроллеров требуют понимания низкоуровневого программирования и его концепций: управления памятью, указателей и многих других. Современный разработчик (который пишет только приложения на .NET и для Android) никогда не сможет программировать такие устройства. Кроме того, существует такая штука, как Интернет Вещей. И хотя она может программироваться на .NET, но сами соединенные устройства должны использовать низкоуровневый язык для получения лучшего результата.
Отсутствие поддержки
Для низкоуровневых языков вроде ассемблера или С нет нормальной поддержки. Visual Studio (лучшая IDE, по моему мнению) не поддерживает проекты на ассемблере (хотя MASM все же присутствует). Из-за этого недоразумения большинство крупных колледжей не учат студентов низкоуровневым языкам, которые объясняют концепцию программирования на самом деле. Это убивает любое желание ученика лучше понять архитектуру компьютера и писать софт под нее, вместо этого они пишут приложения для себя, а не для публичного использования.
Сделай или Сдохни; С или Слепота
Студенты должны понять разницу между высокоуровневым и низкоуровневым программированием, и их мозги должны быть настроены таким образом, чтобы всегда предпочитать низкий уровень высокому, что, в свою очередь, приведет к тому, что их программы будут более простыми и эффективными, чем написанные на высокоуровневых языках. Программист всегда должен предпочитать эффективный, но более сложный путь легкому, но неэффективному. Фреймворк, на котором написано приложение, в любой момент может стать неактуальным или что-то в этом роде, в то время как софт, написанный на низкоуровневом языке, никогда не устареет. Таким образом обеспечивается не только эффективность приложения, но и его качество.
Изучение С онлайн
Я долгое время искал компилятор и хороший справочник по С и нашел прекрасный ресурс, где можно исполнять код на С онлайн.
Что учить с или с
Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008
Репутация: нет
Всего: нет
Профиль
Группа: Участник
Сообщений: 141
Регистрация: 5.12.2009
Репутация: нет
Всего: -1
Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения
Репутация: 52
Всего: 211
Цитата |
Учить С или С++ |
C#
Но если выбор между этими двумя языками — C++
Цитата(EgorTheBlade @ 25.1.2010, 19:53 ) |
P.s С++ без C безполезен |
Вы это прекратите!
Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008
Репутация: 4
Всего: 49
Цитата(ArniLand @ 25.1.2010, 19:42 ) |
Возникает вопрос — стоит ли нагонять упущенные знания на С или взять книгу для начинающих уже по С++ и там нагонять упущенное? |
Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия
Репутация: нет
Всего: 9
2 ArniLand :
Мой тебе совет: учить изначально С, только потом С++.
Обоснование: несмотря на то что С++ многими считается объектно-ориентированым, он считается, как правильно выразился С. Майерс: "Конгломератом языков и технологий". Тут тебе и си с классами и обобщенное и чего токо нету! Это не просто язык, это именно конгломерат!
Это говорит о том, что если взглянуть на код методов какого-либо класса в ООП-проекте, то можно увидеть его написаном в процедурном стиле!
А как иначе-то ? Согласен, построение множества проектов и их разработка делается с уклоном на ОО, но вот внутри методов, это уже привычный чуть ли не чистый "си" !
Это что касательно того, стоит ли учить С или сразу С++ ?
Более веским аргументом является наша с вами жизнь разработчика, которая не однократно била нам по эго! Мы кричим: "Да нету тут бага, тут все круто!" , но спустя несколько часов осознаем, как мы были не правы. Как бы вы не хотели знать заранее и как бы вы не предугадывали, то вам никогда не удастся абсолютно все учесть! Это я к тому, что если через 5 лет вам предложат чистый С, за очень хорошие деньги, то вы можете шибко пожалеть о его не знании. А знать наверняка, будет или не будет, вы не можете!
Так что учиться, учиться и еще раз учиться. Благо знания никогда лишними не были! 😉
Забыл порекомендовать вам повторить или изучить стандартные алгоритмы изучаемые в ВУЗе связанные с деревьями, графами, сортировками. Это очень вам поможет!
Также рекомендуется повторить\изучить получение оценки сложности алгоритма. Это даст вам понимание, какой из вариантов функции оставить, если встретится ситуация, когда надо будет выбрать.
Это сообщение отредактировал(а) EvilsInterrupt — 25.1.2010, 20:35
Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения
Репутация: 52
Всего: 211
Цитата(EvilsInterrupt @ 25.1.2010, 20:29 ) |
Обоснование: несмотря на то что С++ многими считается объектно-ориентированым, он считается, как правильно выразился С. Майерс: "Конгломератом языков и технологий". Тут тебе и си с классами и обобщенное и чего токо нету! Это не просто язык, это именно конгломерат! |
Это не обоснование, C и C++ совершенно разные языки, это тоже самое что сказать — учите сперва паскаль а потом C++. Совершенно разные языки, разные подходы к решения одной и той же задачи, практически все разное, вот именно такими методиками и воспитывается поколения программистов изобретающих велосипеды, вместо использования стандартных контейнеров.
Добавлено через 2 минуты и 1 секунду
Цитата(EvilsInterrupt @ 25.1.2010, 20:29 ) |
Как бы вы не хотели знать заранее и как бы вы не предугадывали, то вам никогда не удастся абсолютно все учесть! Это я к тому, что если через 5 лет вам предложат чистый С, за очень хорошие деньги, то вы можете шибко пожалеть о его не знании. А знать наверняка, будет или не будет, вы не можете! |
Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008
Репутация: нет
Всего: нет
Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008
Репутация: 10
Всего: 33
Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008
Репутация: нет
Всего: нет
Вы это прекратите!
Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008
Репутация: 4
Всего: 49
Цитата(ArniLand @ 25.1.2010, 21:09 ) |
учусь на специальности инженер по разработки программного обеспечения на первом курсе, к сожалению пока не определился в каком направлении буду работать |
Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008
Репутация: 10
Всего: 33
Цитата(ArniLand @ 25.1.2010, 21:29 ) |
просто преподаватель нам сказал |
Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007
Репутация: нет
Всего: 2
Цитата(ArniLand @ 25.1.2010, 19:42 ) |
Возникает вопрос — стоит ли нагонять упущенные знания на С или взять книгу для начинающих уже по С++ и там нагонять упущенное? |
Имхо одно второе дополняет. Читая учебники (книги) по С++ вы будете изучать Си. То есть в книгах страниц так 200-400 (толстых книгах ) отведено к началу программирования. А вот в начале собственно что Си что С++ . разница минимальная. это уже потом (углубляясь в программинг) вы будете видеть разницу.
Сам учился с плюсов а потом находил разницы в этих языках.
Из личного опыта (учению в бурситете) скажу что если предмет назвали С++ это еще далеко не факт что учить будут плюсам. что собственно у нас и было )))
Если начинать будете именно с классов и ООП. тогда имхо ничего не поймешь пока не выучишь начальный материал.
Цитата(EvilsInterrupt @ 25.1.2010, 20:29 ) |
Более веским аргументом является наша с вами жизнь разработчика, которая не однократно била нам по эго! Мы кричим: "Да нету тут бага, тут все круто!" , но спустя несколько часов осознаем, как мы были не правы. Как бы вы не хотели знать заранее и как бы вы не предугадывали, то вам никогда не удастся абсолютно все учесть! Это я к тому, что если через 5 лет вам предложат чистый С, за очень хорошие деньги, то вы можете шибко пожалеть о его не знании. А знать наверняка, будет или не будет, вы не можете! |
имхо как то нелепо. всё зависит от человека. так можно и на АСМ присесть. А там и еще круче деньги. дело зависит чисто от человека. Хочет заниматься он этим или нет.
Цитата(azesmcar @ 25.1.2010, 20:33 ) |
Это не обоснование, C и C++ совершенно разные языки, это тоже самое что сказать — учите сперва паскаль а потом C++. Совершенно разные языки, разные подходы к решения одной и той же задачи, практически все разное, вот именно такими методиками и воспитывается поколения программистов изобретающих велосипеды, вместо использования стандартных контейнеров. |
Кстати да. не смотря на то что плюсы это как "продолжение" обычного Си. Но подход к программингу совершенно другой. а что только не делали наши предки чтобы делать некое подобие STL ))) когда там это уже всё реализировано и остается только вызвать специальную ф-цию и всё.
Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re
Репутация: 27
Всего: 154
Цитата(ArniLand @ 25.1.2010, 21:09 ) |
учусь на специальности инженер по разработки программного обеспечения на первом курсе, к сожалению пока не определился в каком направлении буду работать |
Си нужно знать обязательно, даже если не будете писать на С++, это lingua franca, однако, если планируете писать на С++, то лучше начинать именно с него, так как это очень разные языки.
Помимо этого следует знать либо Java, либо C#. Так как большая часть бизнес приложений сейчас все-же пишется на этих языках, а не на С++. В дальнейшем эта тенденция будет только усиливаться.
Ну и напоследок, стоит изучить какой-нибудь язык программирования с динамической типизацией, например python, или ruby. Что-бы понимать, как пишут код программисты, не испорченные статической системой типов.
А вообще, главное не языки программирования, а прокладка между клавиатурой и креслом . Пока учитесь в университете, займитесь изучением теории, алгоритмы, структуры данных, реляционная алгебра и тд.
Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008
Репутация: 10
Всего: 33
Цитата(Lazin @ 25.1.2010, 21:54 ) |
Помимо этого следует знать либо Java, либо C#. Так как большая часть бизнес приложений сейчас все-же пишется на этих языках, а не на С++. В дальнейшем эта тенденция будет только усиливаться. |
Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re
Репутация: 27
Всего: 154
Запрещается!
1. Публиковать ссылки на вскрытые компоненты
2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
- Действия модераторов можно обсудить здесь
- С просьбами о написании курсовой, реферата и т.п. обращаться сюда
- Вопросы по реализации алгоритмов рассматриваются здесь
- FAQ раздела лежит здесь!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
[ Время генерации скрипта: 0.1438 ] [ Использовано запросов: 21 ] [ GZIP включён ]