- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
for (int z=NewArray[y-1];z<(NewArray[y]-1);z++)
{
AnsiString ts = IntToStr(z+1);
int inum = -1;
try{
inum = StrToInt(ts);
} catch(...) {}
..... //дальше inum не используется
}
defecate-plusplus 10.02.2012 19:44 # +6
TarasB 10.02.2012 19:47 # −2
defecate-plusplus 10.02.2012 20:11 # 0
на уймись уже
по теме - если создавать С++ библиотеку общего назначения да еще и на все случаи жизни, совместимую с паскалём 20-летней давности, получается беспредельное говнище, позорящее С++ своим существованием
инвалидизация программистов хуже бейсика, спасибо борланду
actuator 10.02.2012 22:35 # 0
То можно за время её написания отрастить бороду.
defecate-plusplus 10.02.2012 22:52 # +1
дважды перепродаться, чтобы хоть как то свести концы с концами
TarasB 10.02.2012 22:47 # 0
Меня забавляет, как проходящая мимо крестошколота минусует положительное упоминание begin/end.
Можно долго спорить на субъективные темы, но есть объективный критерий: http://www.gamedev.ru/flame/forum/?id=156371
Ну и конечно же, аргумент про миллионы мух.
Ты начинал неплохо, спорил на серьёзные темы, а скатился до аргументации на уровне молодого крестопионера.
actuator 10.02.2012 22:56 # +1
TarasB 10.02.2012 22:58 # 0
Говногость 10.02.2012 23:04 # +1
Boo
F#
Nemerle c #pragma indent
Никого не забыл?
actuator 10.02.2012 23:32 # 0
Не нужен ;)
Говногость 11.02.2012 00:04 # +1
Таки обычно, когда говорят эту фразу - аргументов назвать не могут, но я все же спрошу:
Аргументы?
actuator 11.02.2012 02:28 # 0
Ну а претензия самая обычная - этот язык не приблизит меня к решению моих задач. Мне бы просто быдлокодить, чтобы быстро писалось и легко читалось, для этого подходит Жаба. А Немерле предлагает то, чего я никогда использовать не буду - всякое метапрограммирование, паттерн матчинг и функциональщину. То есть, просто добавленную сложность.
roman-kashitsyn 11.02.2012 09:58 # +2
> добавленную сложность
Мощные функциональные и гибридные языки - палка о двух концах. Они могут сделать тебя гораздо продуктивнее (и мотивированнее, кстати), а могут и утопить в сложности абстракций.
К сожалению, людей, способных к продуктивному использованию таких языков, довольно мало, причём большая часть этих людей не заинтересована в изучении и применении таких языков.
Программирование нынче становится социальным, и исходный код, как и любой продукт, предназначенный для массового потребления, должен быть понятен сотням людей с разным бэкграундом и образованием. И никого не волнует, что одна строка с map и reduce эффективно решает задачу и рудует глаз функциональщика, извольте писать циклом, так, чтобы все поняли.
по мне так всё это очень грустно.
eth0 11.02.2012 10:47 # +1
TODO: научиться писать для радования глаз функциональщиков.
actuator 11.02.2012 11:41 # 0
roman-kashitsyn 11.02.2012 11:53 # 0
Вы пробовали использовать map/reduce (не как архитектурное решение, а для простых вычислений), к примеру, в java? Отсутствие функций как объектов первого рода и лямбд делает использование абстракций map/reduce в обычном коде сопряжённым с огромным оверхедом, а следовательно, нежелательным.
roman-kashitsyn 11.02.2012 12:04 # 0
От себя скажу, что лисп-макросы и идея bottom-up programming, к примеру, меня очень впечатлили (гораздо больше, чем ООП в своё время). Возможность без особых заморочек изменить язык под свои нужды, сохранив при этом всю его мощь, очень вдохновляет.
roman-kashitsyn 11.02.2012 12:26 # +2
actuator 10.02.2012 23:27 # −2
С нечитаемостью закорючек полностью согласен, сам часто глаза ломал. Но begin-ы, имхо, избыточны, т.к. всегда прилеплены к какой-то конструкции (началу функции, условию, циклу). Даже если не вдаваться в крайности типа значимости отступов, можно их безболезненно убрать, введя, например, правило автооткрытия блоков, если за всякими вайлами и ифами сразу на строке ничего нет. Ну и краткость будем считать сестрой таланта: "then" нафиг, procedure/function изволим звать "def" и будет все просто и лаконично. А не как эту срань Ada, где end-у нужно говорить, чей он.
roman-kashitsyn 11.02.2012 00:21 # +1
10 уровней вложенности? ведь иногда можно писать более одного def. Затраты на идентацию аналогичны затратам в других языках.
actuator 11.02.2012 01:53 # 0
TarasB 11.02.2012 11:03 # +1
Зато если енд забудешь, то не будет по всему коду бегать и искать, где ты его забыл.
Опять вы про скорость набора говорите, а это дело последнее.
defecate-plusplus 11.02.2012 11:34 # +2
с тех пор я написал миллион закрывающих скобок и не имел никакого батхерта
но раз программисты на аде не могут писать синтаксически корректный код с первого раза, то конечно пускай насилуют клавиатуру, скорость набора ведь дело последнее
а ведь дело в простом - как только ты при наборе текста ставишь открывающую скобку, ты (или среда) тебе сразу ставит закрывающую (это несложно делать и самому - скобки то соседние клавиши), затем ты нажимаешь один раз энтер и уже пишешь внутри блока {} и уже с отступами. Это же настолько очевидно. Тарас, почему у тебя проблемы с такими элементарными вещами?
TarasB 11.02.2012 11:39 # 0
defecate-plusplus 11.02.2012 11:55 # 0
в процессе перелопачивания кода нормальная IDE всегда покажет matched brackets жирным, а mismatched brackets красным, скобка обязана закрыться на той позиции, где начинался её блок, положением блока легко управлять выделение + таб/шифт-таб
редактор твой друг, ни с++ ни паскаль в блокноте писать не нужно, это сразу снижение производительности труда в 10 раз
и да, за уровни вложенности, начинающиеся на середине экрана, надо нещадно пиздить в любом языке
roman-kashitsyn 11.02.2012 12:13 # +2
Мне это утверждение кажется очевидным. Меня всегда терзал вопрос, что, ЧТО курили авторы GNU coding style.
Интересуюсь, чтобы случайно не выкурить того же
TarasB 11.02.2012 12:48 # +2
actuator 11.02.2012 11:34 # 0
TarasB 11.02.2012 11:39 # 0
Ну не всегда получается так, как надо.
defecate-plusplus 11.02.2012 01:10 # −1
и да, код, написанный тобой для примера - херня, потому что 1) после } точка с запятой не нужна, 2) использовать константы капслоком (небось задефайненные) - это тебе в сишечку, 3) лично я в for/if/etc предпочитаю египетский стиль, 4) ты заведомо выбрал разные шрифты с разным интервалом и с разной констрастностью, тема про шрифты уже поднималась и хуже курьера, на мой взгляд, сложно что то найти, но твой пример у меня выглядит так http://db.tt/XpP6fjzi - у тебя проблемы с поиском отступов?, 5) т.к. ты привел разные по содержанию примеры, я попытался воспроизвести твой дельфишный пример на С++ и пришел к неутешительному выводу, что твой код - реальный кал.
Об этом поподробней.
Ты написал явно какой то хендлер (наверное, ввод с клавиатуры), и в нем пытаешься засунуть введенный символ в (самописный?) edit. Ок. Ты вызываешь (глобальную? sic!) функцию EditInfoPtr, которая тебе как бы должна вернуть указатель на твой эдит (корректность указателя?), после чего, вместо того, чтобы передать объекту эдита задачу "съешь вот этот символ да выпей чаю и изменись", ты отбираешь у него его работу - получаешь контекст, затем работаешь с данными эдита (S?), при этом применяешь стрёмные махинации с (непустотой?) данных - типа если в первый раз, то заводим первую строку? - после чего ты управляешь данными эдита, смещаешь курсор, видать, перерисовываешь - в общем, у меня рука не поднялась воспроизводить этот OOP-hater кал. Знаешь, инкапсуляция - это объединение данных и методов работы с этими данными под одной крышей - классом - и такую простую вещь поддерживает даже ООП реализация в дельфи, пробуй!
ЗЫ как видишь, ты тоже пользуешь египетский стиль, не вижу чем 9 символов "begin" "end;" в этом случае имеют преимущество перед двумя {} - как и ненужные "procedure", "var"
подумай над этим
defecate-plusplus 11.02.2012 01:58 # −1
SmackMyBitchUp 11.02.2012 11:27 # 0
вы такой индивидуальной величиной решили оперировать? а не пойти ли вам нахуй в таком случае?
defecate-plusplus 11.02.2012 11:58 # +1
малыш, читай тред внимательней
> http://www.gamedev.ru/flame/forum/?id=156371
> Соломон Страуструбер - виртуал тараса
> "но всё-таки самый важный параметр - читаемость кода."
я так и не дождался
SmackMyBitchUp 11.02.2012 14:07 # −8
defecate-plusplus 11.02.2012 14:33 # 0
ты что, ошибся разделом, кобелёк? где твой хозяин? он тебя выкинул на улицу как только ты ему нагадил в ботинки? приезжай в москву, тут собакам делают уколы, отчего они хоть и становятся бесплодными, но очень жирными и спокойными
TarasB 11.02.2012 15:03 # +9
У нас на говнокоде атмосфера всеобщей любви и радости, вообще-то.
defecate-plusplus 11.02.2012 15:24 # +2
его что, кто то приглашал отвечать на вопрос, что был направлен лично тебе? причем демонстрируя такую глубину адекватности
если ты таким образом думал руками виртуала соскочить с темы "да я ща всем покажу божественный код с двумя отступами и жирными begin end;", то ты скажи, я пойму
guest 11.02.2012 16:12 # +2
SmackMyBitchUp 11.02.2012 15:10 # −4
guest 11.02.2012 16:13 # −2
roman-kashitsyn 11.02.2012 16:18 # +1
TarasB 11.02.2012 11:01 # 0
Ну и что? Но крестошколоте и этого достаточно, чтобы, радостно повизгивая, подплюснуть.
> Ты вызываешь (глобальную? sic!) функцию EditInfoPtr
Не понял, а чё, в крестах вообще бывают другие функции?
> после чего, вместо того, чтобы передать объекту эдита задачу "съешь вот этот символ да выпей чаю и изменись", ты отбираешь у него его работу
Потому что я и делаю за него всю работу, потому что встроенные средства делают эту работу не так, как я хочу.
> Знаешь, инкапсуляция - это объединение данных и методов работы с этими данными под одной крышей - классом - и такую простую вещь поддерживает даже ООП реализация в дельфи, пробуй!
Куда их объединять, у меня и так всё в конечном итоге сводится к вызову функции "сделать правку", принимающей хитрую структуру, и делающие все операции над буефром правок. Ты этого не знал, но посрать всё равно решил.
У меня баттхёрт от того, что я спорю с мудаком и 95% долбоёбов на его стороне.
defecate-plusplus 11.02.2012 11:30 # 0
прикинь, еще бывают статические и нестатические члены класса.
> потому что встроенные средства делают эту работу не так - VCL настолько убога, что невозможно отнаследоваться от эдита и переопределить лишь необходимые вещи? Это конечно весело, но врядли правда.
> хитрую структуру
вот в этой хитрой структуре (editinfo видимо) тебе и нужно было сделать метод, принимающий inserting_symbol и в нем 1) делать выделение первой строки в буфере при первом использовании (кстати почему не сразу, при создании, экономишь 16 байт на объект?) 2) не сравнивать допустимость caret.line - консистентностью объекта обязан заниматься сам объект, должно быть предельно ясно, что при любом вызове editinfo.insert_symbol каретка находится в нормальном состоянии 3) называть поля и методы так, чтобы не возникало вопросов - например, caret.symbol -> очевидно caret.pos (судя по коду ты инкрементируешь позицию, а не символ каретки), S -> lines, Larged (Увеличенный? чзх) -> я тут затрудняюсь, но походу он перерисовывает (одну?) строку на контексте - вот как раз вот этот вот метод может сам внутри получать и освобождать контекст.
Вот видишь, ты вроде бы похвалился своим кодом, а вышло не очень круто.
TarasB 11.02.2012 11:47 # 0
А что такое функция-член класса? Это тоже глобальная функция, которая первым параметром принимает указатель на объект. И в Аде, что самое интересное, допускается записывать один и тот же метод как A.DoSmth, так и DoSmth(A). Зато при объявлении метода удобно ставить, изменяется ли объект в методе - просто модификатором при первом параметре.
Так вот EditInfoPtr(H) - это, считай, функция EditInfoPtr() класса HWND, если тебе нравится. Можешь мысленно видеть вместо ней H.EditInfoPtr().
> настолько убога, что невозможно отнаследоваться от эдита
Чё, самый умный?
Молодой человек, вы когда-либо наследовались от Едита? Мне кажется, что нет, потому что иначе бы вы поняли, почему я от него не наследуюсь.
Так вот - в нём обработчик WM_CHAR вызывает отрисовку окна, причём напрямую, а не через WM_PAINT. Если перехватишь WM_PAINT, то ты сможешь изменить только отрисовку каретки.
> не сравнивать допустимость caret.line - консистентностью объекта обязан заниматься сам объект
Пилять, а у меня сам объект и занимается.
H.InsertSymbol(Code)
Объект H, метод InsertSymbol.
Всё оопешно, проблемы?
> вот в этой хитрой структуре (editinfo видимо) тебе и нужно было
Нет, структура для правки называется TCorrection. Да, и в неё я в итоге всё и перенёс. Там в теме был промежуточный вариант кода.
defecate-plusplus 11.02.2012 12:05 # 0
конечно, перемещение каретки обязаны быть согласованы с состоянием объекта, именно поэтому caret в нем обязан быть приватным полем, а перемещением должны заниматься отдельные методы (хотя бы set/forward/backward/up/down).
а так твой код выглядит будто сантехник вася из подворотни в любой момент может тебе обычным присвоением caret.line = 100500 сделать, а ты типа к этому готов
TarasB 11.02.2012 12:50 # 0
А оно и есть приватное поле этого EditInfoPtr, и обращаюсь я к нему внутри метода объекта. Снаружи к нему доступа нет, очевидно.
Хотя, конечно, запретить напрямую обратиться по указателю на это поле я не могу, ну так это везде так.
SmackMyBitchUp 11.02.2012 14:10 # 0
хакиры
TarasB 11.02.2012 11:50 # 0
guest6 20.04.2023 18:49 # −10
Ты про отсутствие модульности?
>>У меня баттхёрт от того, что я спорю с мудаком и 95% долбоёбов на его стороне.
ахаха
ropuJIJIa 20.04.2023 19:02 # −10
В gcc например, расширили Си и даже разрешили брать указатель на вложенную функцию, ради чего нахуевертили трамплины, пробивающие брешь в защите.
В Паскале есть вложенные функции, по совместительству являющиеся замыканиями, захватывающими весь локальный конь-текст, но вот указатели на них брать нельзя.
Ах, да, в новых крестах (с C++11) есть лямбды, даже с захватом по выбору, а не всего подряд.
j123123 20.04.2023 19:07 # 0
ropuJIJIa 20.04.2023 19:08 # −10
j123123 20.04.2023 19:11 # 0
guest6 20.04.2023 22:38 # −10
у меня в машине Тюринга нет никаких "функций", а написать на ней можно что угодно
guest6 20.04.2023 22:17 # −10
ropuJIJIa 20.04.2023 19:18 # −10
Конечно, лучше, когда 95% долбоёбов на твоей стороне.
eth0 12.02.2012 15:33 # 0
Как у фараонов - лежишь без внутренностей в пирамиде.
Lure Of Chaos 13.02.2012 00:43 # 0
bugmenot 13.02.2012 18:29 # 0
Lure Of Chaos 13.02.2012 22:31 # 0
guest 14.02.2012 09:55 # 0
Lure Of Chaos 14.02.2012 10:40 # 0
eth0 11.02.2012 09:38 # 0
Я бы даже был согласен писать be/en, но на каждый уровень вложенности писать по восемь символов - перебор. Более того, будь у меня свой язык, со шлюхами и свистелками, там бы блоки я выделял через [ ]. Ибо они пишутся в стандартной раскладке без шифта.
bugmenot 11.02.2012 12:05 # 0
Чой-то сразу вспоминяется Objective недокресты
gegMOPO4 12.02.2012 13:51 # +1
eth0 12.02.2012 13:58 # 0
gegMOPO4 12.02.2012 14:30 # 0
Никакой причины вводить новый вид скобок для этого в Си не было.
gegMOPO4 12.02.2012 13:45 # +8
wvxvw 11.02.2012 04:04 # +1
roman-kashitsyn 11.02.2012 12:17 # +4
TarasB 11.02.2012 12:51 # 0
SmackMyBitchUp 11.02.2012 14:10 # −1
OqpqpTOnHblu_nemyx 21.04.2023 15:30 # 0
guest6 20.04.2023 18:43 # −10
Так что же, будет Муромец, что ли, вырастать? Илья Муромец, что ли, будет вырастать из этого?
ropuJIJIa 20.04.2023 18:47 # −10
guest6 20.04.2023 18:56 # −10
К — язык программирования, оптимизированный для работы с массивами, модификаторами действий. Среди особенностей — отсутствие циклов, зависимые переменные, структура K-дерева (K-tree).
ropuJIJIa 20.04.2023 19:06 # −10