Псих
Поставил себе Microsoft Visual Studio 2005.
Вопрос: что перспективней изучать, C++ или C#? В чём принципиальное различие? Какие мысли по этому поводу? =)

Комментарии
09.12.2007 в 18:02

А как это связано конкретно с VS?

C# как и билдер заставляет лениться и развращает. и С# - для начала это не самый лучший выбор.

всё сугубо имхо.
09.12.2007 в 18:07

Псих
> А как это связано конкретно с VS?
Собираюсь писать в ней. Вот на всякий случай и указал. Я вообще об этих языках мало знаю..

> и С# - для начала это не самый лучший выбор.
Почему?
09.12.2007 в 19:01

Партизанский дуэт
Crazy Wizard Имея ввиду шарп вы подразумеваете и .NET.

Есть некоторые семантические отличия между C# и c++ под VS.
Но в целом если писать под фреймворк то проекти портируемы под любой язык платформы.
Сами C# и С++ схожи.

09.12.2007 в 19:18

pyatzvezd.ru
После парочки языков и первых пяти проектов понимаешь, что не важно на каком языке программировать, самое сложное это проектирование и реализация задачи, а язык только средство.
Т.е. учи основы, потом все равно прийдется использовать технологии и разные языки совместно.
09.12.2007 в 19:50

Партизанский дуэт
самое сложное это проектирование и реализация задачи
:beer: угу
09.12.2007 в 21:13

> и С# - для начала это не самый лучший выбор.
Почему?

вот вам консультация профессионала c#:

Т.е. даже встроенные типы, вроде int, double и тп реализованы с помощью классов
Т.е. любая переменная в C# -- это класс
Начинать писать на C# -- это бред
Без хорошего знания C++ и WinAPI садится за C# -- это становиться быдлокодером
Нужно научится находить ошибки в собственных творениях на Сях, когда разрешена простая работа с памятью, когда неаккуратное обращение с указателями приводит к краху программы )
Т.е. когда для тебя это будет просто и понятно, а так же не будет вызывать никаких сложностей работа с системой -- вот тогда самое время переходить на C#
C# очень мощный в плане хорошей документации и врапперов над API

и вообще, ппкс
09.12.2007 в 21:19

то есть не зная что такое винапи, работа с указателями и прочяя не стоит даже и начинать. и кстати к слову, IDE тут совершенно ни при чем. вы же не лошадь под седло выбираете, а седло под лошадь.
10.12.2007 в 01:33

Гы:)
Мне посоветовали сначала C++ изучать -я и решил последовать совету.. -до сих пор решил, но так и не последовал %)
Вот скоро уже сессия -пора бы за учебу браться))
10.12.2007 в 01:57

Замысел мой заключается в том, что для вас я - именно тот, за кого вы меня принимаете. Именно тот. Но только для вас.
Таранька
итак, по-порядку...
1) типы int, double и др. - это структуры, а не классы (всплывающие подсказки VS вам в помощь)
2) переменные - это переменные (кто не верит - смотрите в CIL)... сама по себе фраза, что любая переменная - это класс, абсурдна (видимо имелся в виду объект)
3) начинать писать на C# - это нормально, если человек собирается дальше применять объектно-ориентированный подход, а вот С++ может привить вредные привычки, присущие структурным языкам
4) ИМХО, С++ в данном случае поможет только тем, что не придется потом заново учить синтаксис... касательно винапи - одной из основ C# является отделение винапи от кода программы непосредственно... и вообще, может я пишу на C# в MONO под Linux, из чего следует вопрос - ну и нах мне винапи???
быдлокодер - это как? типа: "эй! дай компилятор погонять..." ???
5) давайте тогда начинать с асма, может? там еще больше можно наворотить... к слову - использование "небезопасного кода" - личное дело каждого, так как без него вполне можно обойтись (равно как без ref-out параметров)...

имхо - ваш "профессионал c#" плохо читал маны...
10.12.2007 в 02:23

Невозможное возможно в стране возможностей больших!
С# - эт такой язык, который скорей всего подойдет для прикладных и системных программситтов, где не требуеться сущая производительность. Те, кому угодно кодить графику, то юзаем дружно Delphi и не паримся...Кому нужен непонятный код и высокая производительность - пусть юзают C++ (флаг им в руки). Компилятор, который используеться в VS 2005 для С++ настолько отличается от Borlandовского, что лучше за него и не браться...ибо он тормозно работает под .NET (даже вроде Cи Шарпный немножко быстрее, хотя там нужны настройки особые, чтоб это дело заробило в ассмовских кодах). Сам вот щас пишу тестирующую систему и заметил один факт, что из трех компиляторов (под Си Шарп, С++ и Delphi) самый быстрый эт Дельфовский...
Мощь .Netа в том, что под него можно писать любые программы, компилятор которых совместим с общими правилами написания спецификации для написания компиляторов под .Net. Консольные приложения даже оказываються кроссплатформенными, т.е их даже можно по Линухом запускать, а вот с Виндовыми не повезло, здесь различий много....
Для тех людей, которые впаривают изучать C++. Его изучать не обязательно, если Вам не нужна свермощная производительность и непонятный код...Как бы там ни было скорость не всегда зависит от компилятора, в 80% случаев - это завист от алгоритма программиста и его кривости рук...Все что сделает компилятор, дак это перекодирет Ваш код в ассемблерный с кучей комментов(не для .Net языков). Главное предствалять саму архитектуру компьютера, а для этого сойдет и ассемблер, ибо круче него уж нет точно ничего и с него и нужно начинать, чтоб практиваться в небезопасном программировании...

Если же сравнивать синтаксис языка Си++ и Си Шарп, то второй более предпочтительней и понятней, хотя есть некторые сходства, ибо Си шарп разрабатвался как безопасный язык программирования, который унаследовал кое-что от своего Сишного предка + добавлены новые возможности и конечно же сама библиотека .Net Framework, без которой вся мощь Си Шапного языка казалось бы простой иголкой в сене...)
10.12.2007 в 03:04

Это не Таранька =)
Phoenix of Chrome
1. OK, спорить не буду, только назовите хотя бы одно серъезное отличие структуры от класса, кроме того, что структура -- размерный тип, а класс -- ссылочный (в первом случае просто выделяется память для вмещения всех элементов структуры). Спорить о различии безсмысленно, в данном случае можно утрировать
2. Все объекты в .Net представляют собой структуры либо классы, в этом и есть прелесть ООП
3. Хоть одну вредную привычку назови =)
4. WinAPI было приведено в качестве примера, как самая распространенная платформа. Mono, IMHO, пока чересчур убогий проект, чтобы создавать под него что-то серъезное. Реализована скудная поддержка FW 1.1.
Быдлокодерство -- это то, что вытекает из принципов ООП =) Т.е. накидал себе контролов на форму, кнопачгам понаписывал свойств и сидишь довольно слюни пуская, не имея при этом ни малейшего представления о происходящем.
5. Ну, можно и с асма, но это изврат =) С++ -- самый оптимальный язык для начала, проверено не раз и не два. Без использования unmanaged-кода тяжело обойтись даже на FW 3.0 (3.5), не говоря уж о более старых.
По-поводу моего профессионализма я спорить не собираюсь, я не говорю, что я такой уж спец, но 1.5 года использую исключительно C# в своих проектах и пока претензий от начальства по-поводу уровня исполнения не было =)

Далее, к вопросу с чего начинать. Я уже несколько лет сижу на одном форуме и достаточно много туда приходит тех, кто начинает с Билдера, Делфи, в последнее время начали появлятся те, кто начинает с C#. Как можно писать программу (я не имею ввиду WPF-based), не имея представления элементарно о том, какие сообщения посылаются контролам? Это к вопросу о небезопасном коде. Как-то столкнулся с проблемой, когда нужно было на FW 2.0 (может в поздних появилось -- не знаю) запретить вставку из буфера/отмену изменения в TextBox'e. Если Вы мне продемонстрируете, как это можно сделать не используя unmanaged-код, я буду очень признателен и соглашусь, что пожалуй, мне надо пойти почитать маны.
10.12.2007 в 05:54

Партизанский дуэт
Таранька

ref class TextBoxExtended: TextBox
{
public: static int WM_PASTE = 0x0302;
protected: virtual void WndProc(System::Windows::Forms::Message^ m)
{
if (m->Msg == WM_PASTE)
return;
this->WndProc(m);
}
}

Ня? Не ручаюсь что с нуля заработает, пишу помяти, но общую идею вы поняли? )
И никакого что характерно unmanaged.
10.12.2007 в 06:34

Партизанский дуэт
Таранька Сразу же видно что автор олень-делонь) rtb не получает своего контекстного меню по умолчанию, поэтому там достаточно перехватить последовательности ctrl+v и остальные инсерты что делается встроенными методами RichTextBox class.
Вы же просили просто для ТехтБоха, а для него вполне корректен мой пример :)
10.12.2007 в 06:37

Партизанский дуэт
Таранька Няя, кстати в итоге автор в блоге тот же ООП юзает. Вопрос где там unmanaget?
10.12.2007 в 06:40

Партизанский дуэт
alaz Не спешите так громко говорить что самый быстрый это дельфи :))), люди могут неправильно понять. Если вы имели ввиду время компиляции то я молчу. Если вы имели ввиду Jit компилятор от .NET то я молчу вдвойне ибо по барабану на какой платформе вы писали проект, он все равно будет запускаться этим же Jitом.
Всякие реализации под nix платформы можно смело расстрелять из крупнокалиберных орудий ибо они не выдерживают никакой критики. Уж лучше там Java Юзать, он изначально на этот сегмент рынка целился.
10.12.2007 в 07:13

Это не Таранька )
БогленПо-поводу перехвата Ctrl+... Только что проверил, работает, ну честное слово -- это было первое, что я пробовал тогда и оно не работало (в KeyDown событии) =) Не мог я столько моск ипать просто так. Ладно, как и обещал ушел курить маны :D
10.12.2007 в 08:14

Партизанский дуэт
Таранька угу, это работает для RichTextBox class. А для TextBox ввиду системного контекстного меню более актуальен перехват сообщений.
10.12.2007 в 23:12

Замысел мой заключается в том, что для вас я - именно тот, за кого вы меня принимаете. Именно тот. Но только для вас.
не Таранька =)
1. просто я бы не стал запугивать новичка классами (равно как и структурами), так как реализация типа незаметна пользователю. принципиальных различий в объявлении переменной в С++ и в C# по-моему нет.
2. см п.1
3. пжалста - небезопасный код (кстати, имхо, структуры тоже не есть гут) =)
4. об убогости моно никто не спорит =) данный пример довольно оптимистичен, в том плане, что "представим себе идеальную mono в вакууме и решим, что она хорошо работает". конечно на данный момент на этой ниве джава впереди планеты всей. я имел в виду, что API нужны не обязательно виндовые и не обязательно сразу.
хм, значит быдлокодерство в дальнейшем перерастет в эмокодерство (утирая слезы ковриком от мыши хныкать "я не знаю, почему оно неработаееееет...")
5. я не проверял, что оптимальнее всего, но считается, что изучение С++ лучше начинать с С, а С - с Паскаля и т.д.... вопрос - зачем?
з.ы. ты маны-то все не скуривай!!! мне оставь =) я их курю в свободное от работы время (вот накурюсь и пойду искать другую работу, ибо когда начальнеги полгода решают "переходить нам на 6-й билдер или остаться под 5-м" (в 2007-м году), а про паттерны говорят "нам это, скорее всего, не подойдет", - крыша едет)
11.12.2007 в 05:42

Партизанский дуэт
5. я не проверял, что оптимальнее всего, но считается, что изучение С++ лучше начинать с С, а С - с Паскаля и т.д.... вопрос - зачем?

0_о, а перед этим пол года в школе блок схемы и темы типа:

Начел;
(пока и равно 0; и меньше 100; и плюс 1)
Начел;
Несецо;:vict:
Кончел;
Кончел;


11.12.2007 в 23:43

быдлокодер... Классно))) Теперь я знаю как надо называть некоторых типов)))
с++, без вопросов.
12.12.2007 в 01:22

Замысел мой заключается в том, что для вас я - именно тот, за кого вы меня принимаете. Именно тот. Но только для вас.
Боглен гг =)
жжошь =)
но у меня в школе паскаль был и по-этому, в моем случае, правильнее было бы сказать:
"для и, каторае теперь будит адын и пока и не станет стом"
31.12.2007 в 06:28

D'oh!
С++ полезно знать и понимать принципы его работы как родоначальника, в реальности же на C++ практически никто не пишит. На C# писать гораздо проще и удобнее.
31.12.2007 в 12:01

Партизанский дуэт
hauff вахахахаха)))))