ФлеймФорумПрограммирование

Троллинг: как можно писать игры на С++ ? (80 стр)

Страницы: 179 80 81 82 83 Следующая »
#1185
19:25, 7 дек 2011

Spartan
> http://www.gamedev.ru/flame/forum/?id=155345&page=17#m249
ради этого и сижу
Соломон Страуструбер
> Хотя в дельфах РАИИ есть, и оказывается, не такое и хреновое, как кажется, если
> посмотреть на дизасм финализатора, короче, обсуждение тут:
> http://govnokod.ru/8744
так тыж его там хаеш

#1186
19:28, 7 дек 2011

laMer007
> Я думал так только в Си и С++ можно, если есть сильное неутолимое желание
> половить проблем. О_о

Про конверсию через нетипизированный указатель?
Выставь все предупреждения и тип pointer будет вне закона.

Chaos_Optima
> так тыж его там хаеш

так тыж там уже отметился
Интересно, насколько это критино для сложных объектов.
Тут однажды был тест скорости интерфейсов, они дико тормозили, но это из-за реализации счётчика ссылок через системный вызов, интерфейсы изначально как-то с АПИ виндовским связаны. Но можно переопределить этои без системных вызовов, руками. Но перебора типа, лол, не избежать.

#1187
19:31, 7 дек 2011

Соломон Страуструбер
Привет, Тарас.

> Якобы не нужны они им, ага. И якобы читабельность портят.
Да все нормально с ними, хорошая фича. Но в коде ДелфиДелфи это костыль. У себя делал пару раз через структуру.

> И обобщённые контейнеры тоже можно через {$INC} сделать.
#define TElement int
#define NewName VectorInt
#include "vector.h"
Делал так на няшном Си.


weereew
> вот только для написания софта на делфи это не нужно, зато как показывает
> практика любой код на с++ состоит из небезопастных решений
Бла-бла-бла. Большинство кода на C++ состоит из векторов, которые ни чуть не опаснее.

> Вы просто не понимаете концепции строгой типизации
> нетипизированный указатель в твоей "замене шаблонам"
hahaOhWow.jpg

> Ваше приплюснутое мышление мешает вам осознать суть этого примера.
"Вы извиняйте мужики, но я забыл в чем косяк" (с) урсус

> Вы просто не понимаете концепции строгой типизации, и проблема именно в этом. Если писать код следуя правилам этой концепции то и память течь не будет
Ты давай не мысью по древу растекайся общими фразами, а по делу говори.

#1188
19:39, 7 дек 2011

Fla
> У себя делал пару раз через структуру.

Через костыль, короче.

Fla
> Делал так на няшном Си.

Да, типа того. Но для Дельфи-7 лучший вариант.

Что касается неудобства дельфийских динмассивов - в них только один минус - не хватает стандартных методов. Типа добавить элемент в конец, или сразу обратиться к последнему. A[Length(A)-1] меня бесит, например.

Fla
> "Вы извиняйте мужики, но я забыл в чем косяк" (с) урсус

А тебя на том сайте как зовут?

#1189
19:46, 7 дек 2011

Соломон Страуструбер
> Через костыль, короче.
Да. Если ваши вложенные функции не дают замыканий, то толку от них тоже маловато. А разницы писать

struct local
{ 
  static type ololo(...)
  {
    ...
  }
}; 
local::ololo(...); 

или

function ololo(...) : type;
begin
  ...
end

ololo(...);

лично я особой не вижу.

> А тебя на том сайте как зовут?
На говнокоде то? Никак, я в ридонли.

#1190
19:47, 7 дек 2011

Fla
> > нетипизированный указатель в твоей "замене шаблонам"
> hahaOhWow.jpg
в условии задачи надо было сделать чтобы работало также и я хорошо показал что строгая типизация не даст это реализовать так как это делается на с++, если вы это не заметили мне вас жаль:)

Fla
> "Вы извиняйте мужики, но я забыл в чем косяк" (с) урсус
В моем примере показывается что на с\с++ можно сделать что угодно и это будет выглядеть нормально, на паскале нужно специлаьно обьявлять все типы чтобы это работало.

Fla
> Ты давай не мысью по древу растекайся общими фразами, а по делу говори.
Зачем мне чтото пытаться обьяснять если вы наотрез отказываетесь это понимать, это будет пустая трата времени.

#1191
19:50, 7 дек 2011

ТарасЪ

> Якобы не нужны они им, ага. И якобы читабельность портят.
Они расширяют на себя область видимости локальных переменных. Плюс так горячо любимые автором goto, и вот, пожалуйста, - спагетти поданы.

> Раз их нет в С++ - значит не нужны?
Не нужны - значит не нужны.

> Я вот ща напрягусь и сделаю несколько для Д7, может пригодится кому.
Сильно только не тужься. gk.ru ведь не резиновый.

#1192
19:55, 7 дек 2011

weereew
> мне вас жаль:
Сам погуглишь по этой фразе или мне ссылочку дать?

> в условии задачи надо было сделать чтобы работало также
Твой код работает далеко не так же, это же очевидно. Приведи код, который будет работать хотя бы для 4х типов. Хотя бы.

weereew
> на паскале нужно специлаьно обьявлять все типы чтобы это работало
Объявлять тип для массива с фиксированным размером это специально косячить? Вот это дааааа.
pointer оттуда спокойно убирается, я его оставил что бы ты испытал все прелести своей строгой типизации.
http://ideone.com/taOyV

> Зачем мне чтото пытаться обьяснять если вы наотрез отказываетесь это понимать
Так ты ничего и не объяснил, пустозвон. Твои слова о GC подтверждают, что ты - неуч.

#1193
20:07, 7 дек 2011

Fla
> А разницы писать ...
> или ...
> ololo(...);
> лично я особой не вижу.

Да я так же про автодеструкторы и шаблоны могу ответить.
Что разницы писать
a: table<int,string>
и
type
K=int
V=string
{$I maps.inc}
я типа особой не вижу.

Ghost2
> Они расширяют на себя область видимости локальных переменных.

И чё, как это портит структурность и читаемость?

Ghost2
> Плюс так горячо любимые автором goto, и вот, пожалуйста, - спагетти поданы.

Гото на fail - нормальный приём.
Но try..finally лучше.

Ghost2
> Не нужны - значит не нужны.
> [нет в крестах - значит буду говорить, что не нужны]

Да я понял суть крестоцентристского восприятия, не рассказывай.

Fla
> pointer оттуда спокойно убирается, я его оставил что бы ты испытал все прелести
> своей строгой типизации.

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

#1194
20:15, 7 дек 2011

Соломон Страуструбер

> И чё, как это портит структурность и читаемость?

Они расширяют на себя область видимости локальных переменных

Могу на английском написать. Идиш и язык дельфинов не знаю.

#1195
20:22, 7 дек 2011

Ghost2
Дальше-то чтоэ? И что в этом плохого? Да, они видят все переменные, видимые в том же блоке, в котором объявлены они, что в этом плохого и антиструктурного?

#1196
20:22, 7 дек 2011

Соломон Страуструбер

> Ты сделал принудительное приведение.
Где? Я просто взял адрес локальной переменной на стеке и присвоил его указателю на массив. Код компилируется, даже варнинга не выдает.  Может быть делфи и выдает хотя бы варнинг, но у меня его нет, так что с радостью погляжу на скриншот.

Уже вижу, что не актуально.
> Ты отрубил директиву "типизированный оператор @". А ещё опцию "предупреждение об опасном операторе", она вообще ставит @ вне закона.
Я ничего не отрубал. Я написал код и нажал "отправить". А раз ваш делфи тоже надо настраивать, что бы не накосячить, то еще один чей-то, правда не помню чей, плюс типа "у вас и релиз и дебаг, это гемморой, настройки блаблабла" летит в тартарары.
Можешь скриншот показать и сказать какие настройки в проекте по дефолту?

> То есть дельфи позволяет кулхачить, но он делает это неудобным
Почему не удобным? Тоже самое что и на Си. Добавить один нетипизированный указатель - это даже преградой не назвать. Сам факт того, что каст от нетипизированного указателя к типизированному не вызывает даже варнинга уже наводит на мысли, что ваша строгая типизация очень даже не строгая.
В тех же ужасных крестах все совсем плохо http://ideone.com/2I4T9

prog.cpp:5: error: invalid conversion from ‘void*’ to ‘char*’
prog.cpp:6: error: invalid conversion from ‘void*’ to ‘char*’

Соломон Страуструбер
> Да я так же про автодеструкторы и шаблоны могу ответить.
Без замыканий вложенные функции - бесполезная фича. Такую "вложенную" функцию можно хоть в .cpp рядом положить и пометить как static.
И разница между локальным struct со статическим методом и вложенной function была бы только в синтаксисе. БЫЛА БЫ.
Но у вас есть замыкания, так что все хорошо, фича полезная.

#1197
20:30, 7 дек 2011

Fla
> А раз ваш делфи тоже надо настраивать, что бы не накосячить

Да, само собой.

Fla
> то еще один чей-то, правда не помню чей, плюс типа "у вас и релиз и дебаг, это
> гемморой, настройки блаблабла" летит в тартарары.

Ну у меня релиз и дебаг различаются, например.

Fla
> Можешь скриншот показать и сказать какие настройки в проекте по дефолту?

Дефолт ставим себе мы сами. Я выставил полный дебаг, понятно.
А что там изначально, после установки - я чё, помню...

Fla
> Почему не удобным? Тоже самое что и на Си.

Ну надо отдельно тип объявлять, лишние движения, кулхацкерам не понравится.

Fla
> И разница между локальным struct со статическим методом и вложенной function
> была бы только в синтаксисе.

В Д7 так и есть. Но я же говорю, раз вас не парит лишнюю структуру объявлять, придумывая ей имя, то и нас типа не парят интерфейсы и включения файлов.
И вообще, я Страуструберг, но форма имени слишком короткая, лишняя буква не влезла.

#1198
20:39, 7 дек 2011

Соломон Страуструбер
В тех же ужасных крестах все совсем плохо http://ideone.com/2I4T9

prog.cpp:5: error: invalid conversion from ‘void*’ to ‘char*’
prog.cpp:6: error: invalid conversion from ‘void*’ to ‘char*’

> В Д7 так и есть.
> Но я же говорю, раз вас не парит лишнюю структуру объявлять, придумывая ей имя, то и нас типа не парят интерфейсы и включения файлов.
Разница большая, даже очень. struct static method и inner function без замыканий - синтаксический сахар на уровне a[ b ] <=> *(a + b). Разница в количестве символов - константа, а количество мыслительной работы стремится к нулю. В конце концов я могу сделать макросы LocalFunctions_Start и LocalFunctions_End, а потом вызывать их local.f() или local::f().
Без замыканий вложенные функции не нужны.

> Страуструберг
Я знал!

#1199
20:45, 7 дек 2011

Соломон Страуструбер
> так тыж там уже отметился
где? на говнокоде? я там ничего не писал 0_о

Страницы: 179 80 81 82 83 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.

Тема закрыта.