[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Futaba] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 20480 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1311535193826.jpg -(479828 B, 539x600) Thumbnail displayed, click image for full size.
479828 No.65415  
>> No.65463  
File: 1311675127639.gif -(873244 B, 400x400) Thumbnail displayed, click image for full size.
873244

Посоветуйте годных гайдов по бусту, шаболонам и modern c++

>> No.65480  

инбифо кто-тоокуу запостит ссылки на доки буста, шаблонов и modern c++
>>65463
доки читай, читай доки сука.

где вы только блядь такие оп-пики берёте. хорошие же на борди были картинки ещё два года назад. теперь одна безвкусная онеме-поебень.

>> No.65483  
File: 1311698234145.gif -(2016 B, 83x19) Thumbnail displayed, click image for full size.
2016

>>65463

>шаблоны

Вандевурд, Джосаттис - шаблоны С++

>modern C++

Andrei Alexandrescu - Modern C++ design;
Abrahams, Gurtovoy - C++ template metaprogramming;
Alexandrescu, Sutter - C++ coding standarts

>boost

Есть книга по бусту, но она старая и не очень полезная:
"Beyond the C++ Standard Library - An Introduction to Boost"
Лучше осваивать буст используя его. Открой страницу http://www.boost.org/doc/libs/1_47_0/ и читай описания библиотек. Постарайся запомнить, что вообще есть в бусте. По мере надобности изучай и используй.

>> No.65495  

>>65480

>Хорошие же на борди были картинки ещё два года назад.

И люди хорошие были.

>> No.65504  
File: 1311709070248.jpg -(395364 B, 603x800) Thumbnail displayed, click image for full size.
395364

>>65480
Эту с трудом отрыл на пиксиве. Сложно найти годную пикчу с Итару знаешь ли. Для справки - Итару - кулхацкер, нерд и отаку из врат Штайнера.

А вообще меня печалит что нынешние анимушники ничего кроме тней рисовать не умеют.

>> No.65507  
File: 1311710304225.jpg -(72694 B, 644x450) Thumbnail displayed, click image for full size.
72694

>>65504

>А вообще меня печалит что нынешние анимушники ничего кроме тней рисовать не умеют.

Учись рисовать сам.

>> No.65509  
File: 1311710719542.jpg -(405249 B, 700x1000) Thumbnail displayed, click image for full size.
405249

>>65507
Я на этом денег не заработаю. нельзя быть специалистом в о всех областях, поэтому я стараюсь совершенствоваться в своей профессиональной сфере и потреблять высококачественную продукцию профессионалов из других сфер.

>> No.65510  

>>65509
Тогда не ной.

>> No.65511  

>>65510

>не ной.

Няша, а зачем тогда по-твоему существуют борды?

>> No.65512  
File: 1311713109875.jpg -(88473 B, 735x920) Thumbnail displayed, click image for full size.
88473

>>65504

>предполагая, что настоящему художнику нужно что-то кроме светотени
>> No.65513  

>>65511
just for lulz

>> No.66150  

Анонимус, есть такая тема.
Я кое-что заеблся делать руками, а дальше автоматизовать не получается.
Есть набор точечек (x,y), нужно их нарисовать, мышкой/клавой указать область (прямоугольную) и иметь возможность дальше работать с попавшими в область точками. Наличие зума необходимо.
Реализация на питоне или R сделает меня очень радостным.
Есть идеи с чего начать? Просто большое приложение для этого писать я точно не буду.

>> No.66152  

>>66150
на сишечке с гтк такое писать- максимум час. за тебя никто делать не будет.

>> No.66153  

>>66152
на сишке с гтк такое писать час? Ну, мб, если знать что делать.
Видишь ли, I have no fucking idea.
Я не прошу полностью это сделать за меня. Я просто сказал что мне нужно, может кто-то заинтересуется и захочет помочь.

>> No.66157  
File: 1312806782450.jpg -(20072 B, 300x348) Thumbnail displayed, click image for full size.
20072

>>66153
загуглить доки гтк, конечно же. почему у меня ни разу не возникало проблем с гуглежом неизвестного?
http://www.gtk.org/tutorial1.2/gtk_tut-23.html

ну первая строчка, первая строчка, блядь!

>> No.66162  
File: 1312811187949.jpg -(33046 B, 600x480) Thumbnail displayed, click image for full size.
33046

>>66157
серьёзно думаешь, что человек, который раньше не имел дел с гтк, сможет написать требуемое за один час? Ну, если так, тогда kk, может посмотрю, мой надменный друг.

>> No.66189  
File: 1312854190040.jpg -(524396 B, 971x1179) Thumbnail displayed, click image for full size.
524396

>>66162
я не имел дел с гтк и когда надо было сделать в лабе интерфейс с выводом графика то нахуярил всё по этой статейке за час.

>> No.66675  
File: 1313497351137.jpg -(387671 B, 1209x876) Thumbnail displayed, click image for full size.
387671

Господа, а есть в Access глобальное пространство имён или что-то вроде того? То как реализованы в нём формы заставляет меня тихо плакать - даже в 1С не всё так анально огорожено своими свистелками. Неужели нельзя обойтись без изучения туевой кучи интерфейсов?

>> No.66676  
File: 1313499221802.jpg -(21245 B, 367x451) Thumbnail displayed, click image for full size.
21245

>>66675
так вот почему саблеблядь называет себя экономистом-технарём! он офисный 1СБЛЯДОК! как там бухалтерия, отчётности все сданы?

>> No.66677  

>>66676

>так вот почему саблеблядь называет себя экономистом-технарём!

Скорее экономистом-математиком. Хотя экономист-математик достаточно удалён от моей специализации, которая, к слову, в рашке есть в десятке-другом вузиков от силы. А деанон - страшно, да.

>он офисный 1СБЛЯДОК! как там бухалтерия, отчётности все сданы?

Няша, есть такая дисциплина - "автоматизация бухучёта", на ней я познакомился с 1С. И к 1С-программистам я отношения не имею тоже и очень надеюсь что никогда иметь не буду.

>> No.66679  

>>66677

>"автоматизация бухучёта"

Это страшный человек. Когда-нибудь он напишет искусственный интеллект, который захватит всю планету и автоматизирует на ней всю бухгалтерию.

>> No.66680  
File: 1313502946615.jpg -(129693 B, 850x935) Thumbnail displayed, click image for full size.
129693

>>66679
Бухгалтерию невозможно автоматизировать. А бухучёт-это секта, со своими адептами. Ну не может нормальный человек помнить все эти 9000 проводок, мне иногда кажется что они даже думают ими, да. Алсо, незадачливому рационализатору нужно силой выгонять бухгалтеров, кои сражаются за сои бумажки так, как не сопротивлялись бы при анальном изнасиловании.
К тому же в большинстве своём бухгалтера тупы и не способны пользоваться плодами автоматизации повторяя по сотне раз на дню операции которые можно выполнить пятью кликами. Я уже не говорю про сорт быдла который называется "оператор 1С" - эти вообще бесполезны: мелкие анальные прихвостни бухгалтеров, да.

>> No.66688  
File: 1313518157463.jpg -(50775 B, 500x375) Thumbnail displayed, click image for full size.
50775

Видимо прыщеилита считает аксес недостаточно православным. Хотя это не стало неожиданностью.

>> No.66707  

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

>> No.66708  

>>66707
sqlite

>> No.66711  

>>66708
Выглядит как что-то хорошее, но что делать со шкуркой? Или есть годный менеджер который можно слегка окуклить?

>> No.66717  

>>66711
Из гуев пользуюсь http://sqlitebrowser.sourceforge.net/
Несмотря на недопиленность, его обычно хватает для чего-то, что лениво делать руками, но оно слишком мелко, чтобы писать скрипт. Там кроссплатформенные кути.

>> No.66737  
File: 1313610163382.jpg -(47816 B, 680x680) Thumbnail displayed, click image for full size.
47816

>>66711>>66717

>гуй для sql
>> No.66754  

>>66737
Ты, наверное, и похапеадмином ни разу не пользовался из тех же соображений?

>лениво делать руками, но оно слишком мелко, чтобы писать скрипт
>> No.67383  
File: 1314854901385.jpg -(78924 B, 640x480) Thumbnail displayed, click image for full size.
78924

Привет, кодач. Доселе не приходилось работать ни с ничем, связанным с джабой, а тут возникла задачка, в которой JVM обещает профит. Пара вопросов:
1) Возможно ли в рамках JVM такое: юзер прямо в рантайме вводит код функции на какой-нибудь Scala, которая в рантайме же компилируется и вызывается. Много ли будет весить компилятор без лишних библиотек?
2) Возможен ли пункт 1 в Scala и есть ли смысл начинать с неё?

>> No.67385  

>>67383

>работать ни с ничем

ни с чем
*selffix*

>> No.69806  

Надо было искать с конца, быстрее бы нашел тред.

Выбираю между NumPy и SymPy, цель - матричные вычисления, немного комплексности и передача всего в какой-нибудь matplotlib, или даже сразу тулкиту(никогда не копал qt в ту сторону, возможно найду там что-то приятное). SymPy выглядит приближенней к формализованному языку, numpy кажется чем-то упрощенным и селит опасения не найти нужного. Основная задача - накидать быстрое рабочее решение, поэтому был выбран питон, возможно потом это будет переписываться на что-то более подвижное, зависит от результата. Какую из них лучше освоить?

>> No.69829  
File: 1319377927773.png -(485104 B, 1920x1080) Thumbnail displayed, click image for full size.
485104

это не имеет никакого отношения к программачу, изначально паста была подготовлина для форча и переведена для тиреча, но тем не менее:

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

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

>> No.69830  
File: 1319377952199.png -(255113 B, 1920x1080) Thumbnail displayed, click image for full size.
255113

>>69829
да, потсоны, по какому принципу у некоторых пикч вот эту маленькая хуйнюшка показывается с картинкой? какой индексер-хуиндексер запустить, чтобы она была у всех моих пикч? как сделать иконки больше?

>> No.69832  
File: 1319378187919.jpg -(259405 B, 615x800) Thumbnail displayed, click image for full size.
259405

>>69806
Насколько я знаю, sympy и numpy нужны абсолютно для разного. Первое - для символьных вычислений, второе для численных. Если нужны матрицы, то скорее всего тебе в сторону numpy.

>> No.69842  

>>69832
Когда ты это сказал, я наконец это понял. А я было подумал, что sympy, в отличии от numpy, вместо кода можно нахуячить формул, потом сунуть переменные и получить красивые решения.
>>69829

>гтк
>кде

Проблема в тебе. Алсо, у меня в дефолтном диалоге куте вообще нет просмотрщика, что является еще одной причиной моей нелюбви к нему.

>> No.69853  

>>65509
Странно, у нас целый отдел дизайнеров успешно зарабатывает.

>> No.69857  
File: 1319410299310.jpg -(314907 B, 600x600) Thumbnail displayed, click image for full size.
314907

>>69829

echo 'gtk-icon-sizes = "gtk-menu=64,64"' >> ~/.gtkrc-2.0

Ты это имел в виду?

>> No.69895  
File: 1319517865415.jpg -(201997 B, 600x600) Thumbnail displayed, click image for full size.
201997

>>69857
хм, окуу, а что собственно должна делать эта строчка? потому что у меня все иконки остались какими и были.

>> No.69898  
File: 1319525869028.jpg -(2033410 B, 2000x1515) Thumbnail displayed, click image for full size.
2033410

>>69895
Она должна была их увеличить.

>> No.69900  
File: 1319526870641.jpg -(42886 B, 590x400) Thumbnail displayed, click image for full size.
42886

>>69898
а какие конкретно? мне кажется немного странным что в конфиге menu будет овечать за иконки загрузчика, нэ?

>> No.70041  
File: 1319718515547.jpg -(23706 B, 300x400) Thumbnail displayed, click image for full size.
23706

бамп во имя ЗНАНИЯ

>> No.70857  
File: 1320888477352.jpg -(371042 B, 800x966) Thumbnail displayed, click image for full size.
371042

Насколько тяжелый gettimeofday? Можно ли его вызывать по 1000 раз на секунду? Есть ли более легкие аналоги?

>> No.70883  
File: 1320953881129.png -(491935 B, 694x800) Thumbnail displayed, click image for full size.
491935

>>70857
Достаточно быстро. Более лёгкий аналог

unsigned long long d;
__asm__ __volatile__ ("rdtsc" : "=A" (d) );

но зависит от частоты проца. Можно сочетать его с gettimeofday, вызывая его значительно реже, например, раз в секунду, для определения частоты проца (отношение времени gettimeofday к rdtsc)

>> No.70885  
File: 1320956898824.png -(833584 B, 900x1230) Thumbnail displayed, click image for full size.
833584

>>70883
Ясно, спасибо.

>> No.70899  

Тут я короче решил сделать полиморфно-мутабельную ассемблерную функцию на Си
http://pastebin.mozilla-russia.org/109410
Можно ли его заставить компилироваться без ворнингов?

>> No.70900  

Да, инлайн в yobaasm надо убрать, а то я тогда даже не знаю, как оно будет работать. Разве что если эта функция вызывается только в одном месте

>> No.70902  
File: 1320972868796.jpg -(147111 B, 585x825) Thumbnail displayed, click image for full size.
147111

>>70899

> Можно ли его заставить компилироваться без ворнингов?

Ты про 38ю строчку?

u_char *asmpt = (u_char*)&yobaasm;

же.

>> No.70903  

>>70901
Да, спасибо. Забыл про приведение типов.
Только вот интересно, как оно будет себя вести в реальной программе, если сделать много таких инлайн ассемблерных вставок и потом через указатель менять так, как там показано? Поменяется одна из инлайн-вставок?

>> No.70905  
File: 1320974063328.jpg -(249738 B, 500x500) Thumbnail displayed, click image for full size.
249738

>>70903

> Только вот интересно, как оно будет себя вести в реальной программе, если сделать много таких инлайн ассемблерных вставок и потом через указатель менять так, как там показано? Поменяется одна из инлайн-вставок?

Если компилятор честно развернет inline то да, но тут возможны неожиданности, так что не забывай про volatile.

>> No.70916  

Как на ассемблере под линуксом сделать то, что делает сишная функция exit()
Как на ассемблере под линуксом делать системные вызовы, не используя int 0x80 а используя Sysenter и vsyscall ?

>> No.70924  
File: 1321016051002.png -(407872 B, 421x600) Thumbnail displayed, click image for full size.
407872

>>70916

> Как на ассемблере под линуксом сделать то, что делает сишная функция exit()
    movl    $16, %edi
call exit

где 16 - код завершения. У gcc есть замечательная опция -S, с которой он выдает не бинарный файл а ассемблерный код, чем очень здорово пользоваться как для отладки/оптимизации программы так и для изучения ассемблера.

>> No.70925  

>>70924
Не совсем то, что мне нужно. Мне надо делать то что делает exit, но не вызывая его. И туда в ассемблер еще надо как-то инклудить stdlib.h иначе оно дает
undefined reference to `exit'
на этапе линковки с помощью ld

>> No.70937  
File: 1321041074480.jpg -(463612 B, 850x850) Thumbnail displayed, click image for full size.
463612

>>70925
Погугли системные вызовы, если лень,

mov eax, 1
mov ebx, 0
int 0x80

классика же. В eax передаёшь код системного вызова, в данном случае exit, в ebx возвращаемое значение. int 0x80 - системный вызов.

>> No.70946  

>>70937
Ты сообщение мое читал? Я же ясно написал, что хочу без int 0x80
Там оверхед большой

>> No.70948  

>>70946
Оверхэд на выход? Что ты там ваяешь?

>> No.70949  
File: 1321047547707.jpg -(293660 B, 500x500) Thumbnail displayed, click image for full size.
293660

>>70925

> что делает exit
movl    $1, %eax
movl $0, %ebx
int $0x80
> И туда в ассемблер еще надо как-то инклудить stdlib.h иначе оно дает
> undefined reference to `exit'
> на этапе линковки с помощью ld

Компилируй/линкуй gcc. Если интересно, как у него это получается, пусти его с ключем -v.

>> No.70955  

>>70949

>int $0x80

Ох, опять. http://www.win.tue.nl/~aeb/linux/lk/lk-4.html#ss4.6

>It has been observed that a 2 GHz Pentium 4 was much slower than an 850 MHz Pentium III on certain tasks, and that this slowness is caused by the very large overhead of the traditional int 0x80 interrupt on a Pentium 4.

Короче, мне не подходит int $0x80

>> No.70956  
File: 1321050374227.jpg -(355055 B, 2000x1189) Thumbnail displayed, click image for full size.
355055

>>70955
Либо ты не до конца описываешь проблему, либо просто упорот. Оверхэд на gettimeofday я понимаю, причём тебе подсказали вариант в одну инструкцию, но вот чем тебя не устраивает системный вызов на выход? Ты понимаешь, что корректный exit сделать быстрее системного вызова никак не выйдет?

>> No.70957  
File: 1321050884499.jpg -(349890 B, 620x800) Thumbnail displayed, click image for full size.
349890

>>70955
Ну так тогда попробуй

call *%gs:0x10
>> No.70973  
File: 1321071353043.jpg -(175142 B, 600x800) Thumbnail displayed, click image for full size.
175142

>>70956
Что за непотребства творятся на этой картинке?

>> No.70976  
File: 1321081121339.jpg -(72357 B, 317x372) Thumbnail displayed, click image for full size.
72357

>>70957
У меня от этого СИГФОЛТЫ
http://pastebin.mozilla-russia.org/109417 - код без сигфолтов, но с int $0x80
http://pastebin.mozilla-russia.org/109418 - код с сигфолтами и call *%gs:0x10
>>70956

>Оверхэд на gettimeofday я понимаю, причём тебе подсказали вариант в одну инструкцию, но вот чем тебя не устраивает системный вызов на выход?

Про gettimeofday не я спрашивал. И системные вызовы бывают не только на выход.

>> No.70977  

http://pastebin.mozilla-russia.org/109421 - кусок дизассемблированного libc.so.6
Там есть call *%gs:0x10
Может это внесет ясности

>> No.70981  
File: 1321083202461.jpg -(202583 B, 600x580) Thumbnail displayed, click image for full size.
202583

>>70976

>И системные вызовы бывают не только на выход.

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

>У меня от этого СИГФОЛТЫ

Я буквально теряюсь в догадках, почему.

>> No.70998  
File: 1321089955915.jpg -(34721 B, 421x260) Thumbnail displayed, click image for full size.
34721

10. Picky, picky, picky.

9. They hear what you say, but not what you mean.

8. Beauty is only shell deep.

7. When you ask what's wrong, they say "nothing".

6. Can produce incorrect results with alarming speed.

5. Always turning simple statements into big productions.

4. Smalltalk is important.

3. You do the same thing for years, and suddenly it's wrong.

2. They make you take the garbage out.

  1. Miss a period and they go wild.
>> No.71010  
File: 1321111610969.jpg -(652391 B, 1253x1769) Thumbnail displayed, click image for full size.
652391

>>70976
Ты не забыл указать 32х битную архитектуру при компиляции? На 64х битах этот код не работает, на 32х все ок.

>> No.71012  
File: 1321119029381.jpg -(44397 B, 498x341) Thumbnail displayed, click image for full size.
44397

>>70973

>> No.71020  
File: 1321128752866.png -(5873 B, 299x276) Thumbnail displayed, click image for full size.
5873

>>71010

>на 32х

ты хотел сказать "на ХУЙ86"?

>> No.71024  

>>71010

>На 64х битах этот код не работает, на 32х все ок.

Нет, не ок. Он и там и там сигфолитися

$ as --32  sigfalt.s -o sigfalt.o
$ ld -m elf_i386 -s sigfalt.o -o sigfalt
$ ./sigfalt
Ошибка сегментирования

sigfalt.s это http://pastebin.mozilla-russia.org/109418

>> No.71054  
File: 1321167578651.png -(301844 B, 769x577) Thumbnail displayed, click image for full size.
301844

>>71024

> ld -m elf_i386 -s sigfalt.o -o sigfalt

А чего ты ожидал? У тебя linux-gate.so.1 не линкуется. Линкуй через gcc и твои волосы будут мягкими и шелковистыми.

>> No.71055  

>>71054

>Линкуй через gcc

Какой командой? И как все-таки сделать это под 64 бит?

>> No.71056  

Попробовал через гцц, но не линкуется
http://pastebin.mozilla-russia.org/109428

>> No.71060  
File: 1321177465483.jpg -(107634 B, 568x628) Thumbnail displayed, click image for full size.
107634

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

>> No.71101  
File: 1321204243636.jpg -(578116 B, 1280x1024) Thumbnail displayed, click image for full size.
578116

>>71055>>71056
Замени _start на _main же.

***************
*** 1,10 ****
.text # section declaration

# we must export the entry point to the ELF linker or
! .global _start # loader. They conventionally recognize _start as their
# entry point. Use ld -e foo to override the default.

! _start:

# write our string to stdout

--- 1,10 ----
.text # section declaration

# we must export the entry point to the ELF linker or
! .global main # loader. They conventionally recognize _start as their
# entry point. Use ld -e foo to override the default.

! main:

# write our string to stdout
>> No.71140  

Да, под i386 заработало. Но под x86_64 не хочет:
$ as --64 sigfalt.s -o sigfalt.o
$ gcc -m64 sigfalt.o -o sss
$ ./sss
Ошибка сегментирования

>> No.71142  

Как на x86_64 сделать?
Кстати, какая ОС лучше всего подойдет для изучения ассемблера x86 и x86_64? Дос не может в 64 бита

>> No.71144  
File: 1321258579721.jpg -(120423 B, 599x800) Thumbnail displayed, click image for full size.
120423

>>71140

> Да, под i386 заработало. Но под x86_64 не хочет:

Об этом было написано выше.
>>71142

> Как на x86_64 сделать?

Инструкция syscall тебя устроит?

> Кстати, какая ОС лучше всего подойдет для изучения ассемблера x86 и x86_64?

Для начала - та, под которой ты работаешь.

>> No.71152  

http://dagobah.net/flash/poke_the_pingvin.swf

>> No.71156  

>>71144

>Инструкция syscall тебя устроит?

Устроит. Как ее там использовать?
И разве есть способ сделать это в x86_64 под линуксом без int $0x80 и без syscall?

>> No.71158  
File: 1321329599690.jpg -(736663 B, 900x1200) Thumbnail displayed, click image for full size.
736663

>>71156

> Как ее там использовать?
    movq    $1,%rax         # syscall number
movq $1,%rdi # file handle 1 is stdout
movq $msg,%rsi # address of string to output
movq $len,%rdx # number of bytes
syscall
>> No.71360  

http://пиши-код-блять.рф

>> No.71380  

>>71360
Так верстают только мудаки.

>> No.71390  

http://blog.whiletrue.com/2011/01/what-if-visual-studio-had-achievements/

>> No.71432  

>>71380
Нормально свёрстано, что не нравится?

>> No.71440  

>>71432
свёрстано как говно. говно.

>> No.71509  

http://blog.makezine.com/archive/2011/04/data-sorting-dances.html

>> No.72176  

http://vault.nazgul.ru/humor/bugs.shtml

>> No.72198  
File: 1322859459920.jpg -(29110 B, 500x339) Thumbnail displayed, click image for full size.
29110

>>72176

>В 1979 году были остановлены 5 АЭС в США из-за ошибки в программе расчета реакторов. В программе вычисления величины вектора его компоненты учитывались со знаком, программа была написана summer-student'ом.
>вычисления величины вектора
>компоненты учитывались со знаком

wut?

>> No.72200  
File: 1322859896526.jpg -(41065 B, 800x557) Thumbnail displayed, click image for full size.
41065

>>72198
Это же компоненты, у них есть знак.

>> No.72201  

>>72200
Да, но как знак компонент влияет на величину вектора?

>> No.72202  

>>72201

>программа была написана summer-student'ом
>как знак компонент влияет на величину вектора?

Честно говоря, я не берусь даже предположить...

>> No.72211  

http://www.memorymanagement.org/

>> No.72352  

бампуэ

>> No.77089  

В последние годы на капиталистическом западе как грибы после дождя разрабатываются всяческие "теории" программирования, призванные, якобы, облегчить написание, отладку и сопровождение больших программных комплексов. Очевидно, что будучи продуктом буржуазной идеологии и выражая интересы правящего класса, эти теории призваны отвлечь широкие массы программистов от их истинных интересов. К сожалению, и у нас отдельные товарищи попали под тлетворное влияние теорий "структурного", "модульного", "нисходящего или восходящего" программирования, забывая, что чем дольше программист отлаживает программу, тем безошибочнее и эффективнее она когда-нибудь будет работать. Поэтому давно назрела необходимость противопоставить этим лжетеориям нашу домашнюю, самодельную, выстраданную и вымученную методику программирования. Опыт такой методики и предлагается читателю. Мы назвали наш метод "GLорING рRоGRаммING" или "снизу вверх наискосок" (свн). Основную идею метода свн лучше всего передает древняя восточная мудрость: "Если что-нибудь можно сделать двумя способами, не пожалейте усилий и придумайте третий".

I. С чего начать.

Многие западные программисты утверждают, что прежде чем начинать писать программу, необходимо время на обдумывание алгоритма, а некоторые даже призывают вникнуть в суть задачи, которую предстоит решать. Категорически не следует интересоваться постановкой задачи до момента получения обьектного модуля программы. Помните, что программирование - это искусство, поэтому любые лишние знания только ограничивают вашу фантазию. Hачинайте писать текст программы задолго до того, как вам сформулируют техническое задание, и вы получите прекрасную возможность сделать жизнь вашего руководителя (и свою) гораздо разнообразнее и интереснее (например, в момент получения тз вы можете возмутиться: "Представляете, сколько теперь придется переделывать?!").

Многие западные программисты утверждают, что прежде чем начинать писать программу, необходимо время на обдумывание алгоритма, а некоторые даже призывают вникнуть в суть задачи, которую предстоит решать. Категорически не следует интересоваться постановкой задачи до момента получения обьектного модуля программы. Помните, что программирование - это искусство, поэтому любые лишние знания только ограничивают вашу фантазию. Hачинайте писать текст программы задолго до того, как вам сформулируют техническое задание, и вы получите прекрасную возможность сделать жизнь вашего руководителя (и свою) гораздо разнообразнее и интереснее (например, в момент получения тз вы можете возмутиться: "Представляете, сколько теперь придется переделывать?!").

Hикогда не составляйте заранее блок-схему программы. Во-первых, это проще и быстрее сделать, когда программа уже написана, во-вторых, неосторожно оставленная на столе блок-схема даст вашим врагам и завистникам возможность понять, что вы собираетесь делать. Помните, что никто кроме вас не должен разбираться в вашей программе. И если вы никак не можете избавиться от дурной привычки рисовать блок-схемы, то зарубите себе на носу:

Чем больше структура программы соответствует ее логике, тем меньше вы стоите как программист.

II. Стиль.

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

Тратить до 50% перфокарт и обьема листинга (слово-то какое!) Hа комментарии, пробелы, пустые операторы, звездочки и другие украшательства - совершенно недопустимая расточительность. Пишите со 2-ой по 71-ую позиции, всемерно избегая пробелов. Если комментария никак не избежать, стремитесь писать их как можно конкретнее. Hапример:

Dо J=1 то N; /* сYсL ро N*/ IF J>0 тнеN Gото м; /*реRехоD
то м*/ еLSе Gото L; /*реRехоD к L*/ х=х+1; /* рRIваWIтх 1 к
х/* еND; м: Х=х-1; /* так надо федя! */ IF а тнеN Gото L;
L: /* ВозVеSтY х Sтер. Два*/ х=х**2; ... И т. Д.

Всем переменным давайте имена ваших знакомых, любимых блюд, эстрадных ансамблей, сигарет, напитков и т. Д. Легко видеть, что фрагменты типа:

IF катJа >= 18 тнеN Dо; саLL GаSтRоNом; саLL тахI; Gото
хата; еND; еLSе Gото VеRа;
/* рL/1 */
GLорING сSест
...
МаRINа еQU DURа
...
L ан,маRUSJа
Sт Uн,аNJUта
вхLе LетS,IRINа,DRINк(аGDам)
/* аSSемвLеR */

поражают изяществом, остроумием и тонким вкусом.

При внимательном рассмотрении легко обнаруживается, что буржуазные авторы книг рассуждая о предмете, который они называют "структурным программированием", тонут в собственных противоречиях. Hапример, [д. Майерс], стр. 63: "Скромные по целям работающие программы лучше неотлаженных грандиозных проектов", а на стр. 58: "Если незначительное добавление сделает вашу программу пригодной для другого случая, никогда не пренебрегайте этим". Мы готовы согласиться с последним утверждением, поскольку умелое его применение позволит вам затянуть разработку программы на любой мыслимый срок.

Более того, тот же автор через несколько страниц, вспоминает пресловутый принцип к I S S (кеер Iт SIмрLе, SтUрID - будь проще, дурачок!). Представляете, в один прекрасный день руководитель заявляет вам: "Что-то у вас очень уж просто все получается!"

Эти структурно-экстремистские тенденции, в конце концов, приводят к полному вырождению программирования как творческой деятельности. Предельная степень деградации порождает методы типа ашкрофта-манны [э. Йодан], сводящие деятельность программиста к работе ч. Чаплина на конвейере в к/ф "новые времена".

III. Gо то

Проблема безусловных переходов, к счастью, еще не нашла окончательного решения. Среди программирующей западной молодежи распространено заблуждение, что использование оператора Gото крайне нежелательно. Практика ведущих программистов нашей лаборатории показывает, что использование оператора безусловного перехода в сочетании с массивами меток повышает эффективность программ в среднем на 4.2% При увеличении времени отладки на 350-400%. Если нужно перейти из данной точки программы, следует перейти как можно дальше. Если перейти некуда, следует пересмотреть программу.

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

Все вставки в программу следует делать так: После последнего оператора ставьте новую метку, напишите текст вставки, увеличьте размерность массива меток на 2, передайте управление на эту метку из нужной точки (или откуда-нибудь еще), пометьте оператор, следующий за Gото, новой меткой, смело измените значение переменной метки и вернитесь.

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

                   N
SIGма ( V(I)+W(I) )
I=1
к = ------------------- , где ( 1 )
N

N - число операторов,
V(I) - число передач управления на I-тый оператор,
W(I) - число возможных переходов от I-го оператора.

При к < 0.5 Вы, как программист, никуда не годитесь. Приемлимый коэффициент 3 - 4, а некоторые суперпрограммисты имеют к не ниже 12.

IV. Модульность.

H и к а к о й м о д у л ь н о с т и! Вообще...

V. Эффективность.

Споры по поводу того, что считать эффективной программой, не утихают с тех пор, когда в спортзале заработала эвм м-20. В наши дни дело дошло до появления казуистических утверждений вроде: "Удобочитаемость программы существеннее ее эффективности" [д. Майерс].

Мы считаем, что эффективность программы является совершенно обьективной и количественно оцениваемой величиной. Hе надо жалеть ни времени, ни усилий в борьбе за эффективность - когда ваша программа в конце концов заработает, все ваши затраты окупятся экономией 15 мксек и о. 073 Кб. Чтобы программист мог заранее оценить эффективность своего продукта, предлагается простая формула:

    Э = т/т1 + I*т/т2, где (2)

т1 - время, требуемое срU для выполнения вашей программы, (если программа еще не выходит на Gо, т1 = т);
т - время, необходимое для вывода на ацпу заранее заготовленного текста, идентичного тому, который будет печатать ваша программа, когда выйдет на Gо;
т2 - время, которое ваша программа будет выполняться, когда вы ее полностью отладите.
I = SQRт (-1)

эффективность программы, как видно, величина комплексная, что отражает системный подход к программированию, характерный для метода свн.

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

Кстати, один из апологетов "структурного программирования" [д. Майерс], позволил себе следующее: "Hикто, будучи в здравом уме и твердой памяти, не станет программировать на ассемблере." И это по поводу любимого языка сторонников свн! Hапротив! Изучение ассемблера - это прекрасный путь к вершинам познания ос ес эвм. Следуя этим путем, вы получите массу полезных знаний, которые помогут вам решить ряд важнейших проблем:

1). Как, получив талончик на одну минутку в пакете, захватить в безраздельное пользование срU по крайней мере на 1.5 Часа, устранить задачи всех других пользователей (например, с кодом S422), застопорить очередь заданий, лишить оператора возможности снять ваше задание, беспрепятственно получить результаты (не взирая на установленный лимит расхода бумаги), и при этом - все претензии операторской службы овт направить в сторону какой-нибудь кафедры факультета "ф"?
2). Как испортить (не стирая) все чужие нд на вашем пакете 5050/5061, не оставляя следов в рRINтLоG?
3). Как стереть ядро? (Или IрL?)

Вообще, существует богатейший спектр способов повышения эффективности программ. Авторы хорошо и давно знакомы с одним программистом, который не так давно выиграл на пари ящик пива, повысив, за 40 минут поверхностного анализа, минимум в два раза быстродействие трех программ на фортране, взятых наугад из мусорной корзины на одной из кафедр ф-та "т". Поскольку этот факт абсолютно не известен руководству, программистам в стиле свн предстоят долгие годы безоблачного существования и счастливого программирования.

VI. Снова модульность.

По прежнему, никакой модульности!

(Поскольку модульность нельзя понимать иначе, как наличие известной встроенной функции. Все остальное - от лукавого.)

Считайте себя хуже других, если вы не в состоянии написать программу (если хотите, назовите ее модулем) длиной более 1000 операторов. Если по ряду обьективных причин (они есть всегда) вам все-таки приходится сталкиваться с проблемой стыковки, то помните об одном-единственном правиле метода свн: Hикаких соглашений о связях!

В особенности, если приходится иметь дело с программистами противоположного пола.

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

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

Порадуйте своего руководителя, повесив над рабочим столом плакат: "Программирование - слишком сложная интеллектуальная деятельность, чтобы можно было надеяться навязать ей узы административной системы, которая душит всякую инициативу." [ван тассел]. Если реакция руководства окажется более сдержанной, чем вы ожидали, перекрасьте дверь вашей лаборатории зеленой краской самого ядовитого цвета и исчезните на три дня, предварительно отключив домашний телефон [б. Мейер, бодуен].

VII. Отладка.

Первая заповедь программиста, успешно преодолевшего барьер синтаксического контроля - не торопиться. Помните, что плохо отлаженная программа всегда менее эффективна, чем совсем не отлаженная. Hе выводите на печать более одной переменной за один прогон. Полученные листинги (распечатки) немедленно уничтожайте (во избежание!.. См. V). С другой стороны, полезно хранить, в единственном экземпляре, протокол компилятора с наихудшим (это не сложно) качеством печати с тем, чтобы при незапланированном появлении руководителя можно было бы сказать: "Вот видите, в каких условиях приходится работать!" Разумеется, диагностические сообщения следует отрезать, а лучше - неаккуратно оборвать. (Для тех, кто программирует на фортране или ассемблере, рекомендуем приобрести некоторые навыки работы с ножницами и клеем).

Если вы храните исходный текст на нмд, никогда не проверяйте карт IевUрDте, и чтобы не лишать себя приятных неожиданностей! Более того, проверять пробивку - дурной тон и признак гнусного неуважения к милым и очаровательным девушкам, тратящим лучшие годы юности на пробивание дырок в ваших перфокартах.

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

Hесколько слов о тестировании. Hикто не знает, в чем именно заключается тестирование, что является конечной целью и какие результаты следует получить. В методе свн принято считать тестирование законченным, если выполнение завершается с кодом возврата 0000, даже если исходные данные различаются хотя бы одним числом (или всеми - если вы максималист).

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

>> No.77186  
File: 1331222076308.png -(69419 B, 317x372) Thumbnail displayed, click image for full size.
69419

Возможно ли (и если да, то как?) получить в C указатель на область памяти, где хранится стек вызовов. В x86 есть регистр-указатель стека esp но это уже будет асмоебство, как быть с переносимостью?

>> No.77188  

>>77186
Переносимо - нет, си не предоставляет такой возможности. В чём суть более общей проблемы, возможно, можно найти другие решения?

>> No.77189  

>>77188
Допустим, есть функция которая сама себя многократно вызывает(рекурсия). В какой-то момент может наступить такое условие, что надо из этой рекурсии быстро выйти. Быстро выйти это значит быстро выйти, а не завершать по цепочке все те рекурсивные вызовы, которые были перед тем вызовом, из которого стало ясно что нужно выходить из рекурсии.
Сама рекурсия при этом не является хвостовой т.е. ее нельзя заоптимизировать в итерацию. GOTO отметается.

>> No.77190  

>>77189

void func()
{
...
    static bool force_break;
force_break = false;
func();
if ( force_break )
return;
    ....
    if (...)
{
force_break = true;
return;
}
}
>> No.77191  

>>77190
Разве не очевидно, что если на 400-м рекурсивном вызове сработает это условие:

if (...)
{
force_break = true;
return;
}

То все эти 400 рекурсивных вызова будут именно по цепочке последовательно завершаться, завершать их будет код:

if ( force_break )
return;

Следовательно, это условие:

>Быстро выйти это значит быстро выйти, а не завершать по цепочке все те рекурсивные вызовы, которые были перед тем вызовом, из которого стало ясно что нужно выходить из рекурсии.

Не выполнено.
Или я не прав?

>> No.77192  

>>77189
Это даже на асме не так просто сделать: нужно запоминать значение указателя на стек в какой-то глобальной переменной, а потом в нужный момент сворачивать стек до этого указателя. Но это все говнокод. Ты либо не используй рекурсию, если накладные расходы на стек беспокоят, либо не парься и завершай функцию по-нормальному. Есть еще вариант exit(0), только не думаю, что он тебя устроит.

>> No.77193  

>>77191
А ты хочешь goto, но без goto? Чем он тебя смущает?

>> No.77194  

>>77193
goto никак не поможет свернуть стек, lol.

>> No.77195  

>>77194
Верю. Мои знания о goto немногим больше, чем опыт его применения, то есть никакие.

>> No.77196  

>>77189

>Сама рекурсия при этом не является хвостовой т.е. ее нельзя заоптимизировать в итерацию.

а почему нельзя? что если подумать в этом направлении?

>> No.77219  

Чем сейчас лучше всего отлавливать сегфолты?

>> No.77221  

>>77219
Не понял вопроса. Отлавливать в смысле тестирования и поиска мест, которые их вызывают? Или ловить их эксепшенами для корректного продолжения? Или ловить каким-нибудь гуглбрэйкпадом у пользователей в релизной версии с целью потом по дампу восстановить каллстэк по собственной дебажной инфе?

>> No.77223  

>>77221

> Отлавливать в смысле тестирования и поиска мест, которые их вызывают?

This.

>> No.77244  

>>77219
assert'ами

>> No.77272  
File: 1331376200982.jpg -(50580 B, 640x464) Thumbnail displayed, click image for full size.
50580

>>772237
Юнит-тесты, статические анализаторы, отказ от простых типов. На мой взгляд надо просто параноиком быть, и не бояться писать лишние проверки.

>> No.77274  

>>77272
Проблема в том, что есть кусок укуреного кода, который раз в пару дней улетает в сегфолт по непонятным причинам, хотелось бы что-то с этим делать. Воспроизвести проблему в тестовых условиях не получается.

>> No.77280  
File: 1331380858524.png -(84153 B, 708x774) Thumbnail displayed, click image for full size.
84153

>>77274
Слови эксепшн, сделай дамп. С пикрелейтед http://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad можно даже отладочную информацию не включать при сборке

>> No.77303  

http://www.rsdn.ru/article/vcpp/survrls.xml

>> No.77306  

>>77280
Чем можно раскрутить стек из кора?
>>77303
Оно не на VC.

>> No.77307  

>>77306
Вот опять ты не конкретен. gdb?

>> No.77308  

>>77307
g++. gdb пользоваться не умею.

>> No.77309  

>>77308
http://stupefydeveloper.blogspot.com/2008/10/gdb-examining-core-dumps.html

>> No.77310  

>>77309
Спасибо.

>> No.77359  
File: 1331588235202.jpg -(154537 B, 600x812) Thumbnail displayed, click image for full size.
154537

union - дурной тон в C++? Есть ли примеры (помимо упаковки данных), где стоит применять union? Какие-то интересные паттерны?

>> No.77383  

>>77359
Вектор, в котором можно обращаться к одним и тем же компонентам, как x, y, z; coord[0], coord[1], coord[2]; r, g, b; ... Речь идет об обращении к компонентам напрямую, без всяких убогих функций типа x() или, упаси Господи, getX().
Ну и в некоторых других ситуациях union'ы могут быть полезны.
По поводу упаковки данных, я тебя не понял.

>> No.77386  

>>77383

>По поводу упаковки данных, я тебя не понял.

Немного грязный способ union { unsigned int packed; char bytes[4]; }; пишем в байты, отправляем packed.
Из стандарта 9.5.1:

>one special guarantee is made in order to simplify the use of unions: If a POD-union contains several POD-structs that share a common initial sequence (9.2), and if an object of this POD-union type contains one of the POD-structs, it is permitted to inspect the common initial sequence of any of POD-struct members;
>> No.81230  

Неужели в современном кине постпроцессинг делают так же как в гугле:
Применил шейдер
Нарисовал экран в фбо
Применил шейдер
Нарисовал экран в фбо
и т.д. Я попробовал так сделать простой эффект, но на второй отрисовке фпс падает в ноль, а видеокарта захлебывается. Не применял никаких оптимизаций, написал в лоб, думаю, можно еще пару раз нарисовать если с оптимизацией, но это как-то не правильно. Ведь наверняка есть какие-то техники, чтобы использовать кучу шейдеров сразу?
Знакомлюсь с шейдерами второй день. В этот раз, кажется, получилось к ним подойти с правильной стороны.

>> No.81264  

>>81230
Нашел примеры в спецификации к PBO. Кажется, все немного лучше, чем я думал. Но все равно это не кажется самым продвинутым решением.



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]