Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
k0rvin
Дата 2.5.2013, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Beltar @  1.5.2013,  22:29 Найти цитируемый пост)
И почему твой любимый шарп вдруг использует дельфовый подход?

Вообще-то в шарпе используется аналог RAII — using. http://msdn.microsoft.com/ru-ru/library/yh598w02.aspx
Как и в Java 7 теперь. Я уже писал об этом, но чукча не читатель.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
k0rvin
Дата 2.5.2013, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Beltar @  1.5.2013,  22:29 Найти цитируемый пост)
Ну да, берем любой журнальчег по комповой безопасности и читаем очередные новости об успешно поломанных через переполнение программах.
Рекомендация писать такой софт на Паскале уже давно есть.

А потом снимаем розовые очки и выясняем, что в Паскале куча способов отстрелить себе ногу.

Расскажи мне, куда я записал число 123: http://ideone.com/XpEm4g http://ideone.com/qeETZM
1.
Код

program test;
 
type Ptr = ^Integer;
 
var x, y : Ptr;
 
procedure Print(n : Integer; x, y : Ptr);
begin WriteLn(n, '. x = ', x^:8, ', y = ', y^:8) end;
 
begin
    x := New(Ptr);
    y := x;
    Print(1, x, y);
    Inc(x, 1);
    Print(2, x, y);
    x^ := 123;
    Print(3, x, y);
    Dispose(y);
end.

=>
Код

result: success

output:
1. x =   -32724, y =   -32724
2. x =   -18565, y =   -32724
3. x =      123, y =   -32724


2.
Код

...
    Inc(x, -1);
...

=>
Код

result: runtime error

1. x =   -20436, y =   -20436
2. x =        1, y =   -20436
3. x =      123, y =   -20436
Runtime error 216 at $0805C3FB
  $0805C3FB
  $080637A3

Язык с арифметикой указателей не может быть более безопасным, чем другой такой же.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
k0rvin
Дата 2.5.2013, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Можно еще прикольней сделать: http://ideone.com/0Zzipl


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Beltar
Дата 2.5.2013, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Не может, но нужна она реже. Что выше и показано. Да и мой наезд, что писать TMyClass * MyClass просто глупо, когда в 99.99% случаев нужна именно ссылка, не просто так возник, запросто ведь можно пропустить указатель.

Атари, а что не так? В США любили писать на плюсах, ну теперь пишут на Бейсике, или Delphi с фигурными скобками (C#). Почему-то GC не из регионов широкого распространения Delphi идет. И не надо путать техническую защищенность (контроль границ массива, которого нет в плюсах) с распространенностью.

В целом сравнение сложности плюсов и Delphi, описание первого талмуд, для второго можно уложиться в сотню страниц и можно работать, еще сотня для тех, кто копает глубже. Шарп есть ни что иное, как попытка сделать из плюсов Delphi.

А Атари в одном прав, для Delphi сейчас самое полезное было бы добавить синтаксического сахара и, возможно, расширить стандартную библиотеку сотней часто встречающихся функций, которые обычно, можно и так легко реализовать. Радикального повышения производительности не будет, зато понтов прибавится.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Bother
Дата 2.5.2013, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 13.4.2013

Репутация: нет
Всего: нет



Цитата(Beltar @  2.5.2013,  14:37 Найти цитируемый пост)
Не может, но нужна она реже. Что выше и показано. Да и мой наезд, что писать TMyClass * MyClass просто глупо, когда в 99.99% случаев нужна именно ссылка, не просто так возник, запросто ведь можно пропустить указатель.
В 99% случаев объект в куче не нужен. Что значит "пропустить указатель"? Статическая типизация тебе на что?
Цитата(Beltar @  2.5.2013,  14:37 Найти цитируемый пост)
В США любили писать на плюсах, ну теперь пишут на Бейсике, или Delphi с фигурными скобками (C#)
C# идейный наследник Java. Которая развивалась под сильным влиянием С++.
Цитата(Beltar @  2.5.2013,  14:37 Найти цитируемый пост)
контроль границ массива, которого нет в плюсах
есть. Используй метод at в коллекциях stl.
Цитата(Beltar @  2.5.2013,  00:29 Найти цитируемый пост)
Сразу видно, что не работал.
Цитата(Beltar @  2.5.2013,  14:37 Найти цитируемый пост)
Заменяй. Если обернуть гниль в обертку, она так и останется гнилью. Отсюда и GC, потому что народ наелся управлением памятью, причем наелся не в Delphi, где ничего сложнее вызова Free без необходимости делать не приходится.
То, что ты любишь нести безосновательную чушь мы уже давно поняли - по делу что-нибудь будет?
Цитата(Beltar @  2.5.2013,  00:29 Найти цитируемый пост)
А что мне реально даст RAII, кроме, по меньше мере, сомнительной провокации создавать сервисные классы в стеке? И почему твой любимый шарп вдруг использует дельфовый подход? 
Провокация? Лол. В дельфи тебя заставляют(не провоцируют) создавать объекты в куче без автоматического управления, и это без сомнения глупо и опасно. С# копировал концепцию Java, в которую объекты на стеке не входят. Потом туда воткнули структуры, для повышения производительности. Собственно, больше они там не для чего не нужны(по идее они обычно не выглядывают за пределы внутренней реализации).
Цитата(Beltar @  2.5.2013,  00:29 Найти цитируемый пост)
Ну да, берем любой журнальчег по комповой безопасности и читаем очередные новости об успешно поломанных через переполнение программах.
Рекомендация писать такой софт на Паскале уже давно есть. Но мыши плакали, кололись...? 
И asio и Qt'шные сокеты используют буферы, для которых нельзя сделать опасное переполнение. И давай - запили асинхронный сервер на дельфях, мышка ты наша.  smile 

Это сообщение отредактировал(а) Bother - 2.5.2013, 18:18
PM MAIL   Вверх
Athari
Дата 2.5.2013, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.6.2007
Где: Казань, Россия

Репутация: 1
Всего: 1



@Beltar

Цитата
Да и мой наезд, что писать TMyClass * MyClass просто глупо, когда в 99.99% случаев нужна именно ссылка

Эта статистика верна только для твоего дельфового болота.

Цитата
запросто ведь можно пропустить указатель

Не пропустишь. Синтаксис обращения к их членам разный (. vs ->).

Цитата
Атари, а что не так? В США любили писать на плюсах, ну теперь пишут на Бейсике, или Delphi с фигурными скобками (C#).

Ха-ха-ха, то есть шарп внезапно стал православным дельфи, но с богомерзкими скобками? Ну что ж, прогресс, прогресс. smile  smile  smile 

Но вообще "дельфовые" ссылки (указатели с запрещённой арифметикой) присутствуют во многих языках. И если обращаться к истории, то шарп возник из-за того, что Sun не дал MS накручивать в JVM крутые фичи. MS послала Sun с его джавой и начала пилить свой язык -- по определению создателей "возвращение в Java всего хорошего, что есть в C++" (Java -- это "выпиливание из C++ всего лишнего, плюс добавление безопасности и религии"). Потом уже начали хватать вкусняшки изо всех языков, но изначально это именно гибрид Java и C++.

Цитата
И не надо путать техническую защищенность (контроль границ массива, которого нет в плюсах) с распространенностью.

Не понял, к чему это было сказано. Для справки: в плюсах контроль границ присутствует в зависимости от используемых контейнеров и их методов. (И STL -- это часть языка, так что не надо про "встроенность".)

Цитата
А Атари в одном прав, для Delphi сейчас самое полезное было бы добавить синтаксического сахара

Синтаксическим сахаром не обойтись. Такие вещи как асинхронное программирование, генераторы итераторов, динамический тип, деревья выражений и прочее, требуют весьма нехилой логики.

@Bother

Цитата
С# копировал концепцию Java, в которую объекты на стеке не входят. Потом туда воткнули структуры, для повышения производительности.

Структуры были с первой версии.
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Beltar
Дата 2.5.2013, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

Ха-ха-ха, то есть шарп внезапно стал православным дельфи


А я где-то говорил, что шарп идейно плох в целом? Шарп это Delphi или даже скорее VB, испорченный сишным (скорее даже жабьим) синтаксисом и GC.

Цитата

генераторы итераторов


Это как? Просто поддержка итераторов, что и в Delphi давно есть, или оно само будет создавать итератор для любой заданной структуры данных без участия программиста? Или опять будет как с управлением памятью, перебей руками все ссылки, а оно за тебя Free сделает?

Цитата

динамический тип


Это что? А то варианты боян, RTTI в Delphi всегда была хорошая.

Кстати, похоже, утверждение, что Delphi для игр AAA-класса не пригодна просто ложь, 3,14**** и провокация. Если кто-то назовет "Act of War", которая была самой крутой RTS 2005-го года, не AAA-класса, то я в него не то, что камень, бомбу кину.

Но мне тут инфа попалась, что у нее экзешник содержит, как и у всех дельфовых прог раздел RC Data. А в нем:

в DVCLAL:
 // <SIGNATURE>

 - Licence is valid
 - Delphi Client/Server Suite (Enterprise)

Помимо этого там еще куча DFM'ок унаследованных от TForm.

У вышеупомянутой Эадор в этом разделе стоит C++ Builder, он же у вполне себе не второсортной "XIII век". Хотя билдер вроде не быстрее Delphi. Age of Wonders в свое время реализовала интересную концепцию, пошаговую стратегию с правом одновременного хода, для сценариев на 8-12 игроков, весьма полезная штука, т. к. не надо было ждать, пока каждый ход завершит. И вполне себе это тащила на железе 99-го года.

Delphi так же не помешала Katauri реализовать RTS-режим в их "Космических рейнджерах". Потом они перешли на плюсы, но не могу сказать, что King's Bounty быстрая игра, а их MMORPG Royal Quest на которую я убил порядочно времени, вообще поражала ошибками, которые по всем законам ООП просто невозможны, не должна правильно спроектированная программа допускать такого влияния модулей друг на друга.

В общем в США могут что угодно делать на своих плюсах, там где на Delphi пишут, на ней добивались результатов не хуже. По крайней мере, для стратегий Delphi точно пригодна. smile



--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Athari
Дата 3.5.2013, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.6.2007
Где: Казань, Россия

Репутация: 1
Всего: 1



@Beltar

Цитата
Шарп это Delphi или даже скорее VB, испорченный сишным (скорее даже жабьим) синтаксисом и GC.

Ладно, шут с тобой, в пользу GC ты не веришь. Но вред-то в нём какой? Расскажи мне о такой своей задаче, где GC будет узким местом (ну то есть будет потреблять больше 10% CPU), а ручное управление памятью -- нет (меньше 10%). Для информации: создание и удаление в куче -- это тоже недешёвая операция; это одна из причин, почему сишники так неровно дышут к созданию объектов в стеке, хоть и не главная. И, если честно, я вообще таких задач не знаю, так что можешь даже не пытаться.

Применяя местную тактику дельфистов: ручное управление памятью тебе не нужно.

Цитата
Просто поддержка итераторов, что и в Delphi давно есть, или оно само будет создавать итератор для любой заданной структуры данных без участия программиста?

Yield. На нём реализованы LINQ и прочие вкусности.

Да, кстати, не беспокойся о скорости. Сам не проверял, но по слухам JIT компилятор наконец-то научили раскручивать самые частые случаи в обычные циклы, так что стоимость нулевая.

Цитата
Это что? А то варианты боян, RTTI в Delphi всегда была хорошая.

Это когда ты пишешь "foo.Bar", а тип переменной foo может быть любой -- главное, чтобы было такое свойство, и его результат подходил в выражении. Это используется для поддержки языков с динамической типизацией, но и по отдельности полезно: удобные отражения, мультиметоды (но это так, довесок).

Цитата
Кстати, похоже, утверждение, что Delphi для игр AAA-класса не пригодна просто ложь, 3,14**** и провокация. Если кто-то назовет "Act of War", которая была самой крутой RTS 2005-го года, не AAA-класса, то я в него не то, что камень, бомбу кину.

Если очень захотеть, "ААА" можно и на ассемблере написать. Вопрос в стоимости разработки. Ну и игре 8 лет; одна игра в десятилетие (за всю историю дельфи?) -- это не статистика. В общем и целом, исключение подтверждает правило.

Разработка ААА игр чуть менее, чем полностью подмята под собой плюсами. Для остальных языков остаются только "инди".

Цитата
У вышеупомянутой Эадор в этом разделе стоит C++ Builder

Ну вот, даже тут не дельфи. smile

Вот смотри, ты смог назвать одну "ААА" игру (я уже не помню стандарты восьмилетней давности, поэтому судить сложно, но ладно, приму на веру), несколько игр среднего пошиба и "инди". А теперь сравним с тем же шарпом. Игр среднего пошиба -- сотни; инди-игр -- тысячи. Наверное, это что-то говорит об удобстве платформы?

Ещё раз поставлю акцент: принципиальная возможность не интересует никого, кроме фанатиков. Серьёзных производителей игр и прочего софта интересует цена: цена разработчиков, цена поиска разработчиков, скорость разработки, скорость достижения приемлемого качества, наличие готовых библиотек, наличие инструментов и прочее, и прочее. Чем больше ты сможешь сэкономить, чем быстрее выложишь свой товар на прилавок -- тем больше доход. И если ты умудряешься жить без "ненужных" фич, то в игровой индустрии вся эта "магия" и "шаманство" нужны позарез.
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Alexeis
Дата 3.5.2013, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Athari @  3.5.2013,  03:38 Найти цитируемый пост)
Для информации: создание и удаление в куче -- это тоже недешёвая операция; это одна из причин, почему сишники так неровно дышут к созданию объектов в стеке, хоть и не главная. И, если честно, я вообще таких задач не знаю, так что можешь даже не пытаться.

  Зная это кодегировцы поставили лучший менеджер кучи, который в несколько раз быстрее того, что использует VS C++ . Насколько я помню, пути дебага сводят new к HeapAlloc в конечном итоге. Действительно, когда объект создается в функции и в ней же умирает, то дергать кучу как бы не очень хорошо. Но, если взять True Way C++ (STL/Boost) с использованием для строк наследников base_string<> , векторов как классов для работы с массивами, всяческих stringstream для форматирования и конвертаций, то куча там также прет из всех дыр. Контейнеры/строки С++ в любом случае дернут кучу, даже если мы создали временную строчку в функции. 
  Не берусь говорить за всех, но в моей практике как объекты среднего размера и создаются чаще всего в куче, поскольку часто их время жизни не определено. Статическими, обычно получаются либо большие объекты выполняющие роль неймспесов (синглтоны) или маленькие объекты типа - команды. 
  Но совсем другое дело язык С . Он действительно шикарен. В его нише делфи выглядит, действительно, уныло. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Beltar
Дата 3.5.2013, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

Если очень захотеть, "ААА" можно и на ассемблере написать. Вопрос в стоимости разработки. Ну и игре 8 лет; одна игра в десятилетие (за всю историю дельфи?) -- это не статистика. В общем и целом, исключение подтверждает правило.


Ну теперь началось, что можно и на ассемблере написать. О том, как разработка сложного ПО решается на плюсах, мы уже насмотрелись, сами плюсы вытесняются шарпом.

Цитата

Игр среднего пошиба -- сотни


За все время существования платформы? А то событийных игр выходит в год 2-4 шт в каждом жанре. А что там в среднем классе вроде того же Эадора, который просто перерос масштаб инди-игры, мне сложно оценивать. Но точно можно сказать, что писать такую игрушку лучше на том, чем умеешь, не заморачиваясь на плюсы (кстати, сколько AAA-игр сделанных на плюсах просто безбожно тормозит на ровном месте? У той же WoT самый мерзкий движок из всех мной виденных.). Что собственно и делают. Или в конструкторе игр, а тут лидирует дельфовый Game Maker.

Вопрос был не об этом вообще-то, а о том, что якобы игру ААА-класса в Delphi\Билдере сделать вообще нельзя из-за низкой производительности. Однако таковые нашлись.

Добавлено через 12 минут и 3 секунды
Цитата

 Серьёзных производителей игр и прочего софта интересует цена: цена разработчиков, цена поиска разработчиков, скорость разработки, скорость достижения приемлемого качества, наличие готовых библиотек, наличие инструментов и прочее, и прочее.


Логично, в условиях США делать будут только на плюсах, однако в РФ да и много где в Европе дельфовый разработчик не редкость. Собственно все перечисленные игры были выпущены в Европе.

Цитата

Yield. На нём реализованы LINQ и прочие вкусности.


А для этого обязательна поддержка сопрограмм?

Цитата

Но совсем другое дело язык С . Он действительно шикарен. В его нише делфи выглядит, действительно, уныло. 


Вирт его синтаксически усовершенствованным ассемблером назвал. Хотя некоторые ошибкогенерирующие от опечаток конструкции все равно надо лечить. Но в его нише любой язык высокого уровня выглядит уныло.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 3.5.2013, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(k0rvin @  2.5.2013,  07:33 Найти цитируемый пост)
program test;
 
type Ptr = ^Integer;
 
var x, y : Ptr;
 
procedure Print(n : Integer; x, y : Ptr);
begin WriteLn(n, '. x = ', x^:8, ', y = ', y^:8) end;
 
begin
    x := New(Ptr);
    y := x;
    Print(1, x, y);
    Inc(x, 1);
    Print(2, x, y);
    x^ := 123;
    Print(3, x, y);
    Dispose(y);
end.


>>type Ptr = ^Integer;
а зачем такое писать?




Цитата(Athari @  3.5.2013,  02:38 Найти цитируемый пост)
Это когда ты пишешь "foo.Bar", а тип переменной foo может быть любой -- главное, чтобы было такое свойство, и его результат подходил в выражении. Это используется для поддержки языков с динамической типизацией, но и по отдельности полезно: удобные отражения, мультиметоды (но это так, довесок).



В Delphi есть тип Variant.
Может быть любым типом или объектом.
PM MAIL   Вверх
Athari
Дата 3.5.2013, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.6.2007
Где: Казань, Россия

Репутация: 1
Всего: 1



@Alexeis

Цитата
Зная это кодегировцы поставили лучший менеджер кучи, который в несколько раз быстрее того, что использует VS C++ .

Как я уже сказал, мерянье скоростью new/delete бессмысленно, потому что приложений, для которых это критично, очень мало. Увеличение скорости работы с памятью на 100%, если работы с памятью в приложении 4%, даст общий прирост производительности на 2%.

@Beltar

Цитата
О том, как разработка сложного ПО решается на плюсах, мы уже насмотрелись, сами плюсы вытесняются шарпом.

Ты опять путаешь сложность. Корпоративный софт и крупная веб-разработка перебрались на шарп (и джаву; в разных соотношениях). Из игр реально перебрались только инди. Крупный коробочный софт, крупные игры -- как были на плюсах, так и остаются, никуда плюсы не вытесняются.

Крупные игры тоже могли бы переползти, но экспоненциальный рост производитльности застрял, технология топчется на одном месте. Поэтому у производителей ААА игр возникает вполне естественное желание выжимать все соки из уже имеющегося железа. А это плюсы.

Цитата
Или в конструкторе игр, а тут лидирует дельфовый Game Maker.

Штука любопытная, но как много на нём коммерчески успешных игр? Я вон не так давно на стиме появился, на распродажах всяких инди-игрушек и местами чего более крупного нахватал. Я любитель платформенных игрушек, и гейм-мейкер тут позволяет теоретически должен хорошо себя показывать, но что-то среди купленных мной игр дофига дотнета, дофига нативных игрушек, немного джавы -- и пока только одна гейм-мейкеровая игрушка (Stealth Bastard Deluxe -- графика убитая, но геймплей сносный).

Цитата
Вопрос был не об этом вообще-то, а о том, что якобы игру ААА-класса в Delphi\Билдере сделать вообще нельзя из-за низкой производительности.

Эту проблему ты сам придумал. Тебе много раз твердили, что под дельфи элементарно не хватает инструментария.

Цитата
Логично, в условиях США делать будут только на плюсах, однако в РФ да и много где в Европе дельфовый разработчик не редкость.

Дельфовых разрабов найти можно, но разрабов на плюсах, шарпе и джаве -- на порядки больше в любой точке мира. Это значит, что поиск сильно упрощается. Да и среди плюсовиков на порядок проще найти того, кто разбирается в разработке игр, потому что на плюсах в день появляется больше игр, чем на дельфи за год. Это означает, что не нужно обучать с нуля, то есть экономия. Это значит, что если кто-то уволится, то замену не придётся искать месяцами, то есть снижение рисков.

Цитата
А для этого обязательна поддержка сопрограмм?

Насколько понимаю, да. Понятно, что для написания класса итератора можно использовать стандартные средства, но код будет ужасным и нечитаемым. Весь смысл yield в том, чтобы код был чистым и понятным.

Добавлено через 9 минут и 5 секунд
@Akella

Цитата
В Delphi есть тип Variant.

Я не дома, проверить не могу. Можно написать так? (На синтаксические ошибки внимания не обращать. Тип переменных и результатов функций принципиален.)

Код

var a, b, c: variant;
a := TButton.Create;
b := TCheckBox.Create;
a.Enabled := !b.Enabled;
f(a, b);
f(a, bar);
procedure foo (a: TButton; b: TCheckBox); begin ... end;
procedure foo (a: TCheckBox; b: TButton); begin ... end;
function bar () : variant; begin Result := TCheckBox.Create; end;

PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
Zloxa
Дата 3.5.2013, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(k0rvin @  2.5.2013,  07:24 Найти цитируемый пост)
аналог RAII — using.

В чем особая забористость этого подхода против try finally?
Запись на пару строчек компактнее? smile


Это сообщение отредактировал(а) Zloxa - 3.5.2013, 15:41


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akella
Дата 3.5.2013, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Нет, TCheckBox просто так, наверное нельзя. Даже не приходило в голову.
Здесь можно использовать TObject вместо Variant.
Ну как-то так:

Код

Var
 CheckBox22: TObject;// в TObject можно запихать любой объект: кнопку, сетку, TForm, переключатели т.д.
begin
  CheckBox22 := TCheckBox.Create(self);
  TCheckBox(CheckBox22).Checked;


С Variant`ом можно так:

Код

var
  Excel : Variant;
  WorkSheet : Variant;
  I, J  : Integer;
begin
//работа с COM-сервером
    Excel := CreateOleObject( InputBox('OleStr', 'CreateOleObject', 'Excel.Application.8') );
    Excel.Visible := False;
    Excel.Workbooks.Open( OpenDialog.FileName );
    WorkSheet := Excel.Workbooks[1].WorkSheets[1];
....

PM MAIL   Вверх
Beltar
Дата 3.5.2013, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

Крупные игры тоже могли бы переползти, но экспоненциальный рост производитльности застрял, технология топчется на одном месте. Поэтому у производителей ААА игр возникает вполне естественное желание выжимать все соки из уже имеющегося железа. А это плюсы.


Нет, не в этом дело. Просто PC сейчас становится не основной платформой, игры тащат на консоли, где, обычно, нет ничего кроме плюсового компилятора. Эти же консоли своим медленным обновлением тормозят развитие персоналок потому что суют на них одни и те же модели, ожидаю что в будущем спрос на сверхмощные видеокарты и SLI-системы может упасть, вроде уже есть такая тенденция. При этом сами проци со времени P-4 неплохо проэвоолюционировали, Core Duo по удельной производительности с 1 ядра рвет P-4 как тузик грелку, у следующей Sandy Bridge рывок тоже весьма конкретный. Память тоже частоту наращивает. DX9 была принципиально однопоточной библиотекой, по сути все эти Core Quad пустая трата денег были, если сервер на нем не поднимать. А DX11 еще только входит в силу. Впрочем все основные задачи для типовых игр вроде шутеров или RTS можно считать уже давно решенными, т. е. игра будет нормально работать, если просто не делать ее через задницу. Мне тут попадался вопрос, можно ли на шарпе делать игровой проект, там была ифа, что в Unreal Engine скрипты в 30 раз медленнее основного кода работают, и это допустимо. Скорость разработки сейчас на первый план выходят, остальное железо вытащит. Понтовые шутеры же вроде "крузиса" выходят 1-2 раза в год. А 10000 полигонов на танчег в какой-нибудь C&C 10 это так для рекламы, на практике разницы даже при приближении не заметишь. Кстати в Bioshock Infinite (Unreal Engine) я особой разницы между максимальной и минимальной графикой вообще не заметил, По крайней мере, в детальности моделей.

Цитата

Эту проблему ты сам придумал. Тебе много раз твердили, что под дельфи элементарно не хватает инструментария.


Какого инструментария, а как 15 лет назад люди писали не имея современных продвинутых средств? У вас претензия по сути одна, что Delphi детский конструктор, который ни на что больше не годен, кроме как компоненты склеивать. Однако каждый раз оказывается, что во всех сферах применения находятся вполне качественные программы на Delphi.

Цитата

Штука любопытная, но как много на нём коммерчески успешных игр? Я вон не так давно на стиме появился, на распродажах всяких инди-игрушек и местами чего более крупного нахватал. Я любитель платформенных игрушек, и гейм-мейкер тут позволяет теоретически должен хорошо себя показывать, но что-то среди купленных мной игр дофига дотнета, дофига нативных игрушек, немного джавы -- и пока только одна гейм-мейкеровая игрушка (Stealth Bastard Deluxe -- графика убитая, но геймплей сносный).


А кто их знает. На сайте выставка достижений. И почему обязательно коммерчески успешных? Я вон сейчас в Lost Snowmen играл, она халявная, наши ребята с redsys.ru сделали. Думаю подавляющее большинство таких игр бесплатны.

Цитата

Дельфовых разрабов найти можно, но разрабов на плюсах, шарпе и джаве -- на порядки больше в любой точке мира.


Дельфовых разрабов много знаю, плюсовых меньше, так что странна вера ваша.

Цитата

var a, b, c: variant;
a := TButton.Create;
b := TCheckBox.Create;
a.Enabled := !b.Enabled;
f(a, b);
f(a, bar);
procedure foo (a: TButton; b: TCheckBox); begin ... end;
procedure foo (a: TCheckBox; b: TButton); begin ... end;
function bar () : variant; begin Result := TCheckBox.Create; end;


Нет, потому что у варианта конечная таблица типов. Вопрос не в этом, написать-то можно много, но иногда лучше этого не делать. Так что интересно для начала узнать, что предполагается достичь таким приведением теплого к мягкому.

Цитата

Расскажи мне, куда я записал число 123


Inc(P); приведет к увеличению адреса на размер типа на который указывает указатель. Я правда не понял, что ты хочешь показать. Есть языки в которых ногу прострелить нельзя (VB), но нельзя и еще много чего, есть языки в которых без стрельбы по ногам никак (Си, Си++, хотя последний и пытается выставить дело так, будто стрельбы нет), а есть Паскаль, где стрельба по ногам возможна, но лишь при крайней необходимости.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1181 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.