Конечно надо! что за(извени зарание)тупой вопрос?если хочеш даже на том DirectX делать игры или UDK(Unreal Script похож на C++).Почти на всех двигах надо програмировать(или как там).Конечно же учить! Мой туториал по UDK: Создание простого платформера
Сообщение отредактировал netkiller - Среда, 20 Января 2010, 08:33
Не подумайте, что это попытка разжечь спор, но всё же, мне хотелось бы услышать Ваши убедительные аргументы. Для большей наглядности, надеюсь услышать не менее 5
Есть много мелких особенностей. Если смотреть в самую суть и выделить самое важное, то это, невзрачная на первый взгляд тема - шаблоны. Именно благодаря шаблонам в C++ помимо структурного и объектно-ориентированного программирования, доступно ещё и обобщённое программирование. Вот здесь-то и можно называть причины. И не пять, а все двадцать пять. Все эти причины имеют один источник - шаблоны. 1. Увеличивается гибкость "классических" алгоритмов и структур данных: стеки, деревья, списки... 2. Многократное упрощение работы с типами. 3. STL. 4. Boost. 5. Loki. 6. Если обобщить все пункты - то это метопрограммирование.
В Delphi поддержку шаблонов можно осуществить только извне - через нетипизированный язык, например, perl. Но результаты всё равно будут очень далеки от C++.
Многие вещи, которые в C++ реализуются шаблонами, в Delphi можно реализовать разными способами: виртуальные функции, директива message... А некоторые в Delphi вообще реализовать невозможно.
Если говорить о "нужности" языка, то в один ряд с C++ я бы поставил легко расширяемые языки, например, python, но никак не Delphi.
Есть много мелких особенностей. Если смотреть в самую суть и выделить самое важное, то это, невзрачная на первый взгляд тема - шаблоны. Именно благодаря шаблонам в C++ помимо структурного и объектно-ориентированного программирования, доступно ещё и обобщённое программирование. Вот здесь-то и можно называть причины. И не пять, а все двадцать пять. Все эти причины имеют один источник - шаблоны. 1. Увеличивается гибкость "классических" алгоритмов и структур данных: стеки, деревья, списки... 2. Многократное упрощение работы с типами. 3. STL. 4. Boost. 5. Loki. 6. Если обобщить все пункты - то это метопрограммирование. В Delphi поддержку шаблонов можно осуществить только извне - через нетипизированный язык, например, perl. Но результаты всё равно будут очень далеки от C++. Многие вещи, которые в C++ реализуются шаблонами, в Delphi можно реализовать разными способами: виртуальные функции, директива message... А некоторые в Delphi вообще реализовать невозможно. Если говорить о "нужности" языка, то в один ряд с C++ я бы поставил легко расширяемые языки, например, python, но никак не Delphi.
На это я могу сказать только:
Бла-бла-бла-бла
Это все рассказываеться на первой лекции(у меня в универе) по изучению Си. Не увидел ни одного аргумента который ты бы привел из своего опыта. Я думаю, что ты студент курса третьего, которому просто впихнули, что нужно учить Си, а Delphi это уже в прошлом.
Quote (el_rey)
А некоторые в Delphi вообще реализовать невозможно.
Что именно невозможно реализовать?
Почему же даже крупные компании используют Delphi?
И привел бы примеры к каждому своему аргументу.
Quote (el_rey)
И не пять, а все двадцать пять
Я хотел бы выслушать еще 20 аргументов подкрепленные примерами
Это все рассказываеться на первой лекции(у меня в универе) по изучению Си. Не увидел ни одного аргумента который ты бы привел из своего опыта. Я думаю, что ты студент курса третьего, которому просто впихнули, что нужно учить Си, а Delphi это уже в прошлом.
У меня вообще нет высшего образования. Да и поздновато мне его уже получать.
Ну а теперь по теме: Давай рассмотрим классический пример использования умного указателя (воспользуемся тем, что есть в STL) auto_ptr:
class someClass { private: auto_ptr<firstClass> a; auto_ptr<secondClass> b;
1. Покажи пример удаления памяти выделенной для указателя на экземпляр firstClass, если в secondClass возникнет исключение. 2. Сделай на Delphi перегрузку оператора присваивания (или любого другого). 3. Интересуют подробности реализации шаблона RAII на delphi (именно он показан в примере). Ну чтобы мы видели, что ты не студент треьего курса, которому просто впихнули, что нужно учить Delphi, а C++ это уже в прошлом.
template<class T> class Tree { public: T data; // данные Tree<T>* parent; DLinkedList<Tree<T>*> sons; Tree<T> () : parent(NULL) {} ~Tree (); };
Покажи реализацию дерева (можно и не рекурсивную), где в узлах дерева можно хранить любое значение. Для упрощения задачи, покажи только примеры, где в узлах хранятся переменные: 4. целого типа 5. вещественного типа 6. объекты произвольного класса someClass.
Просьба отвечать по существу и не разводить флейм, как это любят делать многие любители Delphi. В ответе показать код для пунктов 1,2 или 3,4 (как минимум). Если ответишь на все эти пункты и сможешь убедить меня (и что самое главное - себя), что на Delphi код проще чем на C++, я приведу все двадцать примеров.
Во первых el_rey, я просил придоставить примеры и на Си и на Delphi(для сравнения), а не проверять мои знания. Во вторых el_rey, я написал
Quote
И вообще это вечный спор какой из языков программирования лучше, потому как, никто не сможет доказать что к примеру Си лучше чем Delphi и наоборот
Потому что, любой нормальный программист знает, что язык на котором он пишет, лучше чем остальные (отсюда и вечный спор); В третьих
Quote
Просьба отвечать по существу и не разводить флейм, как это любят делать многие любители Delphi.
А это уже похоже на оскорбление.Про вас Сишников тоже можно, не только хорошее говорить. В четвертых
type
TLogger = class protected class var FLogger : TLogger; //поле класса (class-field) public FText : TStringList; constructor Create; destructor Destroy; override; class operator Implicit(Line : String) : TLogger; //оператор преобразования строки к классу TLogger
strict private class var class constructor Create; //конструктор класса end;
constructor TLogger.Create; begin inherited;
FText := TStringList.Create; end;
destructor TLogger.Destroy; begin FText.Free;
inherited; end;
class operator TLogger.Implicit(Line : String) : TLogger; begin FLogger.FText.Add(Line);
Result := FLogger; end;
class constructor TLogger.Create; begin FLogger := TLogger.Create; end;
var Logger : TLogger = TLogger.FLogger; //создаем глобальный лог-файл приложения
begin Logger := 'Приложение стартовало';
{Код работы приложения …}
Logger := 'Приложение завершило свою работу';
Logger.Free;
end.
Писал с мобилы за полную работоспособность не могу отвечать
И последнее что я хочу сказать
Quote (el_rey)
сможешь убедить меня
Когда это я говорил, что я буду убеждать вас, в том что для вас
Во первых el_rey, я просил придоставить примеры и на Си и на Delphi(для сравнения), а не проверять мои знания.
Так в том-то и дело, что я не могу привести код. Те примеры, которые я привёл, на Delphi реализовать невозможно (или очень сложно).
По поводу твоего примера перегрузки. Во-первых, для того чтобы он работал должны выполняться следующие условия: 1. Экземпляр класса TLogger должен быть глобальным. 2. В программе должен присутствовать только один экземпляр класса TLogger.
Вот как этот класс будет выглядеть в C++ (причём перегрузка будет работать всегда, а не как в твоём примере: class TLogger { public: TLogger operator= (/*любой тип на выбор*/) { /* код перегрузки оператора присваивания.*/ } };
Скажи, ты действительно считаешь, что твой пример легче для понимания? Не забудь учесть и те условия, которые должны удовлетворяться при перегрузке на Delphi.
То же самое и со вторым примером. Ты вообще не сможешь его написать на Delphi. Понадобится использовать внешние средства.
Quote (Sharom)
Потому что, любой нормальный программист знает, что язык на котором он пишет, лучше чем остальные (отсюда и вечный спор);
Язык, который я ненавижу больше всего - C++. Это очень уродский язык.
Quote (CgH-XvgW)
А это уже похоже на оскорбление.
Извини, не хотел оскробить. Но это и не я начал про студентов третьего курса. Если обидел, ещё раз извини.
Quote (Sharom)
А я студент.Студент второго курса и причем находящийся на грани отчисления.
Незнаю относится ли это к этой теме ...но все же напишу..
сейчас я в 10..выбрал универ для поступления а там вот какие требования:
* Информатика * Основы программирования (на базе Pascal, C) * Технологии программирования (на базе Delphi, C++) * Алгоритмы программирования * Технологии компьютерной графики (2D, пакеты прикладных программ) * Web-дизайн (Dreamweaver, Flash) * Web-программирование (PHP)
у меня честно сказать глаза на лоб полезли...стал немного сомневаться что успею хот немного подготовится до поступления. Возможно ли выучит все это за полтора года?
Почему, была как-то одна игрушка, сделанная на ГМ, она шароварная, но тем не менее. В ней, по-моему, надо веревки резать и, чтобы колобки помогали друг другу, физическая игрушка. Нашел, называется она Bumps(demo) за полную плата 10 долларов. А что касается программирования, то обязательно, по-моему, даже удобнее кодом писать, чем по кнопкам щелкать.
Тема же закреплена, а значит не то и не другое. А это значит, что сейчас даже то что я написал и не смотря на время законно. В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
_LeVoID_, некропостинг не осуждается! Кста вот если я вижу строку кода на любом ЯП, то сразу понятно что там, а если сам пробую написать, то не получается ЪЪЪЪ! Лучшая благодарность - плюс в репутацию :-)