Псих
Поставил себе Microsoft Visual Studio 2005.
Вопрос: что перспективней изучать, C++ или C#? В чём принципиальное различие? Какие мысли по этому поводу? =)
Вопрос: что перспективней изучать, C++ или C#? В чём принципиальное различие? Какие мысли по этому поводу? =)
C# как и билдер заставляет лениться и развращает. и С# - для начала это не самый лучший выбор.
всё сугубо имхо.
Собираюсь писать в ней. Вот на всякий случай и указал. Я вообще об этих языках мало знаю..
> и С# - для начала это не самый лучший выбор.
Почему?
Есть некоторые семантические отличия между C# и c++ под VS.
Но в целом если писать под фреймворк то проекти портируемы под любой язык платформы.
Сами C# и С++ схожи.
Т.е. учи основы, потом все равно прийдется использовать технологии и разные языки совместно.
Почему?
вот вам консультация профессионала c#:
Т.е. даже встроенные типы, вроде int, double и тп реализованы с помощью классов
Т.е. любая переменная в C# -- это класс
Начинать писать на C# -- это бред
Без хорошего знания C++ и WinAPI садится за C# -- это становиться быдлокодером
Нужно научится находить ошибки в собственных творениях на Сях, когда разрешена простая работа с памятью, когда неаккуратное обращение с указателями приводит к краху программы )
Т.е. когда для тебя это будет просто и понятно, а так же не будет вызывать никаких сложностей работа с системой -- вот тогда самое время переходить на C#
C# очень мощный в плане хорошей документации и врапперов над API
и вообще, ппкс
Мне посоветовали сначала C++ изучать -я и решил последовать совету.. -до сих пор решил, но так и не последовал %)
Вот скоро уже сессия -пора бы за учебу браться))
итак, по-порядку...
1) типы int, double и др. - это структуры, а не классы (всплывающие подсказки VS вам в помощь)
2) переменные - это переменные (кто не верит - смотрите в CIL)... сама по себе фраза, что любая переменная - это класс, абсурдна (видимо имелся в виду объект)
3) начинать писать на C# - это нормально, если человек собирается дальше применять объектно-ориентированный подход, а вот С++ может привить вредные привычки, присущие структурным языкам
4) ИМХО, С++ в данном случае поможет только тем, что не придется потом заново учить синтаксис... касательно винапи - одной из основ C# является отделение винапи от кода программы непосредственно... и вообще, может я пишу на C# в MONO под Linux, из чего следует вопрос - ну и нах мне винапи???
быдлокодер - это как? типа: "эй! дай компилятор погонять..." ???
5) давайте тогда начинать с асма, может? там еще больше можно наворотить... к слову - использование "небезопасного кода" - личное дело каждого, так как без него вполне можно обойтись (равно как без ref-out параметров)...
имхо - ваш "профессионал c#" плохо читал маны...
Мощь .Netа в том, что под него можно писать любые программы, компилятор которых совместим с общими правилами написания спецификации для написания компиляторов под .Net. Консольные приложения даже оказываються кроссплатформенными, т.е их даже можно по Линухом запускать, а вот с Виндовыми не повезло, здесь различий много....
Для тех людей, которые впаривают изучать C++. Его изучать не обязательно, если Вам не нужна свермощная производительность и непонятный код...Как бы там ни было скорость не всегда зависит от компилятора, в 80% случаев - это завист от алгоритма программиста и его кривости рук...Все что сделает компилятор, дак это перекодирет Ваш код в ассемблерный с кучей комментов(не для .Net языков). Главное предствалять саму архитектуру компьютера, а для этого сойдет и ассемблер, ибо круче него уж нет точно ничего и с него и нужно начинать, чтоб практиваться в небезопасном программировании...
Если же сравнивать синтаксис языка Си++ и Си Шарп, то второй более предпочтительней и понятней, хотя есть некторые сходства, ибо Си шарп разрабатвался как безопасный язык программирования, который унаследовал кое-что от своего Сишного предка + добавлены новые возможности и конечно же сама библиотека .Net Framework, без которой вся мощь Си Шапного языка казалось бы простой иголкой в сене...)
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-код, я буду очень признателен и соглашусь, что пожалуй, мне надо пойти почитать маны.
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.
=)
Вы же просили просто для ТехтБоха, а для него вполне корректен мой пример
Всякие реализации под nix платформы можно смело расстрелять из крупнокалиберных орудий ибо они не выдерживают никакой критики. Уж лучше там Java Юзать, он изначально на этот сегмент рынка целился.
БогленПо-поводу перехвата Ctrl+... Только что проверил, работает, ну честное слово -- это было первое, что я пробовал тогда и оно не работало (в KeyDown событии) =) Не мог я столько моск ипать просто так. Ладно, как и обещал ушел курить маны
1. просто я бы не стал запугивать новичка классами (равно как и структурами), так как реализация типа незаметна пользователю. принципиальных различий в объявлении переменной в С++ и в C# по-моему нет.
2. см п.1
3. пжалста - небезопасный код (кстати, имхо, структуры тоже не есть гут) =)
4. об убогости моно никто не спорит =) данный пример довольно оптимистичен, в том плане, что "представим себе идеальную mono в вакууме и решим, что она хорошо работает". конечно на данный момент на этой ниве джава впереди планеты всей. я имел в виду, что API нужны не обязательно виндовые и не обязательно сразу.
хм, значит быдлокодерство в дальнейшем перерастет в эмокодерство (утирая слезы ковриком от мыши хныкать "я не знаю, почему оно неработаееееет...")
5. я не проверял, что оптимальнее всего, но считается, что изучение С++ лучше начинать с С, а С - с Паскаля и т.д.... вопрос - зачем?
з.ы. ты маны-то все не скуривай!!! мне оставь =) я их курю в свободное от работы время (вот накурюсь и пойду искать другую работу, ибо когда начальнеги полгода решают "переходить нам на 6-й билдер или остаться под 5-м" (в 2007-м году), а про паттерны говорят "нам это, скорее всего, не подойдет", - крыша едет)
0_о, а перед этим пол года в школе блок схемы и темы типа:
Начел;
(пока и равно 0; и меньше 100; и плюс 1)
Начел;
Несецо;
Кончел;
Кончел;
с++, без вопросов.
жжошь =)
но у меня в школе паскаль был и по-этому, в моем случае, правильнее было бы сказать:
"для и, каторае теперь будит адын и пока и не станет стом"