- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
В этой статье я расскажу как сделать дополнительный поток в программе.
Приступим.
1. Создаём форму
2. Кидаем на форму кнопку со вкладки Standart
3. Кидаем на форму Memo со вкладки Standart
Переходим в код и после
private
{ Private declarations }
public
{ Public declarations }
end;
Пишем следующие:
TVANSThread=class(TThread)
Private
Protected
Procedure Execute; override;
Public
Constructor Create(CreateSuspended: boolean);
end;
Далее кликаем по строчке Constructor Create(CreateSuspended: boolean); и жмём сочентание клавиш Ctrl+Shift+C
После чего должно появится следующие:
constructor TVANSThread.Create(CreateSuspended: boolean);
begin
end;
В эту процедуру вписываем следующею строчку:
inherited Create(CreateSuspended);
Прокрутим чуть ниже и увидим процедуру TVANSThread.Execute;
Она выглядит так:
procedure TVANSThread.Execute;
begin
end;
В неё вписываем следующий код:
for i:=0 to 10000 do Form1.Memo1.Lines.Add(IntToStr(i))
И не забываем о переменных:
var i:integer;
Далее кликаем по кнопке и вписываем следующий код:
TVANSThread.Create(false);
Анальный урок.
Автор - анальный учитель с сайта www.vans-soft.ru/
Stertor 04.07.2013 23:07 # −3
да, несомненно,как же без них...
guest 05.07.2013 08:50 # −5
guest 05.07.2013 08:51 # −3
bormand 04.07.2013 23:13 # +5
> В эту процедуру вписываем следующею строчку
> жмём сочентание клавиш Ctrl+Shift+C
> Прокрутим чуть ниже
Бля... это все равно, что дать обезьяне гранату, и показать как из нее дергать чеку. Вешать, потрошить и четвертовать за такие туториалы по тредам, в которых нет теории о том, что такое треды, для чего они нужны, чем они опасны и т.п...
Dummy00001 04.07.2013 23:46 # −3
если это Дельфи, то я думаю что вы зря так волнуетесь - обезянам дали гранату с уже вытянутой чекой. в VCL только главный поток имеет право доступатся к гуям - все остальные должны делать через специально анально - извратный метод (имя уже не помню) который жутко тормозит, потому что посылает сообщение главному потоку что бы тот дернул метод который хочет доступатся к гуям.
superhackkiller1997 04.07.2013 23:53 # −9
Stertor 05.07.2013 14:14 # −7
Ведите себя прилично, или я забуду, что Вы-царь.
Lure Of Chaos 05.07.2013 15:54 # −2
bormand 05.07.2013 16:00 # +2
Да, это точно. Увидев иероглиф без контекста не поймешь не только то, что он значит, но и даже то, как его прочесть... А еще все можно записать кучей способов :) Руби очень похоже на японский...
Lure Of Chaos 05.07.2013 16:04 # +1
Lure Of Chaos 05.07.2013 16:07 # 0
scriptin 06.07.2013 13:29 # 0
guest 06.07.2013 17:41 # 0
scriptin 06.07.2013 13:28 # +1
А японец, увидев в первый раз русское слово без контекста, сразу типа поймет, как его читать и что оно значит?
>А еще все можно записать кучей способов
Какой это кучей? Есть ромадзи (транслит), есть стандартная запись на кандзи+кана, иногда дополняемая фонетическими подсказками (фуригана, также известная как "руби"). Какие еще способы вы знаете?
В итоге, как мне кажется, попытка провести аналогию между японским языком и Ruby немного провалилась.
bormand 06.07.2013 13:40 # +4
А что делать японцу, который увидел где-нибудь незнакомый ему иероглиф? Искать его в словаре? Слать более опытному другу фотку иероглифа ммской? Он ведь его ни прочитать вслух не сможет, ни транслитом/каной записать... Даже вбить в гуглотранслейт он его не сможет, если у него не включен рукописный ввод.
P.S. Да, я в курсе, что в тех же газетах на редких иероглифах они пишут фонетические подсказки. Но что если автор подумал, что этот иероглиф всем известен? Или в данном тексте никто с фуриганой не парился?
inkanus-gray 06.07.2013 13:56 # +2
bormand 06.07.2013 14:03 # +2
Да давно бы уже отказались от балласта кандзи, и перешли на кану/ромадзи... Хотя оно к тому и идет, где-то я слышал, что как бы не половина взрослых японцев разучилась писать кандзи.
inkanus-gray 06.07.2013 14:13 # 0
Спасает кандзи от вымирания слепая вера в то, что так китайцам будет понятна хотя бы половина слов, хотя японский и китайский даже не родственники. Например, иероглиф 人 (похожий на лямбду) в обоих языках обозначает людей, хотя в китайском читается как «жень», а в японском как «хито».
Похожая инерция есть и в языках программирования. Все знают, что какая-нибудь конструкция для анскильных питухов или что реализована через жопу, однако сохраняют её реализацию и практику применения «для совместимости».
guest 06.07.2013 14:28 # +1
хих-хи-хи) хи-хикс.
inkanus-gray 06.07.2013 16:59 # −1
Stertor 06.07.2013 18:39 # −2
bormand 06.07.2013 14:42 # +2
Миф об обратной совместимости ;)
scriptin 06.07.2013 16:29 # 0
Не нужно было прогуливать школу. Эта проблема решается упреждающим обучением.
А если пораскинуть мозгами, то я могу назвать пару способов решения проблемы донесения неизвестного иероглифа без передачи рисунка:
1. Описать иероглиф словесно - я более чем уверен, что составные части глифов имеют общепринятые названия, вот из википедии: "К примеру, кокудзи 峠 (то:гэ, «горный перевал») состоит из знаков 山 (гора), 上 (вверх) и 下 (вниз)." - как можно видеть, знаки "вверх" и "вниз" довольно очевидны по начертанию даже для европейца.
2. Сказать, на какой знакомый иероглиф похож. Если есть хоть какой-то контекст, то этого может быть достаточно.
inkanus-gray 06.07.2013 16:38 # +1
http://www.nihongo.aikidoka.ru/kanji_key.html
... И ничего не понимаем. Ключи могут не иметь ничего общего с образованными от них иероглифами (на первый взгляд). Например, ключ № 85 в упомянутой таблице.
Это в корейской хангыли символы тупо составляются из двух-четырёх знаков, а в иероглифах исходные символы могут деформироваться.
scriptin 06.07.2013 20:27 # +1
А я на этом и не настаивал, говорилось про проблему "объяснить словами начертание неизвестного иероглифа". А это просто приятный бонус.
Википедия, к слову, утверждает, что подавляющее большинство иероглифов относят к фоно-семантическим, когда одна часть глифа указывает на смысл, а другая - на произношение, то есть даже незнакомый иероглиф можно хотя бы отчасти понять и/или прочесть.
Спасибо за ссылку.
eth0 06.07.2013 17:36 # +5
superhackkiller1997 05.07.2013 16:06 # −5
Ну растыкал он операции, которые в сишке делают 5-ю символами на 25символов - что это дало? Извращения вида @ и прочего. Зачем? Пошел по пути паскалятинки, аля: Животное не может запоминить, что '=' присваивание, а '==' - равно. А давайтека мы сделаем ':=', '===' и прочее. А потом оказывается, что ':+=' выглядит как говно и давайтека мы оставим '+=' и прощай логика.
Паскаль придумал идиот и всё, что наследует идие паскаля - говно. Обвисший жиром язык - говно.
Lure Of Chaos 05.07.2013 16:12 # −3
наоборот, если язык не позволяет писать говно - значит, он сильно ограничен.
ты вполне можешь писать и на Руби в Си-стиле (разве что библиотеки разные), практически один к одному перенося алгоритмы.
superhackkiller1997 05.07.2013 16:20 # −2
Я говорю не про семантическое говно - я говорю говно на базовые синтаксические конструкции языка. Говно на руби даже рядом не валялось с говном на сишке.
>ты вполне можешь писать и на Руби в Си-стиле (разве что библиотеки разные), практически один к одному перенося алгоритмы.
Не могу. Логики в языке нет. Синтаксис говно. Синтаксические конструкци избыточно говно. Всё тормазит. Я ограничен. У меня нет нормального конпелятор(интерпритатора) - а есть ущебное говно. Весь язык создан для того, чтобы его юзали идоты - он логичен только для идиотов. Половина libc тоже создана для идиотов( отчасти благодаря ущербным ОС типа маздайки), но у меня посиксапи, и посикслиб( вчастности линукслиб).
И да, на руби можно писать лишь в псевдоси-стиле. И этот псевдоси будет ещё более псевдо, чем в жабе.
Lure Of Chaos 05.07.2013 16:36 # −1
они там настолько базовые, что их там почти и нет. Руби позволяет писать так, как ты хочешь. там даже операторы - это методы (например, 1+2 это значит 1.+(2) )
> Синтаксис говно.
голословное кукарекание. приведи примеры
> Синтаксические конструкци избыточно говно.
тогда сишка еще избыточнее и говнистее
> Я ограничен.
наконец, признался. ты не знаешь язык, поэтому нихрена написать не можешь.
> интерпритатора
интерпрИтатора нет, но интерпретатор языка справляется со своей задачей
> Весь язык создан для того, чтобы его юзали идоты - он логичен только для идиотов.
толсто-зелено, и неаргументировано.
> И да, на руби можно писать лишь в псевдоси-стиле.
конечно, для этого есть си. в стиле си на руби, с его мощью, пишут только питухи вроде тебя.
ты угадал только в одном
> тормазит
только потому, что Руби - интерпретируемый язык, он проигрывает компилируемым в нативный код языкам.
но поверь ты мне, если у тебя все тормАзит - то, скорее всего, Руби тут ни причем, а это ты открыл в ИЕ 200 вкладок.
superhackkiller1997 05.07.2013 17:04 # −3
Методы - говно. Нету в программировании никаких методов - есть add r/m r/m. На более низком тоже add. Но только в питушарской руби есть методы на интех.
Ну, давай мне запили strchrnull() на руби, я поржу.
>интерпрИтатора нет, но интерпретатор языка справляется со своей задачей
Ага, тормазит так, как питушону и питушарскому жабаскрипту и не снилось.
>толсто-зелено, и неаргументировано.
Напиши на нём что-то сложно и производительное. Это и есть задача не для идиота.
>только потому, что Руби - интерпретируемый язык, он проигрывает компилируемым в нативный код языкам.
Да хоть конпелятор для него запили - он проиграет в говно. Он проигрывает интерпритируемым ЯП в хлам. Вон плюсы тоже конпелируемые, но сливают сишке в хлам. Любимые отговорки питухов.
Возмём жабаскрипт - тормазит как говно. Меняем стиль написания кода с питушарского на сишный - опа уже не тормазит, ибо си-стайл поддаётся оптимизации, а питухстайл нет. Ты хоть 100конпеляторов напиши для сопливой типизации и кастов струки в инт на каждом шагу - будет тормазить как говно.
Lure Of Chaos 05.07.2013 18:01 # −1
superhackkiller1997 05.07.2013 18:10 # −8
Говоришь питушачьими шаблонами, аля "не компилированная - тормазит". Да сделайт ы сишку интерпритируемой - тормазить не будет, ибо это сишка. А все твои интерпритируемые языки давно компилируемые, но тормазят как говно.
guest 06.07.2013 14:48 # −1
Фу, блядь, фу, нахуй! Специально для таких уебков придумали термин "питоничненько", чтобы их стебать.
TarasB 05.07.2013 16:25 # +2
Есть ещё опечатки, не распознаваемые компилятором. Правда питушок, не писавший ничего больше 50 строк, не знает, что это такое и каковы последствия.
superhackkiller1997 05.07.2013 16:37 # −3
Ошибки возможно только в условиях, а пацаны отделяют условия дру от друга. Отделяя условия - пацан видит свои словия и шанс обишки минимален.
Так же, пацан перебирает в условиях в основном указатели, а писать ptr == ptr - ущербанизм, который никто никогда не пишет.
Я даже не могу придумать случаев, где в реальном коде( не коде анскильных питухов типа тебя, которые не знают даже синтаксиса своего ЯП - я уж не говорю о семантике и глубинных особенностях конпелятора/платформы и прочего) можно написать = вместо ==.
В 95% случаев сравненеи едёт с константой, а юзать дальше значение, вернувшие выражение (a = 10) не имеет смысла, ибо оно возвращает константу и всегда истинно(кроме нуля). Поэтому конпелятор это везде увидит и напишет тебе - смысла в твоём выражении нет - ты питух.
Остальные 5% случаев питухи не юзают.
TarasB 05.07.2013 17:14 # 0
Нихуя, питух, ГЦЦ не распознает, потому что в питушином сишком синтаксисе, придуманном долбоёбами (но ты даже им и в подмётки не годишься) есть много валидных конструкций, отличающихся одной малозаметной опечаткой, но имеющих совсем разный смысл.
> В 95% случаев сравненеи едёт с константой
Я смотрю, у тебя богатый опыт, много проектов зашипил?
superhackkiller1997 05.07.2013 18:07 # −3
Питух кукарекает, а примеров привести не может - удиви меня питух, примерами своими.
>Я смотрю, у тебя богатый опыт, много проектов зашипил?
Поэкты питухов типа тебя - мне не интересны, ибо ты животное, которое писать нормально не может из-за тотальной анскильности и недоразвитости.
TarasB 05.07.2013 18:58 # 0
Ты сам же сказал про if(a=b), только твоя отмаза что "это ненужно" выглядит жалко, больше похоже на признание слива.
superhackkiller1997 05.07.2013 20:40 # −2
main.c:33:2: предупреждение: присваивание, используемое как логическое выражение, рекомендуется [-Wparentheses]
if(a = b)
^
Дальше?
TarasB 05.07.2013 20:48 # +3
А разве у тебя код от них не покрывается сплошняком жёлтым?
superhackkiller1997 05.07.2013 20:51 # −3
Так же, я пишу код валидный для гнуси, с чего он должен давать ворнинги? Мой код никогда ворнингов не даёт.
guest 06.07.2013 15:56 # −2
guest 06.07.2013 16:18 # +1
bormand 06.07.2013 16:25 # −1
guest 06.07.2013 16:27 # −1
Stertor 06.07.2013 18:39 # −2
Lure Of Chaos 05.07.2013 15:58 # 0
ладно уж питон - я мне тоже не нравится оформление блоков табуляцией.
superhackkiller1997 05.07.2013 16:09 # −4
Питон хоть и паскалятинка - но там нет бегинов/ендов больше, чем самого кода. Вот возьми любую паскаль байду - почитай количесво символов в begin/end/function и прочих идентификаторов - т.е. того, что в сишке записывается одним символом - этих символом будет больше, чем занимает сам код программы.
Lure Of Chaos 05.07.2013 16:16 # 0
пиздеж и провокация, от Си так только похожий синтаксис и конструкции (чтобы сишники не охуевали)
> Питон хоть и паскалятинка
пиздит и не краснеет. уж что-что, а питон создавался именно как легкочитаемый язык с минимумом ключевых слов и всяких скобочек. и именно потому символов там гораздо меньше, чем в аналогичном Си-коде.
superhackkiller1997 05.07.2013 16:24 # −2
Язык этои есть синтаксис и синтаксические конструкци, а не либц, анскильная лалка.
>пиздит и не краснеет. уж что-что, а питон создавался именно как легкочитаемый язык с минимумом ключевых слов и всяких скобочек. и именно потому символов там гораздо меньше, чем в аналогичном Си-коде.
Мне похрен как он там создавался - его синтаксис упращённая паскалятинка. Я и написал, что хотя это и паскалятинка - там нет миллионов избыточных символов, зачемт ы вторишь мне?
Нет, там символов не меньше. Такое страшное говно, месиво и кишки. Ну выпили в питоне скобочки из всяких выражений - что это дало? Кон стал копактней, красивей? Нет - он стал неразборчивой writeonly портянкой.
Lure Of Chaos 05.07.2013 16:40 # −2
там нет libc.so
> что хотя это и паскалятинка
> там нет миллионов избыточных символов
я писал именно про избыточность бейсиков и паскалей.
> Кон стал копактней, красивей?
конечно, они не отвлекают от сути.
superhackkiller1997 05.07.2013 17:07 # −3
Ты тупое животное - там нет либц, но есть либруби, питух. И для тебя слив-питушка язык и есть эта либруби.
>я писал именно про избыточность бейсиков и паскалей.
Ты начал кукарекать, что питон типа не избыточный, ноя назвал его паскалятинкой, которая избыточна.
>конечно, они не отвлекают от сути.
Реально? Открой любой код на питоне - лютое говно. На миллиард строк нитко даже не подумает на нём что-то писать, на сотюно тысяч тоже, даже на десяток уже ссыкатоно.
guest 05.07.2013 21:56 # +1
> Нет - он стал неразборчивой writeonly портянкой.
Да ты ебанулся, байтодрочер. Иди такты считай, сука, готов спорить, что именно твое байтоебство и есть writeonly.
1024-- 06.07.2013 10:38 # +2
Вот-вот. Везде будет или скобочка, или богомерзкий end, а в питоне - только наблюдательность читателя.
Не дай Бог увидеть код с копипастами, где пробел чередуется с табом. В случае сишки это можно исправить хоть в блокноте, а тут - ад.
Vindicar 06.07.2013 11:43 # 0
Ибо нехуй.
1024-- 06.07.2013 12:02 # 0
Но во втором-то можно новый уровень начать с нового типа отступов. (см http://ideone.com/79Rpn0)
guest 06.07.2013 14:51 # 0
Stertor 06.07.2013 18:47 # −2
anonimb84a2f6fd141 07.07.2013 01:00 # −4
Stertor 07.07.2013 10:07 # −3
TarasB 05.07.2013 16:27 # 0
Лол, именно в этом и есть говно, в том, что какого-то хуя они унаследовали некоторые самые уёбищные моменты синтаксиса.
Впрочем, красноглазому питушку, мнящему себя хацкером, всегда кажется, что всё, что от сишки - то хорошо, ведь это же сишка фап фап фап.
superhackkiller1997 05.07.2013 16:40 # −5
Меня не интересует мнение животного, который не осилил свой ЯП.
TarasB 05.07.2013 17:16 # 0
Уёбищный switch
Уёбищное struct type varibale;
Уёбищный unsigned
Уёбищное объявление указателей на функции, как будто нарочно пытались жопу на голову натянуть.
Даже объявление массивов уёбищное.
superhackkiller1997 05.07.2013 18:06 # −6
Лучше, чем в питухпаскалятинки.
>Уёбищное struct type varibale;
Питух не осилил тайпдеф? Пишут структуры как ты только питухи типа тебя. typedef struct {} type_t; type_t var;
>Уёбищный unsigned
Чем? Питух не осилил stdint? Иди проспись, питушара. uintsize_t.
>Уёбищное объявление указателей на функции, как будто нарочно пытались жопу на голову натянуть.
Просты ты питушара анскильная - вот тебе и не понятно. Понятней и занимает места меньше, чем в питушачьем паскале.
Есть typeof(f) f_ptr;
>Даже объявление массивов уёбищное.
int b[] - куда ещё проще? Давай покажи поскалячье говно - я поржу. И да, пацаны ны юзают массивы, питух.
inkanus-gray 05.07.2013 18:09 # 0
superhackkiller1997 05.07.2013 18:30 # −4
inkanus-gray 05.07.2013 18:35 # 0
superhackkiller1997 05.07.2013 19:18 # −2
Что потвоему лучше - написать 4 функции по 30строк, а потом массив указателей, либо писать свич на 200строк?
И да, для этого надо ввигачить в сишку лямбды, чтобы было ещё красивей. Причем не лямбды из ваших питух ООПговн, а нормальные.
TarasB 05.07.2013 19:00 # 0
Это кукареканье какое-то, тут даже отвечать на это ничего не надо.
guest 05.07.2013 21:57 # 0
TarasB 05.07.2013 19:01 # +3
Про "понятнее" - кукарекать не надо, ладно? Правило улитки, вся хуйня, ага...
Меньше места занимает - да, школьники любят на это дрочить.
> int b[] - куда ещё проще?
Да хотя бы int[] b. А то какого хуя название переменной внутри объявления типа?
superhackkiller1997 05.07.2013 19:22 # −3
>Да хотя бы int[] b. А то какого хуя название переменной внутри объявления типа?
У тебя инт есть тип. Тип всегда один. int[10] b: Это типа новый тип 10интов, типа которого есть б? Нет питух int b[10] - б стостит из 10 интов. Ну и да, int a, b[2], c[100];.
Ты питух несёшь полное говно, лижбы оправдать свою анскильность - придумываешь тысячи говно, игнорируешь 80% моих кооментов. Не отвечаешь на всё. Глупая сливашка-букашка.
TarasB 05.07.2013 20:49 # 0
А int b[10] - это хуйня.
> игнорируешь 80% моих кооментов
На белый шум-то нахера реагировать?
superhackkiller1997 05.07.2013 20:52 # −6
Ладно, приходи как поумнеешь. Иди к своим дружкам, которыет оже говно под ведроид написали - там все профи, а тут не кукарекай. Анскильный гений одного говна ненужного.
Lure Of Chaos 05.07.2013 15:59 # 0
superhackkiller1997 05.07.2013 16:14 # −3
Чем надо было думать, чтобы создать это? Это как сделать молоток, который весит 50килограм - боёк которого решето. Возможно гвоздь со шляпкой диаметром 3-4сантиметра ты забьёшь - но остальные ты будешь забивать через жопу.
Сишка же - это набор молоточков - от ювелирных - до тысячитонных. А истинная сишка - вообще материал, из которого можно создать молоток любого вида.
Lure Of Chaos 05.07.2013 16:19 # −2
inkanus-gray 05.07.2013 16:20 # +1
superhackkiller1997 05.07.2013 16:29 # −6
Lure Of Chaos 05.07.2013 16:37 # −1
DBdev 05.07.2013 18:56 # 0
Язык для домохозяек же
superhackkiller1997 05.07.2013 16:27 # −4
Если человек не отринул паскаль с первого взгляда на него - он уже с 99% не будет программистом никогда - максимым заедушной макакой. Программист-дворник - он метёт, бабло гребён - но нихране не понимает что он и как метёт.
Lure Of Chaos 05.07.2013 16:43 # −3
но господа преподаватели считают иначе, поэтому мы имеем "99%" "заедушных макак"
Vindicar 08.07.2013 12:00 # 0
TarasB 05.07.2013 16:29 # +1
лолшто
> Чтобы тебе написать функцию - тебе надо написать в 30раз больше символов, чем на сишке
лолшто
По статистике сишка самая многословная. Только статистика составлялась не для твоего питушиного говна, а для нормальных проектов.
> Сишка же - это набор молоточков - от ювелирных - до тысячитонных. А истинная сишка - вообще материал, из которого можно создать молоток любого вида.
Я бы понял, если бы ты сказал это про Лисп, но про сишку... Ты полный долбоёб.
superhackkiller1997 05.07.2013 16:55 # −3
Выкати мне код с перфомансом сишки на паскале. Потом выкати мне код, который будет работать без рантайма. В том же ОС. Какой код будет работать в кернелспейсе твоей ОС? Паскаль не обладает возможностями для написания быстрого кода - неспособен на быструю обработку информации вообще - это основа сегодняшнего кода. Так же он не способен на низкоуровневое общение с хардварной частью - неспособен работать без рантайма - тотальное говно.
>лолшто
Аналог на паскале, питух.
>Только статистика составлялась не для твоего питушиного говна, а для нормальных проектов.
Состовлялось для говна, которое писали питухи типа тебя, которые нихрена не осилили сишку.
>Я бы понял, если бы ты сказал это про Лисп, но про сишку... Ты полный долбоёб.
Лисп написан на сишке, питух. Ядро лиспа на лиспе - тоже написанно на сишке. А так же лисп неможет нихрена - производительный код на лиспе где? Про лисп машины не кукарекай. ОС на лиспе где? Нету. Не породию на ОС на бинарном лиспе, а реальную.
memcpy на лиспе мне пожалуйста дайте, как опировать из кернел в юзерспейс? Указатели мне запили. А где симды, нити? Поисксапи? Как прочитать файл? Как заммапить файл? Как сохранить контекст?
TarasB 05.07.2013 17:22 # +3
На тебе софтрендер, тут где-то в теме:
http://www.gamedev.ru/code/forum/?id=138759
упирается в память во внутреннем цикле, сишка бессильна
> Потом выкати мне код, который будет работать без рантайма.
Какого рантайма? Борландовского? Лол, у меня всё работает без рантайма, вот жеж ты питух, нихуя не знаешь.
> Аналог на паскале, питух.
Ну? А у тебя питушня в условии.
Хотя да, ++ в условии, когда оно типо и проверяет, и выполняет - ведь это же смотрится так круто, так по-хакерски, тупым курочкам пубертатного периода почему-то нравится тот гнилостный питушний запах, который издаёт подобный код.
> Состовлялось для говна, которое писали питухи типа тебя, которые нихрена не осилили сишку.
Так ты ж ваще нихуя не написал полезного, откуда тебе знать статистику-то?
> Лисп написан на сишке, питух.
И чё.
> memcpy на лиспе
Нахуй тебе memcpy, ты питух анскильный, если тебе нужен memcpy.
inkanus-gray 05.07.2013 17:45 # +2
superhackkiller1997 05.07.2013 18:02 # −3
inkanus-gray 05.07.2013 18:10 # 0
Почему разные типы?
superhackkiller1997 05.07.2013 18:21 # −3
Для данной функции это не актуально, но так завещали деды. Ты можешь передалть её тело под юникод - и будет работать. Для этого её определение так и запилил в либц.
inkanus-gray 05.07.2013 18:50 # +1
Для юникода в сишке есть wchar_t* wcschr (const wchar_t*, wchar_t), а сигнатура strchr — говно, потому что основана на отживших своё традициях и легендах.
superhackkiller1997 05.07.2013 19:00 # −5
Животное, ты понимаешь, что такое utf8? В этом ваша проблемы - вы питухи нихрена не понимаете, и паскаль ваш писали животные, которые так же как и вы ничего не понимаете.
Мой char *, int - может юзатся для utf8, а твоя питушня будет давать сотни оверхедов в зависимости от типа утф"а - запилена для маздайской ереси.
Я буду писать 75гигов текста, а ты питух 400. Конечно - это же так круто, когда питух несёт херню и нихрена не понимает.
>Для юникода в сишке есть wchar_t* wcschr (const wchar_t*, wchar_t), а сигнатура strchr — говно, потому что основана на отживших своё традициях и легендах.
Не для юникода, а для говна. Никто в здравом уме этим говном не пользуется. Это маздайская ересь.
inkanus-gray 05.07.2013 19:13 # −1
superhackkiller1997 05.07.2013 19:26 # −2
unsigned char* _mbsset (unsigned char*, unsigned int); Ты это видишь? Такая же сигнатура, что и обычных стрингов - потому, что придумали это не питухи типа тебя, и которые придумали паскаль, а вменяемые человеки.
char * f(char * p, int c); - сигнатура подходит для всех видов НОРМАЛЬНОЙ кодировки. Для питушни же надо что-то менять.
inkanus-gray 05.07.2013 19:33 # −1
Почему strchr("Trolololololo", 'xyzl') возвращает lololololo?
guest 05.07.2013 19:44 # 0
http://ideone.com/KsuBoF
Result: runtime error.
inkanus-gray 05.07.2013 19:50 # 0
return 0;
Теперь нормально?
superhackkiller1997 05.07.2013 19:53 # −3
Патамучто 'xyzl' - 32бита, последние из которые x, а начальные l.
inkanus-gray 05.07.2013 19:57 # 0
А я отвечу, какого: в синтаксисе K&R все необъявленные типы считались интом. И для тех питухов, которые забывают #include, в сигнатурах стандартных функций использовали инты там, где нужно и где не нужно, чтобы программа хоть как-то слинковалась и запустилась.
superhackkiller1997 05.07.2013 20:37 # −2
Патамучто ты питух написал много символов - а надо 1. А теперь вставь туда утф8 символ и смени тело на твой mb - получишь профит. Сигнатура не поменялась - а всё работает. Оперхеда нет.
А питушки типа тебя будут страдать фигнёй.
Питух - все переменные итак инты, ибо это регистры - а регистры на твоём питух i386 интовые.
inkanus-gray 05.07.2013 21:07 # −2
Инт здесь только потому, что в старой сишке он был по умолчанию, а прототипы функций не требовались. В C++ наконец-то додумались требовать наличие прототипа.
Поскольку в сишечке типизация нестрогая, действительно при наличии выравнивания все переменные инты (кроме тех, что по размеру больше инта, и кроме чисел с плавающей запятой).
Однако, что делать, если в компиляторе по умолчанию char беззнаковый, а int знаковый?
superhackkiller1997 05.07.2013 21:16 # −1
Кроме утф8 нет других кодировок - всё говно.
>Инт здесь только потому, что в старой сишке он был по умолчанию, а прототипы функций не требовались. В C++ наконец-то додумались требовать наличие прототипа.
Ну замени на чар - вызови это для инта. Что изменится? Ничего. Его там оставили как идеальную сигнатуру.
>Поскольку в сишечке типизация нестрогая, действительно при наличии выравнивания все переменные инты (кроме тех, что по размеру больше инта, и кроме чисел с плавающей запятой).
Выравнивание всегда есть - на нормальной архитектуре всё лежит в регистрах, и все вычисления делаются с регистрами и в регистры.
>Однако, что делать, если в компиляторе по умолчанию char беззнаковый, а int знаковый?
Какая разница какой он, глупышка. За знак в них отвечают совершенно разные биты. Конпелятору похрен какие ты там знаки юзаешь, как и процессору.
inkanus-gray 05.07.2013 21:24 # −2
Вот из-за такого «какая разница» была написана куча программ, в которых лимиты вдвое меньше ожидаемых.
superhackkiller1997 05.07.2013 22:01 # −3
Она была написана лишь потому, что её писали питухи вроде тебя.
superhackkiller1997 05.07.2013 17:51 # −4
Паскалевского. Любого. И да, и за кучей твой код сам следит? И дллки сам подкружает - вот жешь молодец.
>^ <> #0
Какие конструкци, я даже тебе фору дал и написал != 0, хотя его вообще можно не писать. (Result^ <> #0) == (*str) - как крута, такая немногословность. Что мы получем - в 10раз тормазнее, в 10раз больше символов.
>Так ты ж ваще нихуя не написал полезного, откуда тебе знать статистику-то?
Бомже2дигрулька уровня лабы в недовузе под ведроид - это жет полезно.
>И чё.
И то, что я могу на сишке написать всё, что угондо - включая свой лисп. Ты не можешь.
>Нахуй тебе memcpy, ты питух анскильный, если тебе нужен memcpy.
Я же написал - как ты будешь из кернел в юзерспейс копировать? И да, потомучто в лиспе нет мемкопи - он ниначто, кроме баловства не способен.
inkanus-gray 05.07.2013 18:11 # 0
Где доказательства тормознутости?
superhackkiller1997 05.07.2013 18:14 # −2
Ну вот давай, иди в соседний тред - собери тот код, напиши его на паскале - сравни перфоманс.
inkanus-gray 05.07.2013 18:28 # −1
superhackkiller1997 05.07.2013 18:33 # −2
inkanus-gray 05.07.2013 18:37 # −1
1. Что делать с точками, находящимися на границе и по углам? Оставить, как есть, или считать среднее для 3-4 соседей?
2. Проход у нас один или несколько?
superhackkiller1997 05.07.2013 18:56 # −2
Проходов мильярд.
kipar 05.07.2013 19:34 # 0
А тут и считать нечего, после мильярда проходов все элементы будут = 0.
superhackkiller1997 05.07.2013 19:45 # −2
TarasB 05.07.2013 19:55 # 0
TarasB 05.07.2013 19:54 # +1
Где тут 10 раз, питух? В моём коде только раскрыты кое-какиесишные умолчания, которые часто осложняют жизнь.
superhackkiller1997 05.07.2013 20:34 # −2
Кому усложнаяют - питуху типа тебя да, мне нет.
TarasB 05.07.2013 20:50 # −1
inkanus-gray 05.07.2013 17:34 # +1
Пишешь свой SYSTEM.PAS. Все функции реализовывать не обязательно, можно реализовать только сокращённый комплект хоть на асме, хоть на чём угодно, что в объектные файлы компилируется.
В своё время для 16-битного TP 7.0 энтузиасты писали функцию умножения 32-битных чисел через 32-битные регистры (ага, код с префиксом размера). Перфоманс на 386+ повышался.
superhackkiller1997 05.07.2013 17:55 # −4
Это всё говно, аля напиши либц. Паскаль избыточно говно и если я в сишке могу тупо не юзать либц - нам паскале без юза либпаскаль - ты не напишешь нихрена.
Если на сишке я могу написать себе мемкопи, то на паскале нихрена, либо она будет тормазить как говно. Именно поэтому никто для паскаля рантайм на паскале и не пишет - всё это написанно на си и дёргает либц.
В делфятне есть встроенный ассемблер, но это говно, а не ассемблер, причём говно времён динозавров.
Этим и отличается нормальный язык от говна - для нормального языка рантайм для него написан на нём же. На каких языках рантайм написан на них же? Сишка и наполовину для плюсов - всё. Остальные ЯП - говно.
inkanus-gray 05.07.2013 18:27 # 0
Но с другой стороны, если в сишке операция со сложными объектами, откуда появится код? Да, его вставит сишный компилятор из себя. А как он там реализован? В виде готового массива машинных инструкций или на ассемблере, под каждую платформу индивидуально.
Неужели Царь никогда не видел исходников гцц?
А в известных реализациях Object Pascal всю эту питушатину из компилятора перенесли в библиотеку, в модуль System. Не всё ли равно, где её держать, в рантайме или в компиляторе?
superhackkiller1997 05.07.2013 18:38 # −4
В сишке нет никаких сложных объектов - в том и суть сишки. Сложнее фора там ничего нет.
>Неужели Царь никогда не видел исходников гцц?
Лучше бы не видел.
>А в известных реализациях Object Pascal всю эту питушатину из компилятора перенесли в библиотеку, в модуль System. Не всё ли равно, где её держать, в рантайме или в компиляторе?
Из сишки можно просто писать код, который будет зависеть только сам от себя. Ты контроллируешь всё. В паскале там не прокатит - в этом и пичаль, ибо всё через жопу.
inkanus-gray 05.07.2013 18:43 # 0
А между Си и потомками Паскаля особой разницы в контроле нет. Директивы и простые операции есть и там, и там.
superhackkiller1997 05.07.2013 18:50 # −3
Вон питух написал уже strchrnull, потратив в 5раз больше символов. Которая тормазит как говно, я имею фичи - могу заменить char * на __v16qi *. Где это в тухлой паскалятинки? Где? Нихрена нет - всё говно.
Нормальных инклюдов нет, нормальных операций нет - нормальных фич нет. Где мой свич, где мои нормальные указатели? Где всё? Нихрена нет.
inkanus-gray 05.07.2013 19:06 # +1
superhackkiller1997 05.07.2013 19:39 # −3
Ну придумай что-нибудь посложнее. Добавь туда ссешку, какие-нибудь вызовы - твйо дельфи зафейлится.
Я могу написать в 5, 10, 20 раз быстрее - ты нет. Это твой предел.
inkanus-gray 05.07.2013 19:46 # +1
superhackkiller1997 05.07.2013 20:28 # −3
Гцц тут тупанул, но и функцию эту так пишут только питухи - он не знает куда оптимизировать - каждый переход, оба сразу. Но в гцц есть фича для этого
И да, питух - приведённый тобой код аналогичен твоему.
inkanus-gray 05.07.2013 21:13 # 0
В остальном же не вижу улучшений: зачем-то два разыменования указателя (%rax), когда можно было разыменовать один раз.
> Гцц тут тупанул
> Но в гцц есть фича для этого
Так покажите эту фичу и как ей пользоваться.
superhackkiller1997 05.07.2013 22:12 # −4
Гцц оптимизировал оба перехода - .l5 будет работать быстрее без мува. .l3 он объединил с мувом для того, чтобы самая функция на нулях выполнялась быстрее. Поэтому пацаны никогда в функциях не реализуют проверку на пустые строки.
http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html __builtin_expect()
Это надо изначально писать нормально, а не как питухи - тогда и проблем не будет.
inkanus-gray 06.07.2013 00:08 # −1
bormand 06.07.2013 00:17 # +2
Hint: цикл начинается с .L3.
inkanus-gray 06.07.2013 00:21 # 0
bormand 06.07.2013 00:25 # +1
Тогда уж просто войти в цикл не на L3, а со второй строчки после L5, где movsbl.
inkanus-gray 06.07.2013 00:43 # 0
Возникла другая мысль. А не использовать ли нам пиписюнчик LODSB? Звучит заманчиво: загрузка и инкремент одной инструкцией. Правда, вместо %rax придётся использовать %rsi.
inkanus-gray 06.07.2013 10:38 # 0
Вывод: микрооптимизация — трата времени, поскольку в очередной реализации процессора её могут поломать.
bormand 06.07.2013 12:16 # +2
Возможно из-за декодера команд. Если мне не изменяет память, он загружает блоки по 16 байт, и за 1 такт может раскодировать не более 6 команд. И если набивать команды слишком плотно, на всю катушку юзая inc/loop/lodsb и прочую мелкую херню - упадет пропускная способность декодера.
TarasB 05.07.2013 19:55 # +3
Ты не умеешь считать.
TarasB 05.07.2013 18:39 # +1
Мне не рвёт.
guest 05.07.2013 17:06 # −1
Лолшто? Паскаль многословней сишки хотя бы из-за всяких begin, end, procedure, function и прочего многословного говна, лол.
> Только статистика составлялась не для твоего питушиного говна, а для нормальных проектов.
Давай пруфы на свою статистику.
superhackkiller1997 05.07.2013 17:10 # −5
Суть в том, чтое сли сложить все эти "begin, end, procedure, function и прочегее" в одну строку, то эта строка будет длинне самого кода. В этом и пичаль.
Какая статистика - этот питушок даже что такое сишка не знат. Он знает сишку, как часть плюсов - минимальные примитивные конструкция и пару функций из либц. На ней он ничего не писал, не видел кода на ней написанного, не видел конпеляторов. Нихрена не знает и кукарекает.
TarasB 05.07.2013 17:23 # +4
Ебать, этот питух, не писавший нихуя полезного, меня учит.
inkanus-gray 05.07.2013 17:37 # −1
superhackkiller1997 05.07.2013 17:59 # −3
Твои аналогии говно. Имена - должны быть осмысленные, но заменять {} на бегин и енд - расточительство, как:
pchar strchrnullll(pchar str, char c) {}
заменять на:
function strshrnullll(str:PChar; c:char): PChar; begin end;
Говно. Имена те же самый - места в 2раза больше.
TarasB 05.07.2013 17:23 # +1
Статистика бралась по строкам кода. Длина ключевых слов это вообще хуйня, не имеющая никакого значения.
Сишка сливала именно из-за низкоуровневости и необходимости на каждый чих делать закат солнца руками.
guest 05.07.2013 17:35 # 0
Это и есть та самая многословность, и, самое главное, читабельность кода.
> Сишка сливала именно из-за низкоуровневости и необходимости на каждый чих делать закат солнца руками.
Это да, собственно, для задачи нужно выбирать адекватные инструменты. Сишка хороша для ядер ОС, компиляторов, задач, требующих производительности.
Паскаль не может ни в них, не в высокоуровневые задачи.
guest 05.07.2013 17:37 # −1
Нечитабельность, в случае паскаля. Фикс.
>ни в них, ни в
Еще фикс.
TarasB 05.07.2013 17:41 # +1
Скажешь, что сишка читабельнее Паскаля? Тогда ты тупой фанатик, тут даже аргументировать бесполезно.
guest 05.07.2013 17:50 # +1
inkanus-gray 05.07.2013 18:14 # −1
[](){} — это что? Это мозгу легко понять?
superhackkiller1997 05.07.2013 18:23 # −3
Скобочки запили для захвата, ибо можно было lambda(){}, но не кошерно.
Особо лучше ты не придумаешь.
guest 05.07.2013 18:26 # +1
TarasB 05.07.2013 18:17 # −1
Фанатики такие фанатики.
guest 05.07.2013 18:27 # +1
TarasB 05.07.2013 18:39 # +1
guest 05.07.2013 18:44 # +1
>Читабельнее для кого? Для англоговорящей домохозяйки?
Ты не согласен с тем, что мозгу легче парсить формы, чем слова? Может быть ты вообще без подсветки кодишь?
TarasB 05.07.2013 18:46 # −1
guest 05.07.2013 18:51 # 0
TarasB 05.07.2013 18:54 # +2
guest 05.07.2013 18:58 # +2
Слова -- это названия переменных и функций, { и } парсятся быстрее их и мозг их не пытается интерпретировать как названия переменных и функций. То же самое с операторами. Не, ну а чо, почему не писать 2 addition 2 вместо 2+2, мозг же на слова заточен.
TarasB 05.07.2013 19:11 # +1
Мы говорим о читаемости, а ты уходишь от темы, слив.
То, что компилятор не понимает тебя в случае опечатки - это плюс.
> Не, ну а чо, почему не писать 2 addition 2 вместо 2+2, мозг же на слова заточен.
Потому что арифметику в первом классе учили все и это обозначение всем понятно, в отличие от (+ 2 2)
guest 05.07.2013 19:22 # 0
А вас программированию и английскому не учили? С пеленок это все знали? Что значит begin, end, procude, var?
TarasB 05.07.2013 19:56 # +2
guest 05.07.2013 19:59 # 0
>это обозначение всем понятно
Мне не надо, чтоб было _всем_ понятно. Мне надо, чтобы заглянув в исходник, я не сломал глаза об procudure var integer begin if then else end end.
TarasB 05.07.2013 20:13 # 0
guest 05.07.2013 21:25 # 0
inkanus-gray 05.07.2013 21:32 # 0
typedef int (*func)(int);
Смотришь и думаешь, чем первая пара скобок отличается от второй.
Vindicar 05.07.2013 23:34 # +1
Вырви себе глаза, тогда и ломать не придется. Развели спор на пустом месте...
inkanus-gray 05.07.2013 19:08 # +2
А в Си круглые скобки могут обозначать вообще что угодно. Приходится гадать, что в данном случае какие скобки обозначают.
superhackkiller1997 05.07.2013 19:42 # −1
В русском языке запятая тоже может означать вообще что угодно. Точка тоже.
Тебе, анскильному питуху, надо гадать. Скобки в сишке значат только одно - функция, если они преставленны в идентификатору. В остальных случаях - они значат то, что значат в матвырениях - а именно разделение порядков операторов.
Если тебе это не ясно - ты животное.
Stertor 06.07.2013 08:28 # −2
superhackkiller1997 05.07.2013 18:55 # −2
Тарас запята ты тире питух точека Понял вопросительныйзнак. Да, да, это лучше, чем то, что есть.
TarasB 05.07.2013 19:02 # 0
Нет, не считаю. Потому что мозг успешно натаскан на небольшое вкрапление знаков препинания в тексте.
guest 05.07.2013 19:08 # +1
superhackkiller1997 05.07.2013 19:43 # −3
TarasB 05.07.2013 19:57 # +1
guest 05.07.2013 20:10 # 0
TarasB 05.07.2013 20:13 # +3
superhackkiller1997 05.07.2013 20:29 # −2
Закрывающая скобка выполняет ролько точки и перевода строки.
TarasB 05.07.2013 17:39 # +1
Именно.
> Сишка хороша для ядер ОС, компиляторов, задач, требующих производительности.
Именно, и для чего-то более большого сишка уже начинает мешать.
> Паскаль не может ни в них, не в высокоуровневые задачи.
Для байтоёбства в Паскале есть все нужные инструменты и возможности.
Что касается высокого уровня, то уровня лиспа тут и близко нет, но шаблоны, перегрузка операторов, автодеструкторы, замыкания в нём есть, хотя и весьма неудобны.
guest 05.07.2013 17:45 # −1
Почему я не вижу ни одного используемого ядра ОС/компилятора/чего-то еще значительного на нем? Видимо, потому что байтоебство на нем не удобно и просто прикручено сбоку.
> Что касается высокого уровня, то уровня лиспа тут и близко нет, но шаблоны, перегрузка операторов, автодеструкторы, замыкания в нём есть, хотя и весьма неудобны.
Где есть? В standart pascal я такого не вижу. Может быть ты про какие-нибудь делфи?
TarasB 05.07.2013 18:21 # +2
Потому что инфраструктура важнее любых фич языка.
> В standart pascal я такого не вижу.
Давай обсудим, чего нет в C79 тогда что ли.
guest 05.07.2013 18:31 # −1
Фичи? В паскале? Не смеши. Между прочим, я был прав, там даже union'ы без извращений нельзя сделать.
>Давай обсудим, чего нет в C79 тогда что ли.
Не путай версии с диалектами. Про какой диалект ты говорил?
TarasB 05.07.2013 18:40 # +1
Это в сишке union извращённые, а в Паскале самые обычные.
> Не путай версии с диалектами. Про какой диалект ты говорил?
Про самый современный.
guest 05.07.2013 18:46 # −1
Ололо. Может покажешь, как в ваших неизвращенных юнионах сделать разбиение long на lopart + hipart?
> Про самый современный.
Дай ссылку на стандарт. Или хотя бы на компилятор, который его поддерживает.
TarasB 05.07.2013 19:03 # +1
Открой windows.pas, посмотри что ли.
Может ты расскажешь, как это сделать в сишке без хуйни с промежуточной анонимной структурой?
> Или хотя бы на компилятор, который его поддерживает.
Дельфи-2009
guest 05.07.2013 19:08 # −1
Не нашел такого файла у себя.
>Дельфи-2009
Т.е. Delphi == pascal? Все ясно, лол.
TarasB 05.07.2013 19:13 # +1
Погугли.
> Т.е. Delphi == pascal? Все ясно, лол.
Это достаточно современный диалект Паскаля, что не так?
Слышь, сливалка, ответь про то, как в сишке делать юнионы без промежуточных говноструктур.
guest 05.07.2013 19:24 # 0
> Погугли.
Windows.pas is a Pascal/Delphi unit which contains the Windows-specific API declarations. It is the Pascal equivalent to windows.h, used in C.
Что сказать-то хотел?
TarasB 05.07.2013 19:58 # +1
Показать, как union в Дельфи пишутся.
guest 05.07.2013 20:05 # −1
TarasB 05.07.2013 20:12 # +1
guest 05.07.2013 19:12 # −1
Вычислять каждый раз с & 0x...? Заебешься же.
TarasB 05.07.2013 19:58 # +1
guest 05.07.2013 20:08 # −2
kipar 05.07.2013 20:11 # +4
guest 05.07.2013 20:14 # −2
kipar 05.07.2013 20:16 # +3
покормил.
guest 05.07.2013 20:31 # 0
Stertor 06.07.2013 08:32 # −1
inkanus-gray 06.07.2013 10:29 # 0
К сожалению, для Object Pascal нет официального стандарта, но его реализуют Turbo Pascal, Delphi, Free Pascal, Virtual Pascal, TMT Pascal (Framework Pascal), WDSibyl, Oxygene, MIDletPascal, DWScript, PascalABC.NET и частично GNU Pascal.
С Паскалем сложилась странная ситуация: многие компиляторы реализуют вариант языка, который не стандартизован, а компиляторы Standard Pascal (и Extended Pascal) можно назвать экспериментальными.
TarasB 05.07.2013 20:12 # 0
guest 05.07.2013 20:18 # −1
TarasB 05.07.2013 20:21 # 0
*window.pas
Погугли его.
> у меня гента
Красноглазая школота детектед с достоверностью 95%
guest 05.07.2013 20:26 # 0
Уже не нужно, ниже привели пруф убогой реализации юнионов.
> Красноглазая школота детектед с достоверностью 95%
Чини детектор, луркоёб.
inkanus-gray 05.07.2013 20:16 # −1
guest 05.07.2013 20:21 # −1
kipar 05.07.2013 20:21 # +2
guest 05.07.2013 20:24 # −1
kipar 05.07.2013 20:28 # +2
guest 05.07.2013 20:33 # −1
Stertor 06.07.2013 08:33 # −2
TarasB 05.07.2013 20:33 # +1
(ответ гуесту)
guest 05.07.2013 20:34 # −1
kipar 05.07.2013 20:36 # +1
'a':
...
'b':...;
end;
Да-да, можешь теперь поржать над нелогичным синтаксисом. Но у синтаксиса тоже есть свой смысл - если мы все-таки хотим запилить поле селектора, мы можем написать
case field: AnsiChar of
'a':
...
'b':...;
end;
хотя этот field и не будет ничего контролировать.
guest 05.07.2013 20:38 # −1
guest 06.07.2013 14:54 # +1
>Именно, и для чего-то более большого сишка уже начинает мешать.
/thread
guest 06.07.2013 20:48 # +1
Stertor 13.07.2013 18:24 # −2
Убило наповал))) Молодец. Ты его рвешь)
inkanus-gray 05.07.2013 16:26 # 0
kipar 05.07.2013 20:21 # 0
inkanus-gray 05.07.2013 21:19 # 0
Есть несколько компиляторов Extended Pascal, но ими никто не пользуется, а уж Standard Pascal сейчас днём с огнём не найти.
inkanus-gray 05.07.2013 00:21 # −2
superhackkiller1997 05.07.2013 00:39 # −5
inkanus-gray 05.07.2013 16:27 # 0
superhackkiller1997 05.07.2013 18:53 # −4
Stertor 06.07.2013 08:30 # −3
А о чем ты тогда можно говорить. Или ты изобрел новый способ кодить на на с++ - без использования win api?
bormand 06.07.2013 08:48 # 0
Эм, Qt?
Stertor 06.07.2013 10:25 # −5
Отказаться от компилятора и вручную магнетизировать сектора жесткого диска.
TarasB 08.07.2013 10:17 # +1
Stertor 08.07.2013 10:19 # −2
bormand 08.07.2013 10:51 # 0
bormand 08.07.2013 10:52 # +3
В делфи же тоже кодят без использования winapi, пока не понадобится какое-то извращение, которого в библиотеке не реализовали, но его можно пильнуть через winapi.
Stertor 08.07.2013 11:01 # −2
Пусть жлоб набъет себе шишки.
bormand 08.07.2013 11:32 # −1
Каким образом?
Stertor 08.07.2013 11:33 # −2
Небо станет светлее.
anonimb84a2f6fd141 13.07.2013 19:32 # −1
С другой стороны, весь питон сделан для линупса.
an0nym 06.07.2013 09:58 # +1
Stertor 06.07.2013 10:23 # −2
Stertor 06.07.2013 18:51 # −1
Переформулирую своей ответ:
Чтобы петушкам-быдлокодерам(типа короля и гостя) зубы дробить.
anonimb84a2f6fd141 07.07.2013 01:02 # −1
bormand 07.07.2013 07:25 # 0
Stertor 07.07.2013 10:05 # −3
Vasiliy 08.07.2013 12:04 # +1
ЗЫ прям реально слышал фразу "винапи линукса чего то там ....."
Stertor 08.07.2013 13:13 # −3
Не в линуксе нет, а линукса нет )
Линукс - это эротический сон пингвинофила, не надо всем его пересказывать.
anonimb84a2f6fd141 13.07.2013 19:31 # −2
guest 13.07.2013 19:55 # −1
guest 13.07.2013 19:57 # −1
anonimb84a2f6fd141 13.07.2013 19:30 # −1
guest 13.07.2013 19:56 # −1
guest 13.07.2013 19:59 # −1
superhackkiller1997 06.07.2013 12:26 # −4
Stertor 08.07.2013 11:03 # −1
Ты что, к пингвинам неравнодушен? О-о..
bormand 08.07.2013 11:31 # 0
Stertor 08.07.2013 11:32 # −4
anonimb84a2f6fd141 13.07.2013 23:52 # −1
Stertor 14.07.2013 10:24 # −2
guest 05.07.2013 03:11 # −1
Ты еще на андроид спяздни, что он при попытке работы с сетью из главного потока эксепт бросает.
bormand 05.07.2013 05:59 # 0
А это походу был ответ гугла на "андроид - тормозное говно, в котором половина прог не отвечает по 3-5 секунд" ;)
guest 05.07.2013 13:49 # −1
bormand 05.07.2013 14:05 # 0
guest 05.07.2013 15:16 # 0
TarasB 05.07.2013 15:25 # +1
Я даже не знаю, блокирующие они у меня, или нет, потому что я их применяю, только получив сигнал о новом сообщении.
roman-kashitsyn 05.07.2013 15:39 # +1
bormand 05.07.2013 15:46 # +1
Качалка файлов?
guest 05.07.2013 22:06 # −2
guest 06.07.2013 14:55 # −2
Stertor 06.07.2013 08:36 # −1
А как насчет такого:
while c=true do
label1.caption:=inttostr(x)
)
bormand 05.07.2013 05:57 # 0
Как-будто где-то еще не так. Тредсейф гуи библиотек раз два и обчелся. Большинство только в главном потоке (или дополнительном но один хрен одном, как swing) и работают.
Dummy00001 05.07.2013 13:11 # +1
WinAPI - тредсэйф. (Сюрпризом было что MFC не тредсэйф.)
Какао частично тредсэйф.
Stertor 05.07.2013 14:10 # −3
bormand 05.07.2013 15:01 # 0
> Какао частично тредсэйф.
Еще AWT, емнип, потокобезопасен.
Итого насчитали 2.5 библиотеки. Собственно как я и писал выше: тредсейф гуи библиотек раз два и обчелся.
guest 05.07.2013 13:51 # 0
bormand 05.07.2013 14:03 # 0
Меня - всем устраивает. Я просто рассказывал о факте. Переадресуйте вопрос оратору выше :)
bormand 05.07.2013 14:43 # +2
Потокобезопасный гуй не нужен. Почему?
Во-первых, он будет медленнее однопоточного из-за того что почти в каждой гуишной операции будут стоять синхронизации или пробросы черед тредсейф очередь.
Во-вторых, хоть сам гуй и будет потокобезопасным, но остальные то данные и функции - нет! В результате имеем более сложный код и бОльшую вероятность напороться на гейзенбаг, чем с однопоточным гуем.
В-третьих, скольким задачам действительно необходимо много манипулировать гуишными элементами из воркеров? В большинстве случаев воркеру достаточно доложить о прогрессе/передать промежуточные результаты или перекинуть результат какого-то вычисления/загрузки в GUI поток.
guest 05.07.2013 15:13 # −2
Охуеть замедление. Есть пример, когда взаимодействие с гуем будет узким местом в программе?
>Во-вторых, хоть сам гуй и будет потокобезопасным, но остальные то данные и функции - нет! В результате имеем более сложный код и бОльшую вероятность напороться на гейзенбаг, чем с однопоточным гуем.
Ну это вообще пушка. Т.е. потокобезопасность гуй фреймверка не означает потобезопасность остального кода - и это плохо, лучше тогда и гуй сделать небезопасным? Я правильно понял?
Проггеру дали безопасный по умолчанию инструмент без особых накладных расходов на безопасность, что в этом плогого?
bormand 05.07.2013 15:42 # 0
Да, погорячился я тут. Буферизация рисования спасет от узкого места.
> что в этом плогого
Потокобезопасный гуй будет приветствовать работу с ним из нескольких потоков (иначе зачем его таким сделали?).
Из-за этого каждый виджет, который напишу я или кто-то еще тоже должен быть потокобезопасным (ведь если половина из них безопасна, а половина нет - это полная жопа).
В итоге что имеем - до внедрения потокобезопасного гуя о безопасности я задумывался только в воркерах и расшаренных между гуем и воркерами классах.
После внедрения - во всех gui'шных компонентах, и почти во всех классах, которые используются из гуя.
Люди стараются минимизировать взаимодействие между тредами, а вы своим многопоточным гуем повышаете его...
P.S. Вот еще статейка есть на данную тему, там другие доводы: https://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html
guest 05.07.2013 22:01 # −1
Чет дохуя букв на бусурманском.
bormand 05.07.2013 06:04 # 0
Так вот типичный нуб не запилит тред сам, по своей воле. Там же сабклассить и т.п. Поэтому поток один и проблем с многопоточностью никаких.
А здесь ему показали как это сделать, поманили конфеткой. Но не пояснили зачем это все и че оно делает. Вот поэтому я и предложил четвертовать таких авторов.
kipar 05.07.2013 08:18 # +2
https://www.google.ru/#output=search&q=create+thread+tutorial
bormand 05.07.2013 09:10 # +1
Достаточно одного публично повешать, выпотрошить и четвертовать, и остальные сами свои говнотуториалы по тредам уберут ;)
guest 05.07.2013 13:52 # +1
bormand 05.07.2013 14:58 # 0
Lure Of Chaos 05.07.2013 16:02 # 0
guest 05.07.2013 22:04 # +5
Полный набор: скули, XSS.
bormand 05.07.2013 22:28 # +4
А я думал, откуда пыхеры берут ебанутую идиома с чтением одной записи в цикле... А после я уже не смог вылезти из под стола.
guest 05.07.2013 22:07 # −3
bormand 05.07.2013 22:32 # +3
P.S. Ну или этот код там вброшен намеренно, со злым умыслом.
guest 05.07.2013 22:47 # +2
guest 05.07.2013 22:49 # +3
bormand 05.07.2013 23:10 # 0
Те, кому нужно читать этот туториал еще не понимают, в чем там проблемы.
А те, кто понимает, в чем там проблемы, не заморачиваются чтением этого туториала. Ну разве чтобы поржать. Естественно править они его не будут, разве что внесут еще пару уязвимостей ради лулзов.
P.S. Вот что хочется сказать в пользу пыхи - несмотря на все недостатки языка и библиотеки, на php.net вполне годная документация, с примерами и указаниями на подводные камни, которой позавидуют очень многие другие языки\библиотеки.
guest 05.07.2013 22:51 # +2
bormand 05.07.2013 23:13 # +2
Почему? Изкоробки есть PDO (если его не умудрились не поставить): Да и ORM'ы под пых есть.
guest 06.07.2013 14:57 # +2
>execute
Вот я упорно не понимаю, почему не сделать как в питоне, с форматом printf, и передаем список или хеш-массив?
inkanus-gray 06.07.2013 15:06 # 0
guest 06.07.2013 15:12 # 0
>Zend_Db_Table_Abstract::getDefaultAdapt er()->fetchAssoc
Зенд, кстати, разве не платный?
inkanus-gray 06.07.2013 15:14 # 0
http://framework.zend.com/
guest 06.07.2013 15:21 # 0
inkanus-gray 06.07.2013 15:24 # 0
guest 06.07.2013 15:26 # +2
inkanus-gray 06.07.2013 15:28 # 0
Однако, если на хостинге есть кэш опкодов типа APC или XCache, тормозить не будет, пока библиотека лежит в кэше.
bormand 06.07.2013 15:13 # +2
А вот хуй бы их знал если честно. Я сам был в шоке, когда увидел, что PDO::exec и PDO::query не принимают тот самый массив параметров. Добавить к тем функциям дополнительный аргумент, по аналогии с PDOStatement::execute это явно не самая сложная задача.
Но двухфазный интерфейс с prepare+execute тоже нужно оставить. Он умеет в выходные аргументы, и удобен для пакетных вставок.
P.S. Ну и всегда можно потратить 5 минут и написать себе хелпер, работающий так, как тебе удобно. Например такой:
guest 06.07.2013 15:16 # −1
Про TOOWTDI слышал, питушок? Или ты жаваеб?
bormand 06.07.2013 15:28 # 0
> Или ты жаваеб?
Я вас чем-то обидел? Откуда у вас столько ненависти к моей скромной персоне?
> Про TOOWTDI слышал
Да, слышал, конечно. Но если изкоробки функционала нет, то что делать? Остается найти готовую либу или написать свой. У вас питонистов это не так происходит? Только не говори мне, пожалуйста, что для каждой задачи существует ровно одна питонолиба, включенная в комплект поставки, и она идеальна для всех применений.
guest 06.07.2013 17:48 # 0
Взять язык вместо явы? У вас даже декодирования хекса нету.
>Только не говори мне, пожалуйста, что для каждой задачи существует ровно одна питонолиба, включенная в комплект поставки, и она идеальна для всех применений.
Параметризированные запросы - это такая охуенно уникальная задача, что пиздец. Для нее есть все, что надо искаропки. Ты еще спроси может ли фитон json парсить. А жаба, кстати, может?
bormand 06.07.2013 17:59 # +1
> У вас даже декодирования хекса нету.
А это что? http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#valueOf%28java.lang.String,%20int%29
> А жаба, кстати, может?
Насколько знаю, из коробки не может. По жабе не ко мне вопросы, я вообще говоря крестовик ;)
guest 06.07.2013 18:03 # 0
>А это что?
Не в инт, блядь, а в byte[]
Stertor 06.07.2013 18:49 # −2
guest 06.07.2013 18:52 # 0
>На диету бы его.
Зачем? Чтобы он тоньше стал?
Stertor 06.07.2013 18:53 # −1
Stertor 06.07.2013 18:59 # −1
По крайней мере, не будет таким занудой, как сейчас.
guest 06.07.2013 19:05 # −3
Stertor 06.07.2013 19:52 # −1
P.S. Я не блядь, я жду маршрутку.
eth0 06.07.2013 13:36 # 0
Stertor 05.07.2013 14:08 # −2
Значт, программа составлена неправильно. Тормозит не Synchronize, а метод, который им вызывается.
kegdan 23.08.2013 16:31 # 0
Так как вам нафиг не здалось знать, что это - просто сделаем. Создадим для этого целый анальный класс и занаследуем от потока. Почему просто не использовать поток? Да иди ты в жопу, директор, вот почему.
Stertor 04.07.2013 23:17 # −3
Stertor 04.07.2013 23:19 # −3
Canvas not allowed to drawing
Stertor 04.07.2013 23:25 # −3
guest 05.07.2013 13:52 # −2
ctm 05.07.2013 06:31 # −1
Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure ttt.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end;
Stertor 05.07.2013 14:09 # −2
ctm 05.07.2013 14:36 # −2
procedure TVANSThread.Execute;
begin
end;
В неё вписываем следующий код:
for i:=0 to 10000 do Form1.Memo1.Lines.Add(IntToStr(i))
Stertor 06.07.2013 08:26 # −3
Stertor 09.07.2013 09:39 # −3
Минуисуя участников, ты помогаешш обществу снижать ЧСВ.
anonimb84a2f6fd141 14.07.2013 04:04 # −3
Stertor 14.07.2013 10:25 # −3
Оригинально. Пароль все таки придется поменять.
guest 23.08.2013 15:50 # 0
Stertor 15.11.2013 13:27 # 0