Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 128, средняя оценка - 4.96
C++ Beginner
0 / 0 / 0
Регистрация: 16.09.2011
Сообщений: 5
#1

C++ или C#? Что учить первым? - C++

17.09.2011, 16:01. Просмотров 16781. Ответов 73
Метки нет (Все метки)

Привет всем!
Не могу выбрать что учить первым. Хотелось бы выучить язык основательно, и что бы он стал основой для изучения других технологий. C++ говорят что трудный для новичков(знаю Pascal, PHP(немного)). C# легче намного, но потом перейти с него на тот же C++ не получится. Так ли это и что вы лично посоветуете.
Плз писать тем кто уже сталкивался с таким вопросом. Не холиварить!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2011, 16:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++ или C#? Что учить первым? (C++):

Что учить? visual c++ или Borland c++ - C++
Какой из них учить.Главное чтобы был легче.

Что лучше учить сначала C или C++? Выбор литературы. - C++
Что лучше учить сначала C или C++? Или в перечисленных ниже книгах материал по C уже есть? Также хочу с вами посоветоваться насчет...

Подсчитать сумму символов между первым и последним 'z'. Что надо изменить или дополнить? - C++
#include "stdafx.h" #include <iostream> #include <string> using namespace std; int TrvacSimvoliQanaky(char , int,int); int...

Имеет ли смысл продолжать учить с++ или попробовать перейти в с# или java? - C++
Надеюсь данный вопрос не нарушает правила этого раздела. Учу кресты уже месяца полтора-два. Это мой первый ЯП. По 2-7 часов в день. В...

Учить С или С++ - C++
Пол года учил в университете С и Паскаль, грубо говоря плохо учил, не сознательно учил, закончил первый семестр на тройку smile . Сейчас...

Что учить дальше? - C++
В каком направлении посоветуете двигаться дальше? В раздел классы я въехал, знаю как реализовывать стандартные структуры, типа (очередь,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
17.09.2011, 19:43 #16
Цитата Сообщение от talis Посмотреть сообщение
Это как? Любой алгоритм за O(c), где c - константа? Класс...
Это не верно в корне, так как принципиально, оценка с верху не принимает во внимание константы, а оценивает только скорость роста сложности программы по отношению к увеличению сложности входных данных. Поэтому O(c) - немного некорректно, тогда уж О(1).

Цитата Сообщение от silent_1991 Посмотреть сообщение
Имелось ввиду, что если на С++ одна программа при одних входных данных выполняется секунду, то на джаве она же с такими же входными данными будет выполняться (гипотетически, со слов AnyOne697) 20-30 секунд, а с другими входными данными на плюсах она выполняется 2 секунды, на джаве же 40-60 секунд. Т.е. множитель - константа.
О да, всё именно так!
Цитата Сообщение от talis Посмотреть сообщение
Почитайте про контейнеры STL и алгоритмы STL. Ужаснётсь.
STL - это далеко не встроенные возможности языка C++. Здесь разговор был ТОЛЬКО о языке программирования. STL - это библиотека, встроенная почти во все современные компиляторы. Впрочем, есть wiki. Хотя, странно, она говорит, что STL включён в стандарт языка. Что ж. Это к лучшему =) Но стоит заметить, что всё же STL - обобщённые алгоритмы. Он никак не затрагивает сетевые подключения, а использование сетевых возможностей в C++ выходит... Не очень удачным.
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Программа на C# может спокойно работать быстрее аналогичной на C++ т.к. у JIT'а гораздо больше информации об окружении в котором работает программа, поэтому он может использовать гораздо более весомые оптимизации, в том числе платформеннозависимые.
Платформонезависимые оптимизации, которые работают лучше оптимизаций C++? Странно, а почему тогда C# до сих пор не стал заменой Java? Впрочем, возможно это и так, а всё объясняется банальной тупость =(

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Чем C++, который может работать везде и всегда? Очень сомневаюсь.
Java может тоже работать везде и всегда (почти). Phyton - язык настолько высокого уровня, что возможно даже портирование на мобильные телефоны. То есть абсолютная независимость от аппаратной начинки. C++ чуть-чуть не то. Да, он используется в написании операционных систем, драйверов, часто программ. Но всё же он слабо применим, например, для серверов, облачных сервисов. А всему виноват кривой .NET, которым я так и не смог спарсить html, а запустив VS2010 C# за пару минут написал поиск нужной информации и её вывода в файл. Впрочем, не знаю как запустить этот код из под C++. Мб кто подскажет?..
Так что я знаю, что он используется везде. Но далеко не всегда! Почти все end-user приложения разработаны с использованием Java, C#, Phyton - разработка быстрее, удобнее, кроссплатформенее (возможно я не прав).
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.09.2011, 19:48 #17
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Хотя, странно, она говорит, что STL включён в стандарт языка.
Действительно, странно, что Standart Template Library включена в стандарт.

Цитата Сообщение от AnyOne697 Посмотреть сообщение
Он никак не затрагивает сетевые подключения
при чем тут они? есть куча библиотек для плюсов для этого. В стандартной только самые универсальные и необходимые алгоритмы/контейнеры.

Цитата Сообщение от AnyOne697 Посмотреть сообщение
Платформонезависимые
Перечитайте, что процитировали =)

Последний абзац вообще не понял =(
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 19:50 #18
Цитата Сообщение от AnyOne697 Посмотреть сообщение
C++ чуть-чуть не то. Да, он используется в написании операционных систем, драйверов, часто программ. Но всё же он слабо применим, например, для серверов
Да ладно! Про apache слышали? Про тысячи игрушек, вроде Half-Life (1 и 2), DeusEx, Quake (все) и так далее

Цитата Сообщение от AnyOne697 Посмотреть сообщение
А всему виноват кривой .NET, которым я так и не смог спарсить html
.NET тоже кривой, но дело в руках.

Добавлено через 39 секунд
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Почти все end-user приложения разработаны с использованием Java, C#, Phyton - разработка быстрее, удобнее, кроссплатформенее (возможно я не прав).
Про Qt слышали? Про MFC и WinAPI, в конце концов? Про gtk?
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.09.2011, 19:54 #19
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Платформозависимые оптимизации, которые работают лучше оптимизаций C++?
Естественно, компилятор C++ не знает на какой платформе будет работать приложение и поэтому не может применять платформенно зависимые оптимизации, JIT же знает, может и делает.
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Странно, а почему тогда C# до сих пор не стал заменой Java?
Потому что не все любят MS и не все пишут ориентированные на MS приложения.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.09.2011, 20:00 #20
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Здесь разговор был ТОЛЬКО о языке программирования
Ок, с помощью ТОЛЬКО языка (Java, C#, на ваш выбор) сделайте хотя бы вывод на экран. Этого у вас не выйдет, потому что все операции по связке ОС-программа в конечном итоге выполняются через системные API. Просто в джаве уже написан класс (заметьте, библиотечный) по работе с сетью, а в стандартной плюсовой библиотеке такого класса нет. Поэтому в джаве мы используем обёртку над системными апи, а в плюсах сами эти апи.
И да, STL описана в стандарте, поэтому C++ и STL неотделимы друг от друга.
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
17.09.2011, 20:16 #21
Цитата Сообщение от talis Посмотреть сообщение
MFC и WinAPI
Это такое г... которым пользоваться совсем не актуально, не эффективно, да и смысла нет!
Цитата Сообщение от talis Посмотреть сообщение
Про Qt слышали?
И про QtPy, для Phyton'а (вот, кстати, не знаю почему, но почему-то пишу PHyton, а не PytHon...), Qt Джамби (Java) и даже про Qt Ruby.

Цитата Сообщение от talis Посмотреть сообщение
Да ладно! Про apache слышали?
А то что он появился в 1995 году и тогда почти не было нормальных Java-программистов и его назначение было - исправить ошибки?.. Хотя к чему я? Я разве сказал невозможно? Вроде было сказано - сложно! Неудобно! Но стабильно и быстро! Кто-то что-то недопонял...
Цитата Сообщение от talis Посмотреть сообщение
.NET тоже кривой, но дело в руках.
А я разве спорю? Просто сейчас 95% программистов - хэллоувордщики, как я =( И в плане возможности/требования_к_программисту у Java, C#, Python и подобные имеют значительно большее отношения, чем C++. C++ требователен к программисту и поэтому его всё реже используют в качестве основного. Android например - ядро написано на C++, но оболочка, потому она и лагнутая, на Java. И обоснованно это большим кол-вом девайсов с разными железками. Чтобы везде работало. Разве не так?..
Цитата Сообщение от talis Посмотреть сообщение
Про тысячи игрушек, вроде Half-Life (1 и 2), DeusEx, Quake (все) и так далее
Создать простейшее Socket подключение клиент-сервер-клиент и передать так туеву хучу пакетов с данными о перемещениях и прочих действиях - разве это сложно. А вот читать RFC 2616 на english я закончил через 15 минут, так как понял, что это затянется на пару лет, а мне хотелось бы сейчас. Да, и потом - игрушки очень платформозависимые, и, чтобы портировать OrangeBox на XBox, я не представляю сколько строчек кода пришлось разработчикам пришлось переписать...

Добавлено через 6 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
И да, STL описана в стандарте, поэтому C++ и STL неотделимы друг от друга.
Не то чтобы не отделимы. Просто STL - это вообще другой разговор. Мне не отображения и коллекции нужны, мне коннект с сервером для организации распределённых вычеслений нужен! Имхо, здесь вообще мультиязычный проект будет самым удобным! Хотя - х/з как =(

Цитата Сообщение от silent_1991 Посмотреть сообщение
Ок, с помощью ТОЛЬКО языка (Java, C#, на ваш выбор) сделайте хотя бы вывод на экран.
Точно так же, как и "голым" C++ без <iostream> или <чего_то_подобного> C++ не заведётся. Так что библиотеки - нужны. Впрочем, библиотеки-то опираются на стандартные возможности языка (или всё же на ассемблер?) и немного вые**сь можно организовать и такое извращение. Хотя, возможно я не прав. Я ещё не про и не гуру, а только пытаюсь учится. Критика приветствуется, но желательно с пруфой.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.09.2011, 20:28 #22
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Точно так же, как и "голым" C++ без <iostream> или <чего_то_подобного> C++ не заведётся.
А syscall в unix? :-)

Добавлено через 1 минуту
Не хотите делать #include - напишите

C
1
extern long int syscall (long int __sysno, ...) __THROW;
в качестве прототипа
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.09.2011, 20:37 #23
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Точно так же, как и "голым" C++ без <iostream> или <чего_то_подобного> C++ не заведётся.
а ява без java.lang заведется?

Цитата Сообщение от AnyOne697 Посмотреть сообщение
Android например - ядро написано на C++, но оболочка, потому она и лагнутая, на Java. И обоснованно это большим кол-вом девайсов с разными железками. Чтобы везде работало.
противоречие, на чём по вашему написана JVM(и её вариации) для этих самых железок?
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.09.2011, 21:08 #24
Цитата Сообщение от AnyOne697 Посмотреть сообщение
библиотеки - нужны
Именно это я и хотел сказать на ваши противоречащие друг другу "...ТОЛЬКО язык..." и "...сетевые возможности..."
ikari81
3 / 3 / 1
Регистрация: 17.05.2011
Сообщений: 222
18.09.2011, 10:56 #25
Начинать нужно с С :-)
TheAthlete
152 / 152 / 13
Регистрация: 31.08.2010
Сообщений: 535
18.09.2011, 11:58 #26
Тема конечно холиварная
На мой взгляд нужно выбирать не язык сам по себе в отрыве от контекста, а то, для чего ты сможешь применять тот или иной язык. Тогда будет легче с выбором. Тем более, что после определенного уровня знания языка, начинаются пониматься свои тонкости языка, на котором ты программируешь.

Где можно применять C#:
1) разработка программ под Windows
2) разработка программ под Windows Phone
3) разработка программ под Windows 8 (в ближайшем будущем, под планшеты, ноутбуки, десктопы)
4) корпоративная (enterprise) разработка
5) разработка для проекта Mono (Linux)
6) разработка игр под Windows и Xbox с помощью XNA и Silverlight

Где можно применять C++:
1) кроссплатформенная разработка под Windows, Linux, Mac OS X, Android (NDK)
2) разработка игр (трехмерных, двумерных, шутеров, гонок и т.д.) под PC
3) разработка игр (трехмерных, двумерных, шутеров, гонок и т.д.) под консоли (Playstation, Nintengo Wii)
4) разработка сетевых программ
5) разработка драйверов
6) разработка прикладных программ
7) все высоконагруженные веб-проекты (поисковые системы, баннерные системы) пишутся на С++, для примера посмотрите сколько вакансий С++ у Яндекса. Аналогично у других поисковиков.

Где можно применять С:
1) все современные языки программирования пишутся на С: PHP, Perl, Python, Ruby и т.д
2) программирование микроконтроллеров
и т.д.

Другими словами, лучше сразу определиться, что из этого наиболее подходит (скорее всего это не полный список)
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.09.2011, 12:10 #27
Цитата Сообщение от AnyOne697 Посмотреть сообщение
А то что он появился в 1995 году и тогда почти не было нормальных Java-программистов и его назначение было - исправить ошибки?.. Хотя к чему я? Я разве сказал невозможно? Вроде было сказано - сложно! Неудобно! Но стабильно и быстро! Кто-то что-то недопонял...
во-первЫх он написан на си
во-вторЫх он не оказался бы столь популярен, будь он написан на чем-либо вроде c#/java
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
18.09.2011, 13:07 #28
Цитата Сообщение от talis Посмотреть сообщение
А syscall в unix? :-)
Ах да, я же забыл, что здесь обитают unix'оиды!
Цитата Сообщение от alex_x_x Посмотреть сообщение
во-первЫх он написан на си
Цитата Сообщение от alex_x_x Посмотреть сообщение
во-вторЫх он не оказался бы столь популярен, будь он написан на чем-либо вроде c#/java
Не факт. Потому что он не написан на С#, так что мы понятия не имеем. Да и потом, я же сказал, что мои кривые руки не хотят писать на C++.NET, это совсем не значит, что нельзя написать серверное приложение даже на чистом C++.
Цитата Сообщение от TheAthlete Посмотреть сообщение
4) разработка сетевых программ
Слушай, а не поможешь мне разобраться в C++.NET?.. А то что-то вообще никак. А читать 900 страниц что-то немного не... катит...
Цитата Сообщение от TheAthlete Посмотреть сообщение
Где можно применять С:
1) все современные языки программирования пишутся на С: PHP, Perl, Python, Ruby и т.д
Компилятор, не язык. Язык, собственно, это идеология, её нельзя написать на языке программирования. И, кстати, сам Си написан на Си. Рекурсия, чтоб её.

Цитата Сообщение от TheAthlete Посмотреть сообщение
6) разработка игр под Windows и Xbox с помощью XNA и Silverlight
Второй сдох, потому и появился первый. Восторженные отзывы хеллоувордщиков, а также резкое увеличение кол-ва игр в Steam с распространением только через сеть и стоимостью < 10$ - это только подтверждает. Также как и требование GF 8800GT у Magicka с её изометрической псевдо 3d графикой
Цитата Сообщение от TheAthlete Посмотреть сообщение
2) разработка игр (трехмерных, двумерных, шутеров, гонок и т.д.) под PC
3) разработка игр (трехмерных, двумерных, шутеров, гонок и т.д.) под консоли (Playstation, Nintengo Wii)
А не проще написать - "Разработка ЛЮБЫХ игр"?
Цитата Сообщение от TheAthlete Посмотреть сообщение
Тема конечно холиварная
***
Другими словами, лучше сразу определиться, что из этого наиболее подходит (скорее всего это не полный список)
Да, тема превращена в некое подобие холивара. До настоящего ей ещё далеко.
На самом деле это так. Но автору темы:
Хочу заверить, что после изучения ЛЮБОГО языка программирования изучение другого будет намного проще, так как бызовые понятия, которые есть в каждом языке программирования уровня больше или равном "чуть менее чем средний", уже изучены. И можно будет сосредоточится именно на семантике и других особенностях. Тем более это относится к таким языкам, как C++ и C#, C# и Java. То есть C# в принципе можно использовать как переходный. Но, возможно, переходить уже не захочется.
В общем-то, поначалу (хеллоувордить) проще на C++. Но более глубокое изучение, конечно, более простое у C#, чем на C++. Например, в C++ очень многое приходится контролировать самому и на программиста возлагается огромная ответственность. Но переход C# -> C++ и наоборот совсем не сложен, а даже проще чем изучение "с нуля".
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.09.2011, 13:22 #29
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Не факт. Потому что он не написан на С#, так что мы понятия не имеем.
ну как минимум он не был бы на
Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
кроме того стоит учесть его способность к высоконагруженной работе и оптимизированность

Добавлено через 1 минуту
Цитата Сообщение от AnyOne697 Посмотреть сообщение
это совсем не значит, что нельзя написать серверное приложение даже на чистом C++
переносимость у плюсов чуть хуже, но вообщем согласен
bolon
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 48
18.09.2011, 13:38 #30
А какую вы литературу посоветуете по C++? Если в языках я 0!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 13:38
Привет! Вот еще темы с ответами:

Что учить дальше? - C++
Прата С. - Язык программирования С++. Лекции и упражнения (5-е изд.) - 2007 Все освоил что дальше посоветуйте. Темы книги: Глава...

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

Как учить с++ чтобы не бросить (учить типы влом) - C++
Суть не в том токо как учить, а в том как начать, чтобы не бросить..Учить типы влом..Хотелось бы норм учебник по с++, норм компилятор...

Что учить после ООП? - C++
Здравствуйте, хотел бы узнать ваше мнение! Я разобрался с основами си++.Хотел бы вот узнать что учить , с чем разбираться дальше, куда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.09.2011, 13:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru