Сохранен 509
https://2ch.hk/pr/res/468625.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
sage

C++ тред

 Аноним 25/04/15 Суб 13:10:08 #1 №468625 
14299566084530.jpg
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.

Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode

Предыдущий: >>462718
sageАноним 25/04/15 Суб 13:12:03 #2 №468627 
14299567230570.png
По традиции пиарю парашу нормальную доску с тегом [code] и кодерской капчей.

https://ololoepepe.me/board/pr
https://github.com/ololoepepe/ololord

Чейнджлог с прошлого раза:

+ Теперь на всех досках на 1 капчу 10 постов.
+ Для того, чтобы свести влияние пинга к минимуму, файлы из треда качаются параллельно по две штуки разом.
+ Разметка немного допилена (не помню уже, что именно менял, вроде чтоб ссылки лучше определялись).
+ Реализован новый быстрый поиск. Index-based, так сказать. Работает быстрее, чем ты тилибонькаешь свой стручок.
+ Исправлено добавление ссылок на посты при получении новых постов AJAX-ом.
+ Алерты заменены на всплывающие сообщения.
+ Исправлено отображение превью постов.
+ Добавлена возможность удалять файлы без удаления постов.
+ На доске /echo/ добавлена возможность редактировать ссылку на внешний трендель. В целом увеличена гибкость шаблонов и скриптов для создания нестандартных досок.
+ Добавлена доска /rpg/ для рпг-тредов (популярны на ычане). На этой доске имеется встроенная система голосования (ибо специфика такая).
+ Предусмотрена возможность добавлять доски, где нельзя постить файлы, и при этом можно создавать треды (раньше тред без файла никак нельзя было создать).
+ Примерно в 10-15 раз увеличена скорость рендеринга тредов/досок (закеширована одна тяжелая операция).
+ Добавлен диалог настроек. Настройки времени и стиля помещены туда.
+ Добавлена возможность выбирать тип капчи. В /pr/ железно зашита кодерская капча для защиты от дебилов.
+ Добавлена поддержка яндекс-капчи (горите в аду, суки, за такой уебанский апи).
+ Исправлено ошибочное отображение нулевого (0x0) разрешения для аудио- и видеофайлов.
+ Исправлено отображение ошибки при постинге, если ошибка произошла не на сервере, а где-то в пути (прокся не пустила и т.п.).
+ Добавлена возможность быстрого ответа на выбранный пост (форма телепортируется прямо к посту, потом уходит на место).
+ Добавлена возможность отрендерить все посты заново (при изменениях в разметке, например).
+ Рендеринг постов теперь выполняется вне транзакции.
+ Отрефакторены скрипты, теперь это чуть меньший быдлокод, чем был, хотя все равно та еще дрисня.
+ Постинг теперь осуществляется при помощи XHR, избавился от хака с использованием iframe. Бонус - отображение процесса загрузки.
+ Добавлен класс конфигурируемой доски (ура, слава яйцам!), теперь не обязательно на каждую доску делать свой класс, достаточно задать имя и название.
Аноним 25/04/15 Суб 13:14:20 #3 №468628 
>>468627
Нужно задидосить тебя.
Написать борду не проблема, проблема чтоб не задидосили.
sageАноним 25/04/15 Суб 13:15:14 #4 №468629 
>>468628
CloudFlare?
Аноним 25/04/15 Суб 13:16:20 #5 №468630 
>>468629
ну вон нульч и гитхаб клаудфлара не спасла вроде
Аноним 25/04/15 Суб 13:17:04 #6 №468631 
Программач, подкинь ссылок годных на реализацию квадратичного решета.
sageАноним 25/04/15 Суб 13:19:41 #7 №468632 
>>468630
Ну, знаешь, если уж компания, которая на этом специализируется, ничего не смогла сделать, то остается только расслабиться и получать удовольствие.
Алсо, хитрый план: можно взять там платный тариф и в случае, если они обосрутся, требовать с них денег (разумеется, больше чем заплатил сам).
sageАноним 25/04/15 Суб 13:21:22 #8 №468634 
>>468631
15 секунд в гугле: https://en.wikipedia.org/wiki/Quadratic_sieve#Implementations
Аноним 25/04/15 Суб 13:23:27 #9 №468635 
>>468634
Видел уже. Там везде какая-то ебень с дикими накрутками. А хочется его в чистом, незамутненном виде.
sageАноним 25/04/15 Суб 13:26:36 #10 №468636 
>>468635
Сделай, алгоритм там описан. Если тебе надо разобраться, то разбирайся, иначе не вижу смысла не использовать готовые оптимизированные решения "с накрутками".
Аноним 25/04/15 Суб 13:30:11 #11 №468638 
>>468636
Бида в том, что мне крайне тяжело читать си-стайл, а реализацию в стиле плюсов найти не удается.
sageАноним 25/04/15 Суб 13:38:42 #12 №468642 
>>468638
Лолшто? Сишку ж (без некоторых мелочей) можно считать подмножеством крестов. Синтаксис один в один, шо там функции, шо тут функции, только классов нет. Хз что там можно не осилить прочитать. Вот заголовок mpqs, что тебе там не понятно?
[code lang="c"]
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> / for memset /
#include <limits.h> / ULONG_MAX /
#include <sys/types.h>
#include <sys/resource.h>
#include "gmp.h"

#define FBASE ".fbase"
#define FULLS ".fulls"
#define PARTIALS ".partials"
#define PPS ".pps"
#define CYCLES ".cycles"
#define AVAL ".a_val"
#define STATUS ".status"
#define ADATA ".adata"
#define MATRIX ".matrix"

#define INDEX(p) ((p == -1) ? 0 : p)

typedef struct {
unsigned long q; / large prime /
mpz_t x;
unsigned int n; / number of primes stored /
unsigned int a; / number of primes allocated /
int p; / primes and/or indices /
unsigned int
e; / exponents /
} relation_struct;
typedef relation_struct relation[1];

typedef struct _trie_t {
unsigned long p; / large prime /
struct _trie_t left;
struct _trie_t
right;
} trie_t;

unsigned long count_lines (char);
void sort (unsigned long
, unsigned long);
unsigned long uniq (unsigned long, unsigned long);
void init_relation (relation);
void clear_relation (relation);
int read_partial (relation, FILE
, int);
int read_partial2 (relation, FILE , unsigned long );
int read_full (relation, FILE, unsigned long);
void realloc_relation (relation, unsigned int);
void copy_relation (relation, relation);
void output_relation (FILE
, relation);
void output_relation_without_q (FILE , relation);
void output_relation2 (FILE
, relation, mpz_t, mpz_t);
void count_odd_exponents (int, unsigned long, relation, unsigned long);
void read_params (mpz_t, unsigned long, unsigned long, char);
void multiply_relation (relation, relation, relation, mpz_t);
unsigned long read_factor_base (int
, char , unsigned long);
int check_relation (relation, unsigned int
, mpz_t);
int cputime (void);
unsigned long nextprime (unsigned long);
trie_t insert_prime (trie_t , unsigned long);
unsigned long trie_size (trie_t );
void trie_clear (trie_t
);
int trie_contains (trie_t *, unsigned long);
void normalize_relation (relation, mpz_t);
void swap_relation (relation, relation);
double getprime (double);
unsigned long find_multiplier (mpz_t, double);
[/code]
Аноним 25/04/15 Суб 15:08:40 #13 №468674 
>>468582
Ты ёбнутый? Новые крупные известные платформы появляются раз в 2-3 года, надо будет другой размер инта сделать — сделают. Надо будет другую реализацию — реализуют.
Аноним 25/04/15 Суб 17:50:24 #14 №468749 
>>468642
Сишку считать подмножеством не есть Ъ.
sageАноним 25/04/15 Суб 17:57:43 #15 №468752 
>>468749
Ясно-понятно. Лучше выяснять, что Ъ, а что нет, чем писать код. Как и ожидалось от сосачевских клованов.
Аноним 25/04/15 Суб 18:10:59 #16 №468765 
>>468642
в с++ нет массивов переменной длины, в си есть.
Аноним 25/04/15 Суб 18:16:34 #17 №468766 
>>468765
че блять?
Аноним 25/04/15 Суб 18:21:32 #18 №468767 
>>468766
void f(int size) {
char buf[size];
...
}

Вот так написать в c99 можно, а в с++03\11\14 нельзя.
Аноним 25/04/15 Суб 18:24:30 #19 №468768 
>>468767
быстродополнение, на 17 стандарт, кажется был proposal на VLA
sageАноним 25/04/15 Суб 18:32:57 #20 №468772 
>>468765
Да ладно.
http://ideone.com/BMRaZ2
Аноним 25/04/15 Суб 19:37:05 #21 №468792 
>>468772
И что ты этим доказал? Это UB. Посмотри драфт стандарта. То, что это поддерживает gcc, не говорит о том, что это часть с++
Аноним 25/04/15 Суб 19:40:51 #22 №468794 
>>468792
в 14-х плюсах размера массива может быть constexpr
sageАноним 25/04/15 Суб 19:59:42 #23 №468799 
>>468792
GCC и есть де-факто стандарт, похуй, что он отличается от официального. На спермоподелия строго похуй.
Аноним 25/04/15 Суб 20:14:31 #24 №468801 
>>468799
сажадебил, что ты забыл тут? иди в свой манямирок со своим говногцц.
sageАноним 25/04/15 Суб 20:48:13 #25 №468807 
>>468801
>пок-пок-пок не обоссали совсем!
Аноним 25/04/15 Суб 23:59:58 #26 №468845 
>>468582
>и рантаймов с другим размером инта
Я что-то путаю, или по сишному стандарту инт 16 бит? Да вообще вопрос не в этом, а знаковом бите и т.д.

Я так понял, представление знакового от нуля до макс_инт не обязано совпадать с представлением беззнакового.
Аноним 26/04/15 Вск 00:06:38 #27 №468846 
>>468845
Стандарт не устанавливает конкретных размер ниодного типа, кроме char который равен 1 байту (при чем не важно сколько в нем бит). int должен соотвествовать самому оптимальному способу представления целого числа на конкретной архитектуре - что фактически значит что int должен быть равен машинному слову конкретного процесора.
Аноним 26/04/15 Вск 00:57:44 #28 №468868 
Превозмогающее быдло в треде.
Когда использовать weak_ptr? Желательно пример, в котором нету кэширования.
Аноним 26/04/15 Вск 00:59:52 #29 №468870 
>>468868
Берёшь, и используешь
Аноним 26/04/15 Вск 01:00:19 #30 №468871 
>>468868
Когда делаешь лабу по прожке, чем я собственно сейчас и занимаюсь. У меня возник порочный круг shared_ptr - enable_shared_from_this - weak_ptr. Никаких иных путей его разрешения, кроме как пихать инклюды посреди файлов не вижу, это норма?
Аноним 26/04/15 Вск 01:08:08 #31 №468875 
>>468868
Когда появляются перекрёстные ссылки.
http://habrahabr.ru/post/191018/
Аноним 26/04/15 Вск 01:50:57 #32 №468890 
Я теряюсь в современных плюсах. С++11 и С++14, меняющийся Qt - как всё это держать в голове и иметь в виду?
Аноним 26/04/15 Вск 02:16:38 #33 №468896 
>>468890
переходи на раст
Аноним 26/04/15 Вск 02:21:50 #34 №468897 
>>468890
Та же фигня, бро. Ты работаешь?
Аноним 26/04/15 Вск 03:38:52 #35 №468903 
>>468772
это гну экстеншон

>>468799
>GCC и есть де-факто стандарт, похуй, что он отличается от официального.
вон из профессии, мразь

>>468845
>Я что-то путаю, или по сишному стандарту инт 16 бит?
1. базовым типом является char, размер которого в битах implementation defined
2. размеры всех типов считаются в кол-ве char'ов, sizeof возвращает размер в char'ах
3. на популярных платформах int имеет размер в 16 бит (DOS), 32 бит (Win/Lin), 64 бит (Linux)
4. на эмбеддед говне вообще может быть всё что угодно
5. для битоёбов есть типы int8_t, int16_t, int32_t
6. sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

>>468871
>У меня возник порочный круг shared_ptr - enable_shared_from_this - weak_ptr.
>порочный круг
wat?

>>468890
>С++11 и С++14, меняющийся Qt - как всё это держать в голове и иметь в виду?
1. между 11 и 14 выбирать сразу 14
2. куте существует только два (4 и 5) и там общие концепты
Аноним 26/04/15 Вск 04:03:18 #36 №468904 
Так вот поцоны. Что нужно знать о плюсах что бы тебя считали нормальным конкурентоспособным поцоном?
Аноним 26/04/15 Вск 04:06:14 #37 №468905 
>>468904
Язык до каждого ключевого слова + STL + Boost + Qt + какая-то предметная область (численные методы, сети, графика) + большая часть основных алгоритмов (сортировки, графы, это всё).
Аноним 26/04/15 Вск 04:41:59 #38 №468907 
>>468905
а вот всякие VSC++ норм или хуйня?
Аноним 26/04/15 Вск 05:17:41 #39 №468909 
>>467478
> Всегда ли двоичное представление положительных чисел для знаковых и беззнаковых типов совпадает? Или возможно "implementation defined"?
В стандарте такого нет. Единственно что они (типы) будут одинакового размера.
Аноним 26/04/15 Вск 05:19:20 #40 №468910 
>>468799
Ну ты и мразь.
sageАноним 26/04/15 Вск 08:39:04 #41 №468926 
Порвавшихся спермодетей полон тред.
Аноним 26/04/15 Вск 11:28:47 #42 №468949 
>>468926
Уди и одним станет меньше.
Аноним 26/04/15 Вск 11:31:27 #43 №468950 
Сап, аноны.
Помогите с чтением из файла.
У меня записывается туда 8 структур по 4 строки и разделяются пробелами.
Как считать из файла каждую строку в новую переменную и после считывания последнего элемента перескочить через строку?
Аноним 26/04/15 Вск 11:50:40 #44 №468952 
14300382405310.jpg
>>468949
>Уди
Так и сделаю.
Аноним 26/04/15 Вск 12:05:31 #45 №468955 
Но вед гцц намного лучше поддерживает стандарты плюсов, чем мсвц.
sageАноним 26/04/15 Вск 12:33:26 #46 №468960 
>>468949
Удить я буду своим спиннингом в очке твоей мамаши. Только как бы сифилис не поймать.
Аноним 26/04/15 Вск 13:18:11 #47 №468967 
>>468960
ты ещё не знаешь на что подписываешся :D
Аноним 26/04/15 Вск 13:35:06 #48 №468971 
>>468950
Как ты их туда записываешь?
Аноним 26/04/15 Вск 13:36:00 #49 №468972 
>>468905
+ многопоточность.
Аноним 26/04/15 Вск 13:57:37 #50 №468986 
>>468905
а вот что годного есть по бусту и многопоточности?
Аноним 26/04/15 Вск 14:06:28 #51 №468990 
>>468986
Про крестовую многопоточность можно почитать у:
http://www.amazon.com/C-Concurrency-Action-Practical-Multithreading/dp/1933988770
Ещё есть:
http://www.amazon.com/Introduction-Parallel-Programming-Peter-Pacheco/dp/0123742609

А у буста есть документация.
Аноним 26/04/15 Вск 14:07:20 #52 №468991 
>>468971
С клавиатуры.
Разделяются не пробелами, а пустой строкой
Аноним 26/04/15 Вск 14:12:07 #53 №468997 
>>468991
С клавиатуры хуячишь байты в файлы? Пример файла то приведи, блджад, нихуя не понятно, чего ты хочешь.
Аноним 26/04/15 Вск 14:19:36 #54 №468998 
Накидайте что надо знать, чтобы на собеседования плюсоразрабочиком ходить? Пишу сейчас на плюсах в НИИ, но с деньгами совсем плохо — скоро придётся менять работу, похоже, буду подтягиваться
Аноним 26/04/15 Вск 14:26:40 #55 №469000 
>>468997
С клавиатуры ввожу несколько строчек:
Фамилия, дата рождения и т.д...
Записываю их в txt файл.
После этого мне нужно считать из файла эти данные и записать их в переменные.
Аноним 26/04/15 Вск 15:05:16 #56 №469015 
>>468998
ВИРТУАЛЬНЫЙ ДЕСТРУКТОР
Аноним 26/04/15 Вск 15:52:46 #57 №469032 
>>468998
ебанутые вопросы по памяти:
- в чем причина замены std::auto_ptr на std::unique_ptr
- разница между указателем на функцию и указателем на функцию-член-класса
- обеснить работу dynamic_cast, для чего он нужен, когда он может работать и как его можно поломать
- обеснить работу хеш-сетов (std::unordered_set)
- найти ошибку:
int x[100];
for (int p = x; p != x+sizeof(x); ++p)
p = 0;
Аноним 26/04/15 Вск 16:39:28 #58 №469045 
>>469032
А этими всеми стандартными умными указателями в реальной работе правда пользуются?

А в коде ошибка в том, что sizeof(x) нужно разделить на sizeof(int) (ну или просто написать p != x + 100) - компилятор при арифметических операциях над указателями учитывает за нас его тип и сам домножает числа на sizeof(тип).
Аноним 26/04/15 Вск 16:45:00 #59 №469047 
>>469045
> правда пользуются?
Да, удобно же. Хотя некоторые компании намеренно отказываются от всяких STL.
Аноним 26/04/15 Вск 16:50:35 #60 №469050 
>>469047
>Хотя некоторые компании намеренно отказываются от всяких STL.
Я вот об этом часто читал, мол они даже сами себе контейнеры пишут.
Аноним 26/04/15 Вск 16:52:19 #61 №469053 
>>469050
Чаще аллокаторы кастомные, говорят, что в гейдеве часто так делают при разработке двигла.
Но откуда мне знать, я же студент.
Аноним 26/04/15 Вск 16:55:32 #62 №469054 
>>469053
Я тоже.
Аноним 26/04/15 Вск 17:11:11 #63 №469057 
>>469015
Ну это просто
>>469032
За вопросы спасибо, пошёл разбираться с указателями, остальное лёгкое.
int x[100]; for (int p = x; p != x+100; ++p) p = 0;
Мне интересны в первую очередь не вопросы, а именно знания — ходовые фреймворки (я кроме буста ничем никогда не пользовался), типовые задачи, которые возникают на работе, инструменты (valgrind сейчас в ходу?) и.т.п.
>>469053
> Чаще аллокаторы кастомные, говорят, что в гейдеве часто так делают при разработке двигла.
Да, действительно правда. Наш кастомный аллокатор std::map по производительности выше стандартного то ли на четыре порядка, то ли на пять.
Аноним 26/04/15 Вск 17:11:56 #64 №469058 
>>469057
> int x[100]; for (auto p = x; p != x+100; ++p) p = 0;
Аноним 26/04/15 Вск 17:12:37 #65 №469059 
>>469058
Проклятая вакаба сожрала все звёздочки. Ещё рядом с p последним одна есть.
Аноним 26/04/15 Вск 17:18:11 #66 №469061 
>>469050
Яндекс, насколько я знаю, что-то там свое пилил. Но как-то у них все через жопу там.


Олсо, я обещал рассказать про КРОКовский семинар, который я посетил в среду.

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

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

Доставило, что у них есть свой фреймворк. Вообще у них весь процесс поставлен на поток. Прототип программы они клепают на своем фреймворке чуть ли не мышкой, показывают заказчику, а потом уже начинают наращивать функционал.

Автоматическая сборка, тестирование -- вот это все. Даже некоторые проекты сбраывают заказчику, а он, в свою очередь, уже у себя их собирает и разворачивает.

Дико припекло от того, что они пишут исключительно на C#/Java, аргументируя это тем, что сейчас куда важнее удобство разработки, чем скорость работы программы. C++ они, конечно, тоже используют, но очень мало. Специфичные задачи типа распознавания пикч.

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

Офис у них пиздат. Можно было по нему гулять, чем мы и занялись. Автоматы с дешевыми снеками, пиздатенькая столовая и прочие плюшки. Хотя в офисе довольно жарко было. Угощали компотом, чаем и булочками.
Аноним 26/04/15 Вск 17:22:24 #67 №469064 
>>469061
> он обычно пяток языков знает
Вот ненавижу подобные формулировки, что значит "знает пяток"? Где границы того, что все они называют знанием технологии? Умение применять её на практике? Знание тонкостей работы платформы, о которых все вспоминают реже раза в год? Всё вместе?
Аноним 26/04/15 Вск 17:25:19 #68 №469065 
>>469064
Вот у меня от этого и полыхнуло. Я вот правил скрипты на bash, ruby. Писал программки на pascal, basic, python. Пилил сайты на php, дописывал к ним простенькие модули на Javascript, jQuery.

А ещё я один раз смотрел учебник Java и гонял примеры.

А значит ли это, что я знаю 8 ЯП + C++, ведь я на нем всякую лабуду пишу.
Аноним 26/04/15 Вск 17:27:04 #69 №469068 
>>469061
>Дико припекло от того, что они пишут исключительно на C#/Java, аргументируя это тем, что сейчас куда важнее удобство разработки, чем скорость работы программы.
Но ведь это здраво для бизнеса - какая разница, на чем рисовать окошки.
>ну в любом случае, когда студент приходит на собеседование, то он обычно пяток языков знает
Я в своём ВУЗе как минимум на пяти языках всякие императивные хелловорлды в течение семестра на каждый язык писал, лол.
Аноним 26/04/15 Вск 17:30:38 #70 №469069 
>>469068
>всякие императивные хелловорлды
Что это такое?

>Но ведь это здраво для бизнеса - какая разница, на чем рисовать окошки.
Meh. Это усложняет мне жизнь, ибо я хотел бы устроиться C++ бабуином.
Аноним 26/04/15 Вск 17:30:41 #71 №469070 
>>469065
Подобная фигня, только без веба. Тоже моделировал разные физические процессы на разных языках, кодил всякую обработку сигналов и изображений. За всё время обучения успел покодить на: C/C++, C#, Java, Scala, Haskell. С использованием всяких Qt, CUDA/OpenCL, Boost, OpenCV. Но понимаю, что для рынка вообще не представляю никакого интереса. Пишу диплом и думаю, что походу придётся преподавать какую-нибудь никому не нужную физику или переучиваться.
Аноним 26/04/15 Вск 17:35:25 #72 №469072 
>>469070
Ну я сел за написание ботнета. Поговаривают, что достаточно прибыльно. Ну и буду на собеседования ходить. Тут анончик писал, что таки устроился.

Олсо не смог ответить ни на один вопрос отсюдова >>469032 , так что дохуя чего надо будет изучить.

Наткнулся тут на какую-то пасту, где анон писал о том, что зря тратил время на учебники. Он писал всякие конспекты и пытался все учить. Сам так делаю, блядь. Сижу теперь озадаченный.
Аноним 26/04/15 Вск 17:45:35 #73 №469073 
>>469069
>Что это такое?
laba1.f90, laba2.cpp и laba3.java со всякими физическими и не очень задачками физфак же.
>Meh. Это усложняет мне жизнь, ибо я хотел бы устроиться C++ бабуином.
С++ бабуины не нужны, а быть Java/C# бабуином в 100 раз проще.
>>469070
Нужен, братишка, еще как нужен. http://isi.nfsoi.org/ http://isi.nfsoi.org/tasks
Аноним 26/04/15 Вск 17:52:04 #74 №469076 
>>469073
>С++ бабуины не нужны
Ну я, например, не очень в математике шарю. ВУЗ у меня специфичный, поэтому упора на математику нет. Такие дела. А я так понимаю, что сейчас на C++ никто не пишет без применение каких-то мат. залуп, да?
Аноним 26/04/15 Вск 17:53:44 #75 №469077 
>>469076
да почему же?
Я вот сферу деятельности немного менять планирую, например, этим летом и на плюсовика планирую устариваться, пока что сам подтягиваю знания по плюсам потихоньку, уверен что куда-нибудь да устроюсь.
Аноним 26/04/15 Вск 18:02:28 #76 №469078 
>>469077
Ну. Где нужен С++? Там где нужно что-то быстро вычислять. Ну или в игорях во всяких. В этих областях математики, наверное, немерено. Я ничего против неё, конечно, не имею, но мне нужно время, чтобы освоить её, причем самостоятельно.

А львиная доля всякого ынтерпрайза на всяких Java/C# пишется.
Аноним 26/04/15 Вск 18:05:01 #77 №469079 
>>469078
не обязательно связано с математикой. просто пройдись по вакансиям с++ на hh, сам удивишь, с математикой тут2 варианта обычно 1) игрострой 2) наука, но в ней обычно насрать на каком языке ты пишешь и какой знаешь, потребуется - выучишь
Аноним 26/04/15 Вск 18:10:29 #78 №469083 
>>469061
>что сейчас куда важнее удобство разработки, чем скорость работы программы
Вся суть крестоблядей. Оказывается нужно быстро код писать, а не искать утечки памяти. У меня так же пекло до момента когда я начал использовать буст и кутэ.
Аноним 26/04/15 Вск 18:40:20 #79 №469094 
>>468625
Парни, есть реквест:
В текстовике Пример строки:
“\033[31mThis text is red, \033[34mand this text is blue.”
Вывод:
Красным: This text is red, синим: and this text is blue.
Код, который написал я:
http://pastebin.com/dMDGsqzD
Проблема в том, что почему-то в массив пишутся совсем не те значения х, которые я предполагал => консоль не красится. Вместо следующими за [ — 3 и 1, я получаю два хуя, хранящихся в массиве - с подливой и без. Соответственно, я неправильно передвигаюсь по элементам массива (элемент x+1 нужно записывать как-то иначе?) или в чем дело?
Аноним 26/04/15 Вск 18:53:41 #80 №469101 
>>469078
Еще забыл поддержку различного сорта громадных энтерпрайдов, написанных на плюсах и которые переписывать в высшей степени нерентабельно.

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

В многих других крупных компаниях также -- написано какое-нибудь крупное приложение на плюсах, его нужно поддерживать, расширять, наполнять фичами. Переписывать его целиком на более современный язык дорого. Вот в такие компании с++ разработчики активно требуются. И их довольно много.
Аноним 26/04/15 Вск 18:59:12 #81 №469104 
>>469094
Канонический быдлостуденческий говнокод-франкенштейн, собранный из кусков чужих лаб с фрагментами собственного уродства.

Вообще нихуя непонятно, что ты даже пытаешься сделать. Зачем ты инкрементируешь считанный символ? Ты вообще понимаешь, что строчка x++; не читает следующий символ из файла, а просто увеличивает значение символа на единицу?
Аноним 26/04/15 Вск 19:01:20 #82 №469105 
>>469104
>Канонический быдлостуденческий говнокод-франкенштейн, собранный из кусков чужих лаб с фрагментами собственного уродства.
проиграл, пеши есчо
Аноним 26/04/15 Вск 19:17:27 #83 №469109 
>>469101
Что-то мне подсказывает, что это гей-шлюховство от программирования. Хотя легаси есть везде, но это пиздец.
Аноним 26/04/15 Вск 19:17:55 #84 №469110 
>>469104
Ок, как читать не следующий символ, а, например, символ через 5 сиволов?
Аноним 26/04/15 Вск 19:28:10 #85 №469117 
>>469110
Прочитать пять символов и оставить пятый.
Аноним 26/04/15 Вск 19:31:21 #86 №469119 
>>469110
http://ideone.com/FYK1ry
Аноним 26/04/15 Вск 19:33:12 #87 №469121 
>>469119
Бля, вот так: http://ideone.com/FYK1ry
Аноним 26/04/15 Вск 19:39:21 #88 №469124 
>>469121
Ну а так, наверное, вообще идеально: http://ideone.com/FYK1ry
Аноним 26/04/15 Вск 19:41:03 #89 №469126 
>>469124
Хотя не, кое-что забыл: http://ideone.com/FYK1ry
Аноним 26/04/15 Вск 19:54:24 #90 №469132 
>>468904
косвенные обращения
как накладывать структурки на память
замена рекурсии
+ ну и собственно прикладную область
Аноним 26/04/15 Вск 19:57:22 #91 №469134 
>>468998
как развернуть односвязный список
сортировка пузырьком без ошибок
Аноним 26/04/15 Вск 20:04:07 #92 №469138 
>>469126

Пиздец говнокод. Ты новичок?
Аноним 26/04/15 Вск 20:31:04 #93 №469161 
>>469138
А как надо?
Аноним 26/04/15 Вск 20:44:35 #94 №469171 
>>469134
Ну это вообще днище. Нас на втором курсе это все учили делать.

>>468998
Исходя из моего опыта хождения по собеседованиям спрашивают обычно следующее (но специфика очень сильно зависит от конкретной предметной области и спектра решаемых задач):
1. Понимание принципов ООП, умение внятно их описать и объяснить, зачем они нужны.
2. Знание основных STL-евских структур данных и алгоритмов. Понимание, чем отличаются контейнеры, каким образом данные в этих контейнерах хранятся.
3. Понимание, что такое О-символика, каково асимптотическое время выполнения базовых операций над контейнерами и почему вызывать std::sort для std::list -- плохая идея.
4. Знание основных алгоритмов сортировки, поиска, алгоритмов на графах, строках, умение внятно объяснить, как работают хеш-таблицы и основные деревья поиска.
5. Глубокое знание синтаксиса и особенностей языка. Канонический вопрос про виртуальный деструктор, понимание как реализован полиморфизм в языке, что такое таблица виртуальных функций, и т.п..
6. Понимание процесса сборки программы: компиляции, линковки. Что такое объявление и определение функции/переменной, для чего нужны заголовочные файлы, почему определение шаблонной функции нельзя поместить в .срр файл, оставив объявление в заголовочном.
7. Знание основ представления целых и вещественных чисел в памяти, стандарт IEEE 754, знание основ машинной арифметики, прямой, обратный, дополнительный код.
8. Знание базовых паттернов проектирования (синглтон, визитор и т.д., открываешь банду четырех и вперед по содержанию).
9. Понимание основ многопоточности. Что такое мьютекс, критическая секция, read/write mutex, promise/future.
Это так, навскидку. Может, еще чего вспомню, добавлю.
Аноним 26/04/15 Вск 20:55:10 #95 №469176 
http://pastebin.com/zPkaz19K
Почему компилятор не кричит о несоответствии типов и почему через указатель на B вызывается функция A?
Аноним 26/04/15 Вск 20:58:21 #96 №469180 
>>469171
то что
>на втором курсе это все учили делать
совсем не значит, что ты напишешь это на бумажке на собеседовании
Аноним 26/04/15 Вск 20:59:20 #97 №469181 
>>469180
>напишешь это на бумажке на собеседовании
Как с этим бороться? Вот не могу вообще без компьютера думать, только обсуждать что-то
Аноним 26/04/15 Вск 21:05:33 #98 №469183 
>>469180
Мне приходилось аналог сортировки слиянием писать на одном из собеседований.
А вообще, на ЕГЭ даже заставляют на бумажке писать довольно непростую (для школьника) программу. Так что взрослый дядя, претендующий на свои 50+к в месяц, уж должен уметь такие простые вещи как сортировки без ошибок писать.

>>469181
Практика. Берешь и пишешь простые вещи на бумажке. Начни с тех же сортировок, бинарного поиска.
Аноним 26/04/15 Вск 21:06:29 #99 №469185 
>>469176
>Почему компилятор не кричит о несоответствии типов
Потому, что ты вызываешь статик каст, лол. Попробуй использовать неявное приведение типов - компилятор ругнется.
>почему через указатель на B вызывается функция A
Потому, что у тебя объект как был класса A, так и остался A - ты преобразовал лишь указатель.
Алсо зачем вообще пихать в указатель класса наследника ссылку на объект класса родителя?
Аноним 26/04/15 Вск 21:07:32 #100 №469186 
>>469176
> через указатель на B вызывается функция A?
Потому что в в vtable указатель на метода A.
А вот по поводу хуиты со static_cast походу в стандарт лезть придётся.
Аноним 26/04/15 Вск 21:15:19 #101 №469191 
>>469176
> Почему компилятор не кричит о несоответствии типов
По твоему компилятор должен проанализировать весь твой код и понять, что у тебя по указателю на A лежит на самом деле экземпляр А, а не B?
Static_cast в отличие от dynamic_cast'а не производит проверок на реальное соответствие типа. Как можно догадаться из названия, он выполняется на этапе компиляции, поэтому он небезопасен.
Когда ты пишешь static_cast<B*>(a), ты как бы говоришь компилятору "слушай, братан, тут указатель a полюбому будет указывать на экземпляр класса В, поэтому не заморачивайся, а просто сделай приведение типа".
Аноним 26/04/15 Вск 22:46:52 #102 №469249 
>>469181
суть теста "написать Х на бумажке" --- проверить, не напиздел ли кандидат в своем резюме и он вообще не знает как программировать.
собственно тестировать этот кусок кода никто не будет и мелочи выковыривать не будут; могут только докопаться до важных граничных моментов --- например, в двоичном поиске или quicksort случай когда элементов один или два (там приколы с округлениями, если коряво написать, то можно зациклиться).

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

>>469183
из реально ебанутого случая --- написать итератор по иерархическому дереву (типа дерева каталогов), который обходит все элементы дерева по одному разу

>>469191
тут нужно аккуратнее между тонкостями static_cast и reinterpret_cast, ты описываешь почти reinterpret_cast

>>469186
static_cast делает преобразование между двумя такими типа, для которых можно провести единственную цепочку по иерархии наследования либо существует оператор преобразования

в случае примера происходит т.н. upcast, т.е. преобразование от базового класса к производному
static_cast не может сделать преобразование например между классом A и int, т.к. нет оператора преобразования

также static_cast не может преобразовать от базового класса к последнему потомку в ромбе множественного наследования: когда есть class A; class B: public A; class C: public A; class D: public B, public C. в этом случае преобразование от указателя на A к указателю на D (и наоборот) невозможно ввиду того, что не понятно по какому пути производить преобразования
Аноним 26/04/15 Вск 23:21:55 #103 №469260 
Товарищи, есть базовый класс, есть много разных наследников. Есть ли способ, кроме dynamic_cast, в рантайме определять с каким именно из наследников мы имеем дело? dynamic_cast мне не нравится, потому что проверка в этом случае - несколько побочный эффект, а значит это немного не для моих целей инструмент. Более осязаемая причина: он не умеет работать с константными переменными.
Аноним 26/04/15 Вск 23:23:34 #104 №469261 
>>469260
Ах, да, все наследники имеют используются для хранения всякой всячины, поэтому виртуальные функции ничего не решат, мне нужно именно понимать, кто передо мной.
Аноним 26/04/15 Вск 23:25:17 #105 №469264 
>>469260
typeid и прочие костыли. Обычно если тебе надо знать точный класс, то это хреновая архитектура.
Аноним 26/04/15 Вск 23:28:49 #106 №469265 
>>469249
>реально ебанутого случая
А что там ебанутого? Обычный bfs или dfs.
Аноним 26/04/15 Вск 23:29:31 #107 №469266 
>>469264
Это ООП, дружок. typeid не поможет, я имею дело с объектом базового класса. typeid определяет класс с точностью до буковок.
Аноним 26/04/15 Вск 23:34:42 #108 №469269 
>>469265
не, суть в том, чтобы цикл
for (TreeIterator it = fs.begin(); it != fs.end(); ++it)
cout << *it << endl;
печатал бы имена всех файлов

а bfs/dfs --- это рекурсивный обход
Аноним 26/04/15 Вск 23:44:28 #109 №469272 
>>469269
Можно без рекурсии, если стэк юзать.
Как-то так должно быть

std::stack<TreeIterator> stack;
stack.push(root);
while (!stack.empty())
{
auto node = stack.top();
stack.pop();
std::cout << node->getName() << std::endl;
for (auto it = node->getChilds().begin(); it != node->getChilds().end(); ++it)
{
stack.push(*it);
}
}
Аноним 26/04/15 Вск 23:44:59 #110 №469274 
>>469269
Ну правильно. Внутри итератора рекурсивный обход, снаружи он печатает имена всех файлов.
Аноним 26/04/15 Вск 23:46:17 #111 №469275 
>>469260
http://cpp-reference.ru/patterns/behavioral-patterns/visitor/
Аноним 26/04/15 Вск 23:49:33 #112 №469276 
>>469264
Это называется "в С++ нет рефлексии".
Аноним 26/04/15 Вск 23:55:35 #113 №469279 
>>469260
class A
{
public virtual std::string getType() { return "A"; }
};

class B
{
public virtual std::string getType() { return "B"; }
};
Аноним 26/04/15 Вск 23:59:06 #114 №469281 
Снова превозмогающее быдло в треде.
Быстрее ли программы, связанные с библиотеками статично, программ, что связанны с библиотеками динамически? Или же во втором случае медленнее работает только первое обращение к какой-нибудь функции, а далее различий нету никаких?
Аноним 27/04/15 Пнд 00:00:01 #115 №469282 
>>469279
Ужасное решение, как минимум потому что не использует систему типов, а реализует какой-то самопальный протокол поверх языка, вследствие чего будет работать очень медленно и ненадежно, не говоря уже о том, что реализовывать это придется очень коряво и с поддержкой будет не меньше проблем.
Аноним 27/04/15 Пнд 00:02:51 #116 №469284 
>>469275
Вот с этим, попробую разобраться, спасибо.
Аноним 27/04/15 Пнд 03:30:36 #117 №469312 
>>469282
> кресты
> система типов
Топ кек
Аноним 27/04/15 Пнд 07:02:19 #118 №469319 
>>468955
> Но вед гцц намного лучше поддерживает стандарты плюсов, чем мсвц.
https://www.youtube.com/watch?v=zChEQuhK09M
Аноним 27/04/15 Пнд 07:06:31 #119 №469321 
>>469171
Кажется, я стал гораздо меньше бояться собеседований. Это дело я знаю достаточно неплохо. Спасибо.
>>468998
Аноним 27/04/15 Пнд 08:01:18 #120 №469326 
>>468903
>между 11 и 14 выбирать сразу 14
В чём отличие 14 от 11?
Аноним 27/04/15 Пнд 08:02:58 #121 №469327 
14301109788910.jpg
>>469281
А сели первое обращение медленнее, не значит ли, что медленнее работа с динамическими библиотеками вообще?
Аноним 27/04/15 Пнд 08:03:39 #122 №469329 
>>469327
>сели
>если
Аноним 27/04/15 Пнд 08:10:51 #123 №469331 
>>469326
Допиленный 11 по сути:
https://ru.wikipedia.org/wiki/C%2B%2B14
Аноним 27/04/15 Пнд 08:13:22 #124 №469333 
>>469331
Но спермопараша при этом 14 стандарт полностью начнёт поддерживать хуй пойми когда.
Аноним 27/04/15 Пнд 08:14:01 #125 №469334 
Кстати, вопросец. На en.cppreference.com не разобрался.

#include <fstream>
std::ifstream ifs;
ifs.open("text.txt");
bool fail_1 = !ifs;
bool fail_2 = !ifs.is_open();

Всегда ли (fail_1 == fail_2)? Если нет, то когда?
Аноним 27/04/15 Пнд 08:20:27 #126 №469338 
>>469334
Для тех, кому непонятно, что такое !ifs, это тоже что и ifs.fail()
Аноним 27/04/15 Пнд 08:28:56 #127 №469344 
>>469334
Не всегда:
http://www.cplusplus.com/reference/ios/ios/fail/
http://stackoverflow.com/questions/24097580/ifstreamis-open-vs-ifstreamfail
Аноним 27/04/15 Пнд 08:29:45 #128 №469345 
>>469161

По законам арифметики существует деление по модулю. С ним итерации пройдут за O(n), как в твоем варианте.

Не менее логичным вариантом будет прохождение каждых 4 индексов строки: http://ideone.com/5aY8ck

В итоге твой вариант пройдет полный цикл за n. Во втором варианте за n / 5.
Аноним 27/04/15 Пнд 08:41:41 #129 №469351 
>>469327
Ну вот есть у меня библиотека с парой контейнеров. Очень часто используется в основном приложении. Мне её динамической или статической делать? Будет ли разница заметна?
Аноним 27/04/15 Пнд 09:01:51 #130 №469358 
>>469345
>В итоге твой вариант пройдет полный цикл за n. Во втором варианте за n / 5.
Ты забыл учесть время которое тебе нужно для считывания в строку, а там О(n). В итоге у анона решение в один проход с константной памятью, у тябя два прохода (второй раз каждый пятый символ), плюс линейный расход памяти.

Аноним 27/04/15 Пнд 09:15:06 #131 №469363 
>>469344
Понятно, что в общем случае неравносильно. Но я спрашивал про конкретно мой пример:
1) создали поток;
2) открыли файл;
3) больше пока ничего не делали.

>>469334
Вот здесь они всегда равносильны или нет?
Аноним 27/04/15 Пнд 09:39:52 #132 №469368 
>>469358

Хотел написать, что в итоге берем худшее время, т.е n^1, но не стал уточнять.
Аноним 27/04/15 Пнд 14:07:41 #133 №469437 
14301328616100.png
Эй, аноны, скажите, это норма, или мне надо что-то пересмотреть в своем коде? Ибо последнее уже чёт вообще на пиздец смахивает.
Аноним 27/04/15 Пнд 15:09:42 #134 №469468 
Решил обмазаться ассемблером. Хочу написать сначала какую-нибудь простенькую программку, а потом проделать внимательно все из этого курса http://wasm.ru/wault/article/show/ollydbg01

Один вопрос, какой ассеблер делать и как в него вообще пидорится? Есть какая-нибудь IDE? Как вообще запускать программки на асм?
sageАноним 27/04/15 Пнд 15:19:28 #135 №469480 
>>469437
>QMap<QPushButton *, QString>
Что это за бред? Храни строку в каком-нибудь свойстве кнопки, например
btn->setProperty("myString", "хуй говно пизда");
sageАноним 27/04/15 Пнд 15:22:35 #136 №469483 
>>469468
>ашшемблер
Ты тредом ошибся.
Аноним 27/04/15 Пнд 15:26:29 #137 №469487 
>>469468
>какой ассеблер делать
Щито? Бери FASM, в нем много полезных фич.
>как в него вообще пидорится?
На том же васме можно найти туториал.
>Есть какая-нибудь IDE?
Нормальных не замечал.
>Как вообще запускать программки на асм?
Как и обычные программы, отличий-то нет.
Аноним 27/04/15 Пнд 15:57:03 #138 №469504 
>>469437
это смахивает на незнание/неумение в mvc
Аноним 27/04/15 Пнд 16:00:46 #139 №469506 
>>468625
няши, есть один код,
http://pastebin.com/RH5DQFQh
не понимаю как он работает,
объясните пожалуйста откуда берётся значение переменной b, и почему оно равно единице?
Аноним 27/04/15 Пнд 16:26:22 #140 №469509 
>>469506
http://cpp.com.ru/kr_cbook/ch5kr.html
Аноним 27/04/15 Пнд 16:30:06 #141 №469510 
>>469509
и всё-таки, откуда берётся переменная b, если она не передаётся как параметр? и почему эта переменная равна 1?
Аноним 27/04/15 Пнд 16:32:23 #142 №469512 
>>469510
[code lang="cpp"]int b[] = { 5, 2, 3, 1, 8, 6 };[/code]
Вот твой массив b, который объявлен глобально. Вот это и есть твоя переменная b.
Аноним 27/04/15 Пнд 16:35:38 #143 №469515 
>>469512
а почему её значение равно 1?
Аноним 27/04/15 Пнд 16:37:05 #144 №469516 
>>469515
Я тебе уже кинул ссылку здесь
>>469509
Берешь и читаешь, там все написано.
Аноним 27/04/15 Пнд 16:40:57 #145 №469518 
>>469515
С чего ты взял, что она равна единице?
Функция f возвращает не значение, а указатель. Мы передаем этой функции число 2, а она возвращает указатель на третий элемент массива b. Это эквивалентно выражению cout << b[0+2].
Аноним 27/04/15 Пнд 16:42:56 #146 №469520 
>>469515
Ты же сам определил функцию, которая возвращает УКАЗАТЕЛЬ на элемент массива. b[0+2] = b[2] = 3;
Аноним 27/04/15 Пнд 16:43:19 #147 №469521 
>>469518
Лел. Мочепараша тормозит.
Аноним 27/04/15 Пнд 17:30:48 #148 №469542 
>>469351
Я бы поставил на нет, да и вообще люблю линковать статически. Большинство крупных высокопроизводительных приложений это огроменные бинарники, куда динамически всё залинковано.
Скорее всего ты занят premature optimization.
Аноним 27/04/15 Пнд 17:31:57 #149 №469543 
>>469437
> Есть какая-нибудь IDE?
Visual Studio? Пиши вставки же. Не знаю, кто сейчас вообще на ассемблере пишет, компилятор ассемблерщикам давным давно в рот суёт, не в последнюю очередь из-за зоопарка платформ
Аноним 27/04/15 Пнд 17:32:35 #150 №469544 
>>469437
> мне надо что-то пересмотреть в своем коде?
Я бы начал со смывания в унитаз QT
Аноним 27/04/15 Пнд 17:33:48 #151 №469546 
>>469543
Я хочу просто отдавать отчет о том, что пишу на крестах. Маня-фантазия ОЧЕНЬ ОПТИМИЗИРОВАТЬ КОД у меня нет.
Аноним 27/04/15 Пнд 17:34:09 #152 №469547 
>>469543
>компилятор ассемблерщикам давным давно в рот суёт
Nope.
>не в последнюю очередь из-за зоопарка платформ
А с этим трудно спорить, кроссплатформенность - штука хорошая.
Аноним 27/04/15 Пнд 17:37:35 #153 №469548 
Есть такая залупа: http://pastebin.com/qDt8S1T8
Абсолютно разные по содержанию Elem(int), Elem(double), diffElem(int), и diffElem(double), но абсолютно одинаковые в плане синтаксиса Solution() и diffSolution() с точностью до замены первых двух функций на две последние. Как избавиться от копирования кода без лишних трудозатрат?
Аноним 27/04/15 Пнд 17:45:43 #154 №469550 
>>469547
> Nope.
Можешь привести минимальный пример, где ассемблер обгоняет icpc или даже просто реализацию на mkl? Ну хоть чутка?
Или хоть ссылку на какую-нибудь обоссанную статью на хабре?

Я так понимаю, после gotoh никто ничего подобного не вытворял, хотя люди явно пытались.
sageАноним 27/04/15 Пнд 17:48:00 #155 №469551 
>>469544
Я бы начал со смывания говна в твой рот.
Аноним 27/04/15 Пнд 17:50:10 #156 №469553 
>>469550
Хабр не читаю, но про то, что компиляторы частенько тупят с векторизацией, знаю.
MKL это интеловская математическая библиотека? Скорее всего, там тоже куча вставок. Утверждать не буду, ибо не видел.
Аноним 27/04/15 Пнд 17:57:39 #157 №469556 
>>469548
Два стула:
1. Указатели на функции или std::function
2. Паттерн:
http://cpp-reference.ru/patterns/behavioral-patterns/strategy/
Аноним 27/04/15 Пнд 17:58:52 #158 №469557 
>>469543
> компилятор ассемблерщикам давным давно в рот суёт

Напоминаю в очередной раз.
http://thedeemon.livejournal.com/49226.html?thread=581962
Аноним 27/04/15 Пнд 18:08:14 #159 №469563 
>>469551
Эта кьютеблядь порвалась, заносите следующую.
>>469553
> Хабр не читаю, но про то, что компиляторы частенько тупят с векторизацией, знаю.
С этим не борются ассемблерными вставками. С этим борются алиасингом, и написанием кода без выебонов, который вылавливает компилятор. И смыванием в унитаз GCC ещё. Пш-ш-ш-ш-ш.
> MKL это интеловская математическая библиотека? Скорее всего, там тоже куча вставок. Утверждать не буду, ибо не видел.
Периодически просачиваются куски кода на конференциях — не вставляют, как я понимаю. Даже если так, то вставки это инструмент уровня разработчика MKL, а не пользователя-программиста далеко.
>>469557
> Напоминаю в очередной раз.
В том и проблема, что раз очередной. Давай разберём по частям всё этим джентльменом написанное:
> MSVC8 (2006 год).
9 лет назад
> MSVC10 (2010 год).
5 назад
> Intel Compiler 7.1 (2003 год).
> Даем подсказку: <...> векторизует код ровно так же, как в примере с интринсиками. Укладывается в полсекунды.
12 лет назад
> Аналогичная подсказка MSVC всех версий ничего не дает, они продолжают разворачивать максимум по 4 итерации, никакого SSE.
Ну, параша и параша, MSVC годится только для отладки
> Intel Compiler 11 (2009 год). Одинарный цикл векторизует так же хорошо, как 7-й. В двойном цикле на этот раз догадывается хотя бы векторизовать внутренний, но тупит с выравниваниями, вставляя ненужный и неиспользуемый код по краям. 1 секунда.
6 лет назад. Векторизовал автоматически
> GCC 4.7.0 (2012 год). В двойном цикле полностью разворачивает внутренний, внутри imul, все как у intel 7. Те же 2 секунды. SSE? Не, не слышал. Если сделать цикл одинарным, сдюживает его векторизовать, но делает это плохо: вместо попарного сложения результатов умножения отдельно вычисляет верхние и нижние биты результатов, потом возится с перестановками и перепаковками байтов в регистрах. 1 секунда, вдвое хуже интела и варианта с ручной векторизацией.
Ой, ну про то, что GCC годится только для швабодки в срачельничек мы знаем. Хоть бы clang достали.

Мораль: этот джентльмен подтверждает мои тезисы.

Продолжим бичевание.
Господа, вы знаете, что на SSE свет клином не сошёлся? И что если интел векторизовал пять лет назад в SSE, то в этом году он будет векторизовать уже в AVX, причём кроссплатформенно, т.е. если есть AVX, то программу сбренчит на AVX, если нет, то на SSE, и вставочки будут у icpc сосать, причмокивания?
А знаете, что если это говно выполнять не велосипедируя, а используя MKL (или любой приличный аналог), то он будет задействовать не только векторизацию, но параллелизм, и кеш блокинг? Нет, не знаете? Я вас просветил.
sageАноним 27/04/15 Пнд 18:09:37 #160 №469564 
>>469563
Только в твоем байтоебском манямирке.
sageАноним 27/04/15 Пнд 18:16:14 #161 №469570 
>>469563
>эти манёвры
Аноним 27/04/15 Пнд 18:17:53 #162 №469572 
>>469556
Нда, самый просто вариант в моей laba1.cpp это именно указатели.
Аноним 27/04/15 Пнд 18:22:03 #163 №469574 
>>469564
>>469570
Вот так пропагандируешь людям не байтоёбствовать, пропагандируешь, а они тебя байтоёбом клеймят. Стыдись, Qt-мразь, самоедствуй, или показывай аргументированно где я не прав.
sageАноним 27/04/15 Пнд 18:26:42 #164 №469578 
>>469574
Ты не прав в том, что не привел никаких аргументов касательно кьюта. На конпеляторное байтоебство не я отвечал, мне это не интересно.
Аноним 27/04/15 Пнд 18:39:26 #165 №469590 
14301491661200.png
Аноны, помогите.
Аноним 27/04/15 Пнд 18:55:23 #166 №469598 
>>469578
Хорошо. Моя аргументация относительно того, что кьют — говнина ебаная для неудачников базируется на двух китах. Внимай.
1) Кьют плох, как гуёвая библиотека. Плюсы (как и любой другой язык без сборки мусора) не предназначены для написания гуёв. От слова совсем. Там нельзя естественным образом использовать современные гуёвые парадигмы, код пишется очень медленно и глючный, IDE очень плохие. Единственное, зачем ещё держат кьют — кросплатформенность, но и там он весьма не очень. Кроссплатформенность достигается через еблю, тяжёлые либы, глючит под виндой, где сидит 99.99% гуепользователей... Программисты на Qt относительно дорогие, и в то же время, макаки, которые не отличают друг от друга компиляторы. Удел кьюта в качестве библиотеки — поддержка древнего легаси с ненавистью к своей потерянной жизни (т.е. для неудачников). Одна макака с решарпером заменяет целую группу кьютобезьян с тимлидом.
2) Для всего остального кьют не годится. Есть библиотеки, которые не требуют анального кьюторабства, легко заводятся с разными компиляторами, быстро изучаются и не навязывают свою парадигму программирования. Разонравилась библиотека? Выкинул из проекта за пару дней и заменил на конкурента. Всё, ты в дамках. А гуи напишут специально обученные люди, на чём-нибудь поприличнее. Как и любая монструозная свалка кьют обречён на гниение и вымирание.

Так лучше?
Аноним 27/04/15 Пнд 19:02:12 #167 №469602 
>>469590
Что такое "Начальное приближение корня"?
И как найти корень?
ЯННП
Аноним 27/04/15 Пнд 19:08:54 #168 №469607 
>>469590
Кек. http://github.com/nukede/lobster
Дико извиняюсь за тот говнокод. Готовлю обновления, где хоть чуть-чуть прибрался, но тем не менее, в этой программе есть реализация поиска корня методом простых итераций.

Правда для систем линейных уравнений, но все сводится к трем операциям
1. Построить итеративную форму
2. Проверить сходимость ряда
3. Начать поиск приближения.

Олсо, ты можешь загуглить другие методы поиска приближенного корня.
Аноним 27/04/15 Пнд 19:09:19 #169 №469608 
>>469602
> Что такое "Начальное приближение корня"?
Это число, достаточно близко аппроксимирующее решение уравнения
> И как найти корень?
Методом просто итерации. Что это такое написано в Википедии (не проверял, но уверен)
Аноним 27/04/15 Пнд 19:12:50 #170 №469610 
>>469608
>Это число, достаточно близко аппроксимирующее решение уравнения
То есть мне его брать за корень, или зачем вообще оно дано?
Аноним 27/04/15 Пнд 19:13:22 #171 №469611 
>>469602
>Что такое "Начальное приближение корня"?
Числа, с которых стартуешь приближать. В твоём случае это сначала 0, потом 11.
>И как найти корень?
ans = f(f...(f(x)))) (применяешь n раз), где f(x) = 0.25 * (1 - 2x^3) (выражаешь из уравнения x).
Аноним 27/04/15 Пнд 19:15:13 #172 №469613 
>>469607
Что это за ёбаный монстр? Что эта программа делает?
Аноним 27/04/15 Пнд 19:16:23 #173 №469615 
>>469610
Тебе его брать как начало последовательности ответов. Чем больше ты проитерируешь - тем точнее будет последний элемент последовательности. Зачем тебе это вообще?
Аноним 27/04/15 Пнд 19:16:59 #174 №469617 
>>469610
> То есть мне его брать за корень,
За первое приближение
> или зачем вообще оно дано?
Чтобы метод простой итерации сошёлся в два разных значения. Если начинать из произвольной точки то будет сходиться медленно, и, возможно, в одну и ту же точку, хотя корней тут может быть аж три.
Аноним 27/04/15 Пнд 19:18:01 #175 №469619 
>>469615
А зачем решать СЛАУ методом простой итерации (кроме как laba5?)
Давно хотел с тобой поговорить, я вообще люблю решать СЛАУ
Аноним 27/04/15 Пнд 19:19:53 #176 №469622 
>>469613
>Что это за ёбаный монстр?
Да. Я уже сказал, что лютый говнокод, постараюсь его обновить в ближайшее время.

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

В программе нужно запилить нормальную многопоточность, переписать очередь (а то она уж совсем ублюдски реализована), ну и генерацию файла адекватней запилить.
Аноним 27/04/15 Пнд 19:24:25 #177 №469624 
>>469611
>>469617
Один хер не понимаю об элементе последовательности, как он вообще находится, куда его пихать в программу?
У меня в задании ведь нужно корень найти и уточнять его, пока модуль разности текущего корня и предыдущего больше заданной точности.
Или я не так все понимаю?
>>469615
Лаба же.
Аноним 27/04/15 Пнд 19:27:21 #178 №469626 
>>469624
Ты погуглил про метод простой итерации? Скинь в тред список прочитанных тобою источников.
Аноним 27/04/15 Пнд 19:27:31 #179 №469627 
>>469624
Пиздос, я же тебе скинул готовую программу. Там есть класс SIM, в котором реализованы три необходимые функции. Хоть программа состоит из говна, да чего уж, даже этот класс немного смазан говном, но те три функции вполне неплохо описаны и выполняют свои задачи.

Препод не бугуртил, кстати.
sageАноним 27/04/15 Пнд 19:28:13 #180 №469628 
>>469598
Да, так лучше, спасибо. Теперь буду знать ключевые слова для автоскрытия.
Аноним 27/04/15 Пнд 19:28:24 #181 №469629 
>>469626
вики, хуева гора тем на cyberforum
Аноним 27/04/15 Пнд 19:29:53 #182 №469630 
>>469629
Почему ты меня игнорируешь?
Аноним 27/04/15 Пнд 19:30:43 #183 №469631 
14301522440000.jpg
>>469628
Пикрелейтед.
>>469629
> вики, хуева гора тем на cyberforum
Ссылками, ссылками. И выжимку в одно предложение из каждого источника. Этого от тебя препод ждеёт.
Аноним 27/04/15 Пнд 19:31:35 #184 №469634 
>>469627
>>469630
>>469607
Пытаюсь разобраться, пока не очень выходит.
sageАноним 27/04/15 Пнд 19:37:59 #185 №469636 
>>469631
Нет, кукарека, не засчитан. Аргументов то не было, только твои спермофантазии.
Аноним 27/04/15 Пнд 19:39:07 #186 №469638 
>>469636
Так ты аргументируй. Подсказываю:
> На самом деле, кьют хорошь, как гуёвая библиотека, и вот почему: ...
sageАноним 27/04/15 Пнд 19:41:02 #187 №469641 
>>469638
Только когда ты приведешь аргументы, а не свою точку зрения. Цифры, примеры, вот это все.
Аноним 27/04/15 Пнд 19:48:35 #188 №469644 
>>469641
Аргументы есть, слив засчитан, Qt объявляется обоссаным в этом треде до тех пор, пока не будет контраргументов или хоть детального разбора уже приведённых.
sageАноним 27/04/15 Пнд 19:54:22 #189 №469651 
>>469644
Ясно-понятно, как и ожидалось от кукареки. Пукнуть пукнул, а доказать не может.
Аноним 27/04/15 Пнд 19:55:52 #190 №469654 
>>469638
Потому, что какая-никакая, но мультипплатформа. Потому, что годные сигналы/слоты. Потому, что хорошая документация и удобно использовать.
Аноним 27/04/15 Пнд 19:58:37 #191 №469657 
>>469654
Какая-никакая кроссплатформенность везде, кроме мобильных устройств, достигается wine. При этом можно использовать другие фреймворки, с удобными IDE, написанной профессионалами документацией и, конечно, очень удобные. Сигналы/слоты с дополнительным шагом компиляции не очень нужны, для этого есть другие библиотеки, навскидку, буст.
Аноним 27/04/15 Пнд 20:02:08 #192 №469660 
>>469590
http://pastebin.com/YfCLbZMp
Какая-то хуйня получилась, которая к тому же не работает.
Аноним 27/04/15 Пнд 20:04:38 #193 №469662 
>>469598
> Моя аргументация относительно того, что кьют — говнина ебаная
> Кьют плох, как гуёвая библиотека.
> Плюсы (как и любой другой язык без сборки мусора) не предназначены для написания гуёв.
> нельзя естественным образом использовать современные гуёвые парадигмы,
> код пишется очень медленно и глючный
> IDE очень плохие.
> там он весьма не очень.
> тяжёлые либы,
> глючит под виндой...
> Программисты на Qt относительно дорогие,
> Одна макака с решарпером заменяет целую группу кьютобезьян с тимлидом.
> 2) Для всего остального кьют не годится.
> ...
> плохой потому что плохой
> сосёт потому что гавнина ебаная
> плохо зделали потому что тупа плоха
Аноним 27/04/15 Пнд 20:08:55 #194 №469664 
>>469660
http://ideone.com/s5xA1l
sageАноним 27/04/15 Пнд 20:09:07 #195 №469665 
>>469662
Вот и я ему намекаю на это, но экземпляр довольно упертый, долго еще маневрировать будет.
Аноним 27/04/15 Пнд 20:13:12 #196 №469670 
>>469664
Хотя не, эт хуйня какая-то.
Аноним 27/04/15 Пнд 20:13:57 #197 №469672 
>>469662>>469665
Где контраргументы, или указание на неправильность приведённых мной аргументов хоть? Учись у господина >>469657, он аргументирует.
Аноним 27/04/15 Пнд 20:21:16 #198 №469676 
>>469672
Это не контраргументы. Непонятно кем написанный wine блядь у него залог кроссплатформенности, ну охуеть теперь.
>можно использовать другие фреймворки
Ну можно, да. Можно и в жопу ябаться.
>с удобными IDE
Удобство у всех разное. Кому-то удобно и в емакс пёхаться.
>написанной профессионалами документацией
А кто, простите, документировал Qt? Школьники из 5б?
>сигналы/слоты не очень нужны
Ты не нужен, блядь.
>для этого есть другие библиотеки, навскидку, буст
Что лучше - использовать зоопарк библиотек или один Qt?
Аноним 27/04/15 Пнд 20:21:22 #199 №469677 
14301552821660.png
Как эту хуйню реализовать вообще?
Аноним 27/04/15 Пнд 20:23:53 #200 №469680 
>>469664
http://pastebin.com/VpNrxcRw
Вроде так, но хуй знает, правильно считает или не.
И что выводить нужно, x1 или x?
Аноним 27/04/15 Пнд 20:24:02 #201 №469681 
>>469677
Берёшь и реализовываешь.
Аноним 27/04/15 Пнд 20:26:10 #202 №469682 
>>469680
Открой еще раз ссылку, я там кое-что подправил, чтобы всё стало понятно даже дауну.
sageАноним 27/04/15 Пнд 20:30:45 #203 №469685 
>>469672
Тебе >>469662 все правильно написал. Контр-аргументы можно привести только на аргументы, опровергать пустобреха не вижу смысла.
Аноним 27/04/15 Пнд 20:33:09 #204 №469687 
>>469682
Так не работает ведь, сам попробуй запусти.
Вводишь любое e, результат не меняется.
+ В условии сравнивать с e нужно не x-f(x), а f(x)-x.
Аноним 27/04/15 Пнд 20:36:05 #205 №469689 
14301561651610.png
>>469687
лолвут? abs - это модуль, если чё.
Ну и да, на x_0=11 программа валится, ничего страшного в этом нет - тебе никто не гарантировал, что метод последовательных итераций сходится всегда.
Аноним 27/04/15 Пнд 20:38:27 #206 №469691 
>>469689
Вангую, что он просто прочитал пару статеек, нихуя не понял и требует от нас помощи. Я же написал, как реализуется задача.
1. Привести к итерационной форме
2. Проверить сходимость
3. Искать корни.
Аноним 27/04/15 Пнд 20:40:16 #207 №469692 
>>469691
У него лабы горят, сейчас же зачеты начинаются.
Аноним 27/04/15 Пнд 20:53:51 #208 №469697 
>>469691
Чувак, у меня уже дано ебаное уравнение, которое сходится.

>>469689
Первый x ведь 0.11 и дан в условии задачи
Аноним 27/04/15 Пнд 20:54:06 #209 №469698 
>>469677
например http://ideone.com/k2ALWc
Аноним 27/04/15 Пнд 20:56:34 #210 №469699 
14301573941570.png
>>469697
Даже если так - пошел нахуй отсюда, ты реально заебал.
Аноним 27/04/15 Пнд 21:02:35 #211 №469703 
Кто может разъяснить про Boost. На сколько эти либы востребованы в программистских работах? И стоит ли их заучивать?
Аноним 27/04/15 Пнд 21:06:35 #212 №469706 
>>469703
> востребованы в программистских работах
Да, несмотря на то, что выглядит в бусте всё очень уёбищно

> стоит ли их заучивать
Заучивать – нет, поглядеть и поиграться – да
Аноним 27/04/15 Пнд 21:28:59 #213 №469715 
>>469699
И еще, функция типа должна быть рекурсивной...
Аноним 27/04/15 Пнд 21:43:08 #214 №469721 
>>468625
Что за виртуальные функции? Какой смысл перед объявлением функции писать слово virtual и зачем нужно объявлять виртуальные функции или чисто виртуальные? чем они отличаются от просто виртуальных? в абстрактных классах если всё равно надо переопределять в подклассах?
Аноним 27/04/15 Пнд 21:50:43 #215 №469725 
>>469721
Открой любой учебник и прочитай про классы, наследование и виртуальные функции.
Аноним 27/04/15 Пнд 21:53:43 #216 №469732 
>>469725
прочитал. нихуя не понял. пришол сюда. зачем они? Что они делают? в двух словах пояснить возможно?
sageАноним 27/04/15 Пнд 21:56:37 #217 №469734 
>>469732
Мать твою в жопу ими ебут. Теперь катись на хуй.
Аноним 27/04/15 Пнд 22:31:28 #218 №469779 
>>469732
>>469721
Есть такая штука, которая называется полиморфизм, суть в двух словах: один интерфейс – одна реализация. Виртуальные функции – одно из средств реализации полиморфизма (полиморфизм подтипов).

> смысл перед объявлением функции писать слово virtual
Пример из вики ясно поясняет зачем:
http://goo.gl/ZafY7u

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

Надеюсь, что ты не обиделся на саженяшу, он у нас бывает не в духе.
А теперь пиздуй внимательно шерстить учебник, ты бы ещё хелло ворлд попросил объяснить.
Аноним 27/04/15 Пнд 22:32:19 #219 №469782 
>>469779
> один интерфейс – одна реализация
Обосрался, конечно же
один интерфейс – множество реализаций.
Аноним 27/04/15 Пнд 22:48:26 #220 №469799 
>>469779
Спасибо. Так ничего и не понял. Пошёл перечитывать учебник. Долго ты ООП учил?
Аноним 27/04/15 Пнд 22:53:14 #221 №469804 
>>469799
Я не учил, я лабы делал, с опытом приходит понимание. Делай задания, которые даются в конце глав. Какую книгу читаешь?
Аноним 27/04/15 Пнд 22:54:59 #222 №469807 
>>469799
Ты его просто так не поймешь, почитав учебник. Пиши код, пробуй и поймешь. У нас сейчас ООП только Ruby читают. 80% потока нихуя не понимают.
Аноним 27/04/15 Пнд 22:59:47 #223 №469809 
>>469807
> ООП только Ruby читают
Кек, это где такое происходит? Это первый ЯП, который вам показали?
Аноним 27/04/15 Пнд 23:04:01 #224 №469811 
14301650418930.png
>>469809
Yep. У нас очень мало этого. Поэтому препод сказал, что нужно максимум дать, а кресты объяснять будет слишком долго. И он охуенно правильно сделал, ибо никто-нихуя-не-понимает. Пик стронгли релейтед.

Но препод просто 10/10. У нас с ним две пары в неделю. На первой, он дает нам лекцию, где поясняет за всякие ништяки. Например, сегодня он рассказывал на переполнение буффера и какие могут быть проблемы. Хоть я это и так знаю, но все равно с интересом послушал, ибо он все качественно оформляет и доступно рассказывает.
Аноним 27/04/15 Пнд 23:09:32 #225 №469813 
>>469811
Ох уж это рашкообразование, нам наоборот всё разжёвывали и дали минимум, чтобы можно было чиселки в массивах складывать. Программирование длилось три семестра, последний при этом был выделен под изучение STL. Те, кто был минимально заинтересован, научились писать внятный код только к четвёртому курсу. Хотя у нас больше физическая специальность, но кодить требовали постоянно на других предметах.
Аноним 27/04/15 Пнд 23:11:15 #226 №469817 
>>469804
>>469807
Может пока вы тут учебник нормальный посоветуете? Читаю страуструпа, но он писал про книги которые объясняют ООП без привязки к конкретному ЯП. Это какие? Не могу найти.
Аноним 27/04/15 Пнд 23:14:02 #227 №469818 
>>469813
Ну у нас, к сожалению, упор сделан на языки - английский, немецкий. О чем я дико жалею, но с другой стороны языки нужны, да.

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

Хотя может быть, я буду когда-нибудь успешен и благодарен вузу. Олсо, препод по физике, пророчит мне зарплату под 9к ойро в гейропке и ставит в пример другими. А я горько усмехаюсь над ним, надеясь найти хоть какую-нибудь работу к окончанию вуза.
sageАноним 27/04/15 Пнд 23:14:14 #228 №469819 
Ну нахуя вы им отвечаете, пиздец. Это же дауны необучаемые, так нихуя и не поймут, дос тарости будут своими дегенератскими вопросами и лабами спамить.
Аноним 27/04/15 Пнд 23:14:35 #229 №469821 
>>469817
Освоение языка даст тебе минимальную базу ООП, конкретные книги про ООП читать потом будешь. Мне вот учебник Лафоре понравился, очень доступно для новичков объясняет.
Аноним 27/04/15 Пнд 23:15:32 #230 №469822 
Господи блядь, почему никто из этих тупорылых студентов не догадается в течение семестра читать какого-нибудь Лафоре - я за один первый семестр её прочитал, сделал 80% заданий, всё было ясно и понятно. И я блядь даже не на программистской специальности учусь. Про переполнение буФФера им на лекциях по С++ рассказывают, ну обосраться теперь. Нахуй вы живете?
sageАноним 27/04/15 Пнд 23:15:34 #231 №469823 
>>469819
>до старости
Сука АЖ ТРИСЕТ.
sageАноним 27/04/15 Пнд 23:16:48 #232 №469824 
>>469822
Давай вместе им в ротешник ссать, кто больше нассыт. Пссссс, догоняй.
Аноним 27/04/15 Пнд 23:18:08 #233 №469825 
>>469817
ООП тащемта любому нормальному человеку и так становится понятно, когда он пишет хоть сколько-нибудь код. Как и ФП, например.
Вот написал ты портянку, и думай как её отрефакторить. Если ты не совсем даун то быстро сообразишь, какие абстракции лучше всего подойдут.
Аноним 27/04/15 Пнд 23:20:10 #234 №469826 
>>469819
Дай ты людям шанс, этот то без лабы пришёл, можно и рассказать чуть-чуть а потом нахуй послать.
Всё равно в треде почти нихуя не происходит.

>>469818
Тут уж дрочить на самообразование приходится, у большинства так. У некоторых студентов бывает шанс свалить на работку к научруку, вот этот шанс желательно не проябывать.
Аноним 27/04/15 Пнд 23:21:40 #235 №469830 
>>469822
Двачую, был лучшим первые два курса по погроммированию. Тоже физическая специальность.
Аноним 27/04/15 Пнд 23:22:22 #236 №469831 
>>469819
Кек. Ну хоть какое-то разнообразие, а то я сейчас на праздниках начну всякое говно кодить и срать сюда охуительными вопросами. Олсо, мы так и не решили. Хочу захуячить клиент десктопный для вбыдлятни через API. OpenSSL и Sockets типа использовать, хочу опробовать boost.asio. Взлетит?

>>469822
Откуда такой бугурт? Ну далеко не программерская и не инженерная специальность. Тот парень, который спрашивал у меня за задачки, например, отлично шарит в английском и немецком языках. И ещё спортом занимается.

Да и годные лекции всегда годные, даже если какие-нибудь простые вещи рассказываю.
sageАноним 27/04/15 Пнд 23:26:07 #237 №469837 
14301663675240.png
>>469822
>Лафоре
Иди на хуй.
sageАноним 27/04/15 Пнд 23:27:38 #238 №469839 
>>469831
>Взлетит?
Из пушки по воробьям. Вот тебе пример использования апи, наговнокоженный за 15 минут в блокноте на жабаскрипте: https://ololoepepe.me/vktools/ Делать это все на крестах - тот еще изврат, вообще никакого смысла в этом нет.
>отлично шарит в английском и немецком языках. И ещё спортом занимается
Ну нихуя себе, умеет зубрить и прыгать на турничках. Прям мега достижения.
Аноним 27/04/15 Пнд 23:28:28 #239 №469840 
>>469837
На этапе изучения языка очень важно понимать разницу между всеми существующими компиляторами. Есть более веские причины считать Лафоре плохим учебником?
Аноним 27/04/15 Пнд 23:30:53 #240 №469844 
>>469837
Пердолик порвался
sageАноним 27/04/15 Пнд 23:31:10 #241 №469845 
>>469840
>На этапе изучения языка очень важно понимать разницу между всеми существующими компиляторами.
Это байтоебство высшей пробы. В идеале ты вообще не должен думать о компиляторе, а руководствоваться только стандартом.
sageАноним 27/04/15 Пнд 23:31:42 #242 №469847 
>>469844
>Эти проекции сперморебенка
Аноним 27/04/15 Пнд 23:32:07 #243 №469850 
>>469839
Ну так интереса ради, почему бы и нет? Ведь умение работать с сокетами и openSSL дохуя важный навык, нет?
Аноним 27/04/15 Пнд 23:32:20 #244 №469851 
>>469847
> пок пок не опустили совсем
Аноним 27/04/15 Пнд 23:33:42 #245 №469854 
>>469840
Эта глава вроде нужна, чтобы рисовать в консоли, лол.
Аноним 27/04/15 Пнд 23:33:43 #246 №469855 
14301668232910.jpg
>>469845
Аноним 27/04/15 Пнд 23:34:04 #247 №469857 
>>469850
Лол нет, нормальный программист сделает что-то вроде Http.get("https://..."), а не будет пердолиться с сокетами.
Аноним 27/04/15 Пнд 23:35:46 #248 №469861 
Аноны, а что вообще читать по теме сетевого программирования? Сокеты, хуёкеты, серверы и т.д.
Аноним 27/04/15 Пнд 23:37:06 #249 №469864 
>>469861
http://doc.akka.io/docs/akka/snapshot/scala/io-tcp.html
Аноним 27/04/15 Пнд 23:38:24 #250 №469866 
>>469857
А вдруг какой-нибудь сириус проект с сетевой йоблей? Я ведь в сторону C++ программирования двигаюсь.
Аноним 27/04/15 Пнд 23:40:27 #251 №469867 
>>469866
Сириус проекты используют стандартные протоколы
sageАноним 27/04/15 Пнд 23:40:44 #252 №469869 
>>469850
Отчасти >>469857 прав, это все байтоебство, это скучно и ведет к написанию факториалов вместо программ.
>>469851
Маневр не удался.
>>469855
Да тут хуй поймет, даун на дауне сидит, еще и не такое могут сморозить.
>>469861
Ну короче сокет открываешь, коннектишься, данные передаешь/получаешь, закрываешь сокет. Сервер слушает на специальном сокете и создает новые сокеты при входящих соединениях, ты их в этот момент берешь и делаешь с ними все то же самое. Сокет можно рассматривать примерно как файл, только в файле у тебя произвольный доступ, а тут нет. Все, считай что почитал.
Аноним 27/04/15 Пнд 23:41:36 #253 №469870 
>>469869
> пок пок маневр я совсем не горю ааа!
Аноним 27/04/15 Пнд 23:42:12 #254 №469871 
>>469867
Блядь, что ж с этим C++ не так. Вроде бы, охуенный язык, но написать на нем ничего нельзя - проще на другом.
Аноним 27/04/15 Пнд 23:43:34 #255 №469872 
>>469871
С чего это он охуенный, если он низкоуровневое устаревшее говно с тоннами костылей?
Аноним 27/04/15 Пнд 23:45:55 #256 №469874 
>>469871
В этом посте я поясняю за научное байтоёбство, самый удобный и быстрый линал и охуительные библиотеки для научных вычислений. Но меня можно не слушать, потому что вся эта хуита для меня пока не окупилась.
Алсо, гейдев же.
sageАноним 27/04/15 Пнд 23:45:58 #257 №469875 
>>469871
>>469872
Просто кто-то не осилил.
>>469870
Ну все, пошли переводы стрелок.
Аноним 27/04/15 Пнд 23:46:37 #258 №469876 
>>469875
> мам ну скажи ему что это у него баттхерт!!
Аноним 27/04/15 Пнд 23:46:55 #259 №469878 
14301676154670.jpg
>>469872
Ну вон смотри сколько кода на нем написано. Даже браузер, через который ты тут срешь, написан на этом божественном языке. Правда где бы мне работу найти.



>>469875
>Просто кто-то не осилил.
Я работаю в этом направлении.
Аноним 27/04/15 Пнд 23:47:28 #260 №469879 
>>469876
У меня теперь тоже, святая толстота, съеби уже куда-нибудь.
Аноним 27/04/15 Пнд 23:47:33 #261 №469880 
>>469875
> Просто кто-то не осилил.
Да братиш, не так-то просто осилить поедание говна.
Аноним 27/04/15 Пнд 23:48:04 #262 №469882 
>>469879
Nyet
Аноним 27/04/15 Пнд 23:48:06 #263 №469883 
>>469874
>самый удобный
матлаб
>самый быстрый
фортран/си
sageАноним 27/04/15 Пнд 23:49:03 #264 №469885 
>>469874
>научное байтоёбство
>наука
>байтоебство
Выбери одно. Алсо, для науки матлаб и пистон.
>самый удобный и быстрый линал
>удобный
>С++
Ну-ну.
>охуительные библиотеки для научных вычислений
... для которых есть байндинги во всех популярных языках, и которые работают в этих языках с такой же скоростью, потому что сами то библиотеки на крестах.
>Алсо, гейдев же.
С этим согласен, тут альтернатив нет, только веселые фермы для браузеров на жабаскриптах.
sageАноним 27/04/15 Пнд 23:49:40 #265 №469886 
>>469882
Peedora otvyet.
Аноним 27/04/15 Пнд 23:49:53 #266 №469887 
>>469878
> Ну вон смотри сколько кода на нем написано. Даже браузер, через который ты тут срешь, написан на этом божественном языке. Правда где бы мне работу найти.
Да, теперь открой исходники и проблюйся от убогой костыльной портянки.
Аноним 27/04/15 Пнд 23:50:22 #267 №469888 
>>469886
Fffuuuu zatraleno(((
Аноним 27/04/15 Пнд 23:51:39 #268 №469891 
>>469887
Может и правда в Java перекатиться? Кек.
Аноним 27/04/15 Пнд 23:53:04 #269 №469892 
>>469891
Лучше http://scala-lang.org/
Аноним 27/04/15 Пнд 23:55:38 #270 №469894 
>>469883
>>469885

> Matlab и пиздон с scipy
Удобное средство для отработки прототипов, но если удаётся сделать что-нибудь годное, то лучше переписать на кресты, чтобы быстро работало и была возможность воткнуть где-нибудь ещё. редко, но бывает. У кода на матлабе/пиздоне всё есть проблемы с производительностью.

> Си
Кресты всё же удобнее, бенчмарков не проводил, ничего не скажу за проигрыш в скорости.

> Фортран
Убери это говно обратно в двадцатый век.
sageАноним 27/04/15 Пнд 23:55:39 #271 №469895 
>>469888
Nyet ti.
>>469892
Нирикамендую. Помесь бульдога с носорогом, мало где используется, разве что для лаб годится. Впрочем, это так, голос с дивана, особо не вникал, попробовал и удалил на хуй.
Аноним 27/04/15 Пнд 23:55:51 #272 №469896 
>>469885
>пистон
>для науки
ahaha oh wow
Не знаешь - молчи.
sageАноним 27/04/15 Пнд 23:57:10 #273 №469898 
>>469894
>бенчмарков не проводил, ничего не скажу за проигрыш в скорости.
Почти нет проигрыша. Если не использовать RTTI, например, то вообще разницы не заметишь.
Аноним 27/04/15 Пнд 23:57:26 #274 №469900 
>>469894
>Убери это говно обратно в двадцатый век
С радостью бы, но это невозможно. Хотя кое-кто из знакомых берется за переписывание программ на фортране на плюсы и делает это годами.
Аноним 27/04/15 Пнд 23:57:28 #275 №469901 
>>469895
Ай не пизди. Умеет всё то же, что и джява.
Аноним 27/04/15 Пнд 23:57:42 #276 №469903 
>>469891
Как-будто там сильно лучше. Работа, деньги и шлюхи

>>469892
Выглядит соблазнительно.
sageАноним 27/04/15 Пнд 23:58:20 #277 №469905 
>>469896
Это мне надо было тебе сказать http://scipy-lectures.github.io/intro/intro.html#why-python
Аноним 27/04/15 Пнд 23:58:30 #278 №469906 
>>469903
>Работа, деньги и шлюхи
Вот и я об этом же. А сильно ли эта байткодовая параша сложнее C++?
sageАноним 27/04/15 Пнд 23:59:12 #279 №469909 
>>469901
Разве оно жабовские либы не через костыли использует? Говорю ж, особо не вникал, так, первые впечатления.
sageАноним 28/04/15 Втр 00:01:22 #280 №469913 
>>469906
Те же яйца в профиль. Есть свои плюсы и своя клоунада (привет, StringBuilder). Все уродство - в жирнейших тырпрайз фреймворках типа спринга с XML-ной или аннотационной дрисней. Высший пилотаж по самую макушку в говне - сочетание первого со вторым.
Аноним 28/04/15 Втр 00:01:34 #281 №469914 
>>469906
Не сложнее. Алсо, перекатившись в жабу ты станешь владельцем самой крупной сети фабрик с фасадами и мостами.
Главное в предметной области что-то понимать.
Аноним 28/04/15 Втр 00:02:06 #282 №469915 
>>469909
Лол нет, абсолютно нативно использует, ведь компилируется в джявовский байткод.
Единственные противоречия могут быть в парадигме, ну т.е. джявовские классы все мутабельные, и будет некрасиво их мешать со скалой без обёртки.
sageАноним 28/04/15 Втр 00:04:21 #283 №469917 
>>469915
>будет некрасиво их мешать со скалой без обёртки
Ну то есть фактически без костылей не обойтись, о чем я и говорю. Либо писать говнокод, а это и без скалы на жабе можно делать.
Аноним 28/04/15 Втр 00:05:05 #284 №469918 
>>469915
> противоречия в парадигме
Вот это меня всегда смущало, дикая помесь фп и ооп с кучей разных ништяков. Осилить сложно, обучать дорого.
sageАноним 28/04/15 Втр 00:08:15 #285 №469919 
>>469918
Использовать бессмысленно.
Аноним 28/04/15 Втр 00:09:04 #286 №469920 
>>469917
А как ты хотел? Чтобы компилятор тебе сам делал красивые обёртки?
Аноним 28/04/15 Втр 00:09:38 #287 №469921 
>>469919
Бессмысленно использовать что-то, кроме скалы в 2015.
Аноним 28/04/15 Втр 00:10:56 #288 №469922 
>>469921
Манямирок быдлокодера, оторванного от реалий рынка с дегенератами на рабочих местах во всех сферах, без исключения.
Аноним 28/04/15 Втр 00:11:10 #289 №469923 
>>469918
> Осилить сложно, обучать дорого.
Нихуя, намного проще чем джяву с её говноспрингами и EE.
sageАноним 28/04/15 Втр 00:11:38 #290 №469924 
>>469921
Ну начался фанатизм.
>>469920
Я хотел бы писать программы, а не костыли для подстраивания библиотек одного языка под парадигмы другого.
Аноним 28/04/15 Втр 00:12:06 #291 №469925 
>>469922
Тогда используй Кобол, хуле, прогресс не нужен.
sageАноним 28/04/15 Втр 00:13:08 #292 №469930 
>>469922
Он может и не быдлокодер, он наверняка даже круче большинства этих дегенератов, да и круче меня скорее всего, но от реалий и правда оторван. Таких даунов на работу берут, еще тупее чем студенты в этом треде.
Аноним 28/04/15 Втр 00:13:55 #293 №469932 
>>469905
Его в реальной научной работе не используют, маня.
Аноним 28/04/15 Втр 00:14:28 #294 №469933 
>>469925
Крайности, эти крайности, как же это заебало.
Аноним 28/04/15 Втр 00:16:32 #295 №469935 
>>469924
Лучше один раз написать костыль, чем всё время жрать говно. Для большинства задач тебе хватит одних скала-библиотек, тащемта.
Аноним 28/04/15 Втр 00:16:52 #296 №469936 
>>469930
Часто общаюсь с манагерами, они говорят, что задротских экспертов должно быть очень мало в отеделе. Лол, меня эти слова всегда успокаивали.
Аноним 28/04/15 Втр 00:48:30 #297 №469954 
>>468627
>In order to build and use ololord you will need the same libraries and tools as for every other project using Qt.
>Qt
Да ты же уёбок! Это поеботину на сервер тянуть только жуебок способен.
Аноним 28/04/15 Втр 00:49:50 #298 №469955 
>>469932
Спецы по машинному обучению и компьютерному зрению очень любят пиздон, хотя лаб, где используют SciPy, я тоже не видел.
Аноним 28/04/15 Втр 00:55:38 #299 №469960 
>>469955
Просто что машинное обучение, что компьютерное зрение - относительно молодые области, софт приходится пилить самим исследователям. В более старых отраслях рулят Фортран и C, ибо на них написаны все необходимые для работы вещи. Ну и еще есть R для статистических расчетов.

>>469936
>Часто общаюсь с манагерами, они говорят
Понятно. "Манагеров" забыли спросить.
Аноним 28/04/15 Втр 00:59:29 #300 №469962 
>>469955
Хуешинному хуечению, блядь. Я говорю о НАУКЕ - о молекулярной динамике, о методе конечных элементов, о различном Монте-Карловском моделировании, о прочих других алгоритмах с огромными разреженными матрицами - пистон никогда не будет использоваться в таких областях.
Аноним 28/04/15 Втр 01:10:22 #301 №469967 
>>469962
>Я говорю о НАУКЕ
Ебвть, о какой науке речь? В нормальной науке (читай: не в рашкинских говновузах "как отсрочить армию на 5 лет по N килорублей в год") как раз активно пользуют питон как glue между высокопроизводительными библиотеками, написанными на тех же фортранах и сях.
И делают это потому что в процессе проверки гипотезы пердолиться с итераторами, типами возвращаемых значений и прочей байтоебской херней в хуй не всралось.
Если гипотеза выстрелит, всегда найдется студент на кафедре, готовый за "отл" перехуярить все на чем-то быстром, а если не выстрелит, то не будет обидно за проебанные за байтоебством человекомесяцы.
Аноним 28/04/15 Втр 02:16:35 #302 №469976 
Плюсач, подскажи, что значит "поток просыпается" и "поток выходит"?
Аноним 28/04/15 Втр 02:21:13 #303 №469978 
>>469976
Это значит что поток просыпается, и выходит
Аноним 28/04/15 Втр 02:24:25 #304 №469982 
>>469978
Спасибо, посмеялся. Я вот про что: std::thread, например, выполняет переданную функцию однократно. Я не могу понять, пробуждение -- это когда я запускаю его снова или имеется в виду, что в нем будет жить цикл, который будет заставлять его выполнять работу по изменению std::condition_variable?
Аноним 28/04/15 Втр 02:29:22 #305 №469985 
>>469982
Поток это низкоуровневая хуйня. И он может уснуть (suspend) и проснуться (resume)
Аноним 28/04/15 Втр 02:30:38 #306 №469986 
>>469982
Поток засыпает, когда ты вызываешь у него sleep, wait у cond_var или любую другу функцию, которая что-то ожидает извне (ввод с консоли, чтение из БД, висение на сокете и т.п.).
Тогда поток засыпает. Когда, соответственно, заканчивается sleep, приходит уведомление от cond_var, совершается ожидаемое действие, поток просыпается и продолжает выполнять свою работу.
Аноним 28/04/15 Втр 02:42:10 #307 №469987 
>>469986
Понятно. А не реализует ли пересоздание потока через thread = std::thread( foo, arg1, arg2 ) тот же самый механизм? Id потока при этом не меняется.

Алсо, можно ли как-то передать переменную в уже работающий поток, не используя глобальные переменные?
Аноним 28/04/15 Втр 04:55:27 #308 №469993 
>>469987
> не используя глобальные переменные
Ну ты можешь в шаред память всё хуячить
Можешь сокет локальный создать
Пиздячить в стдин или открыть ещё пайк
Файл создать
Аноним 28/04/15 Втр 05:00:53 #309 №469995 
А если создать достаточно семафоров, то и через них можно...
Аноним 28/04/15 Втр 05:41:00 #310 №469997 
Котаны, а можно ли без библиотек реализовать факторизацию Ферма для uint64_t?
Аноним 28/04/15 Втр 05:45:26 #311 №469998 
>>469845
>>469885
> ... для которых есть байндинги во всех популярных языках, и которые работают в этих языках с такой же скоростью, потому что сами то библиотеки на крестах.
Я аж сиранул от своей безоговорочной капитуляции. Хорошо, что на толчке сидел. Ну-ка, какая библиотека позволяет на кластере считать из твоего любимого языка, и на всех популярных языках?
Qt-мразь, ты вообще понимаешь, что ты некомпетентен вопиюще?
>>469924
> Я хотел бы писать программы, а не костыли для подстраивания библиотек одного языка под парадигмы другого.
Это ведь ты, да, ты, Qt-мразь? Ты понимаешь, что у тебя шизофрения? Ты понимаешь, что ты только что не хотел именно писать на Qt?
Аноним 28/04/15 Втр 05:48:49 #312 №469999 
>>469967
> как раз активно пользуют питон как glue между высокопроизводительными библиотеками, написанными на тех же фортранах и сях.
У нас дристоном только отсталая лаборатория пользуется, с даунами, там у чувака есть глава в диссере про веб-сервер на матлабе, а в научной новизне отправка почты после завершения расчёта. Плюсовые высокопроизводительные библиотеки под конечные элементы (e.g. libMesh) очень даже высокоуровнево конфигурируются без пердолинга, при этом можно спокойно считать нормальные нелинейные задачки, с которыми не справится помойка на этом самом дристоне.
Аноним 28/04/15 Втр 05:51:29 #313 №470000 
>>469999
> с которыми не справится помойка на этом самом дристоне.
Предвидя боль всяких детей, добавлю: помойка не справится в виду того, что плохо поддерживается MPI, с которым надо и на крестах-то пердолиться, а уж на дристоне я даже боюсь представить, как оно работает. Без MPI очень проблемно использовать больше 200 гигов оперативки, 8 ускорителей или 12 ядер (что относительно мало).
Аноним 28/04/15 Втр 05:56:14 #314 №470002 
>>470000
> больше 200 гигов оперативки, 8 ускорителей или 12 ядер (что относительно мало).
А потом ещё про джяву шутят
Аноним 28/04/15 Втр 07:50:05 #315 №470005 
>>470002
Описываемая конфигурация с крестами используется для тяжелых распределенных вычислений, а в джаве для круда. Правильно шутят.
sageАноним 28/04/15 Втр 09:27:58 #316 №470034 
>>469954
Защита от долбоебов, чувак.
sageАноним 28/04/15 Втр 09:30:34 #317 №470036 
>>469998
Ты уже проснулся, кукарека? Аргументы то придумал за ночь?
Аноним 28/04/15 Втр 11:57:34 #318 №470073 
>>469987
Потоки операционной системы -- это достаточно низкоуровневая вещь. Поток может быть усыплен вообще в любой момент времени планировщиком операционной системы. На одноядерной машине так все время и происходит: каждому потоку выделяется квант времени, после чего он усыпляется и время дается другим потокам.
Поэтому пытаться разобраться в том, когда поток будет усыплен, а когда разбужен бесполезно.
Что касается пересоздания потока, ну просто в этом потоке сдвинется указатель на новопереданную функцию и все. Уснет ли он на этом моменте -- зависит от планировщика.

>можно ли как-то передать переменную в уже работающий поток, не используя глобальные переменные?
Можешь в поток передавать ссылку или указатель на переменную и менять её значение из другого потока, но эта переменная должна быть либо атомарная, либо ты должен защищать её мьютексом, иначе случится гонка данных и получишь неопределенное поведение.
Аноним 28/04/15 Втр 12:55:30 #319 №470083 
Ребята, хватить ругаться. Давайте лучше помолимся.

Digia, иже еси на небеси!
Да святится имя Qt,
Да приидет царствие Qt,
Да будет воля Qt, яко на Linux и на Windows.
Либы насущные даждь нам днесь;
И остави нам сорцы наши,
Якоже и мы оставляем компиляторам нашим;
И не введи нас во искушение, но избави нас от GTK.
Аноним 28/04/15 Втр 12:59:30 #320 №470084 
>>470034>>470036
Спорить с Qt-мразью — как играть в шахматы с голубем. Раскидает фигуры, нагадит на доску и улетит всем рассказывать, как он тебя уделал.
sageАноним 28/04/15 Втр 13:01:19 #321 №470085 
>>470083
Фанатизм не нужен, как и нигилизм. Вообще на бордах характерно упарывание в крайности, либо говно, либо охуенно, и каждый нахваливает свою парашу. У всех инструментов свои плюсы и минусы, ну. Даже винапи в определенных ситуациях может пригодиться. Только конченые мудаки как тот порвавшийся безаргументный спермодебил начинают агр поповоду инструментов.
sageАноним 28/04/15 Втр 13:02:18 #322 №470086 
14302153382790.jpg
>>470084
Ты опять вылезло? Аргументацию принес? Если нет, то уползай обратно.
Аноним 28/04/15 Втр 13:04:18 #323 №470087 
>>470083
mov ax, 0x0900
mov dx, string
int 0x21
mov ax, 0x4C00
int 0x21
string db 'NOPE$'
Аноним 28/04/15 Втр 13:11:22 #324 №470091 
>>469550
>где ассемблер обгоняет icpc или даже просто реализацию на mkl
Проблема не в ассемблере, а в заебах компилятора и языка. Чтобы твой код обгонял ассемблерный, надо понимать почему, например, for ( int i=size(); i--; ) может компилироваться в более быстрый код, чем for ( int i = 0; i < size(); ++i ).
Аноним 28/04/15 Втр 13:15:37 #325 №470095 
>>470086
Тебе аргументацию дали, ты сделал КОКОКОКО, насемёнил и пошёл праздновать успех.
sageАноним 28/04/15 Втр 13:33:50 #326 №470098 
>>470095
>насемёнил
Ну началось. Все кто не согласен с твоим кукареканием - семены. Давай разберем твои "аргументы", так и быть, заебал засирать тред.
>Кьют плох, как гуёвая библиотека.
Почему?
>Плюсы (как и любой другой язык без сборки мусора) не предназначены для написания гуёв.
Почему?
>Там нельзя естественным образом использовать современные гуёвые парадигмы
Какие именно парадигмы, почему нельзя?
>код пишется очень медленно
Примеры? Точные цифры? Сравнения с более быстрыми способами при равной сложности проекта и равной производительности?
>глючный
Примеры?
>IDE очень плохие
Критерий "плохости"? (Твои личные предпочтения не интересуют.)
>Кроссплатформенность достигается через еблю
Какую конкретно?
>тяжёлые либы
Тяжелые для каких устройств?
>глючит под виндой
В каких ситуациях? Примеры?
>макаки, которые не отличают друг от друга компиляторы
То есть ты утверждаешь, что разработчик гуёв должен знать все особенности каждого популярного компилятора? Для чего?
>Удел кьюта в качестве библиотеки — поддержка древнего легаси
Примеры использования кьюта в легаси.
>с ненавистью к своей потерянной жизни (т.е. для неудачников).
Переход на личности, не несущий никакой информации.
>Одна макака с решарпером заменяет целую группу кьютобезьян с тимлидом.
Примеры такой замены? Сравнение производительности труда? Конкретные компании и цифры?
>Есть библиотеки, которые не требуют анального кьюторабства
С оем же успехом можно сказать, что кьют не требует рабства этих самых библиотек.
>легко заводятся с разными компиляторами
Как и кьют.
>быстро изучаются
Как и кьют.
>и не навязывают свою парадигму программирования.
И требуют каждый раз вновь городить костыли и обертки, чтобы в итоге придти все к той же или похожей парадигме, потому что это удобно.
>Разонравилась библиотека? Выкинул из проекта за пару дней и заменил на конкурента.
Выкинул за пару дней, а потом два месяца прикручивал новую, с новыми костылями, потому что интерфейсы разные.
>Как и любая монструозная свалка кьют обречён на гниение и вымирание.
Что-то жаба не спешит умирать, хотя более монструозной свалки не найти.
Алсо.
>гуи
>гуи
>гуи
Если ты не знал, там еще много всего есть, хотя бы та же система локализации, сигналы-слоты без пердольства с калбэками и без портянки из шаблонов на 50 строк ради вызова одной функции. А также работа с сетью и хттп на достаточно высоком для байтоебского языка уровне, с поддержкой все тех же сигналов и слотов (попробуй на курле это сделать, например, заебешься костыли городить). Полный список модулей можешь посмотреть сам, но ты же скажешь что все это не нужно или тебе не нравится, как оно сделано, а аргументировать или привести примеры опять не сможешь, и продолжишь аутотренинг о том, что ты тут всех затралил своими высерами.
Аноним 28/04/15 Втр 13:46:23 #327 №470104 
>>470085
> винапи
Но это не инструмент, это виндаотсос, без которого не получится на винде.
sageАноним 28/04/15 Втр 13:51:32 #328 №470107 
>>470104
Шарп, кьют.
Аноним 28/04/15 Втр 13:55:28 #329 №470110 
>>470107
Решеточка, которая совсем недавно была прибита к венде гвоздями? В любом случае это не ц и не цпп .
Аноним 28/04/15 Втр 13:57:24 #330 №470112 
>>470091
Ничего не понял, что ты сказал. с какого перепугу твоя параша будет быстрее работать?
https://ideone.com/XMrfR2
Эта неочевидная ебуда работает точно столько же, а если убрать нагрузку, то будет работать медленнее. Не надо считать, что если в техникуме тебя научили писать на ассемблере, то ты от этого вдруг начнёшь обгонять компилятор. Я уже не говорю, что ты не знаешь про кеши, параллелизм и векторизацию, а только считаешь команды в наивной реализации компилятора. На дворе не 1975 год, пора отвыкать от байтоёбства.
>>470098
> Почему?
Причины приводятся дальше для текста.
> Почему?
Потому, что время жизни объектов в высокоинтерактивном приложении плохо контролируется программистом.
> Какие именно парадигмы, почему нельзя?
Не написать в одну строчку, не буду трудиться объяснять.
> Примеры? Точные цифры? Сравнения с более быстрыми способами при равной сложности проекта и равной производительности?
google://qt+vs+c#+programmer+performance
У меня по четвёртой ссылке кьют поливают говном, по второй ссылке кьют поливают говном. Вот тебе сравнения.
> Примеры?
Погугли хоть.
> Критерий "плохости"? (Твои личные предпочтения не интересуют.)
Плохой статический анализ (решарпер для плюсов с Qt работать не бдует), неразвитые методы рефакторинга. Пока хватит.
> В каких ситуациях? Примеры?
В гугле.
> То есть ты утверждаешь, что разработчик гуёв должен знать все особенности каждого популярного компилятора? Для чего?
Я утвержадю, что разработчик гуёв не должен быть Qt-хуесосом.
> Как и кьют.
Это не так; Qt требует дополнительного шага в компиляции, и часто не работает с нелюбимыми разработчиками компиляторами (пруфы в гугле)
> Как и кьют.
C++ — куда более сложный язык, чем шарп, поэтому и изучается дольше.
> Выкинул за пару дней, а потом два месяца прикручивал новую, с новыми костылями, потому что интерфейсы разные.
Не аргумент.
> Что-то жаба не спешит умирать, хотя более монструозной свалки не найти.
Ну и какие новые проекты на жабе? Она с Qt одной масти, только Qt даже хуже.

Заебало твою простыню читать, одна анальная боль некомпетентного Qt-неудачника.
Аноним 28/04/15 Втр 13:58:17 #331 №470113 
>>470112
> для текста.
по тексту
sageАноним 28/04/15 Втр 14:01:13 #332 №470115 
>>470112
>погугли
>погугли
>не аргумент
>погугли
>там сказали что это плохо
>сям сказали что это лучше
>погугли
>это не так
>погугли
Ну как и ожидалось.
Аноним 28/04/15 Втр 14:03:48 #333 №470117 
>>470115
> Ну как и ожидалось.
Ну что с тебя взять, если ты не погуглил даже перед тем, как высираться на доску?
sageАноним 28/04/15 Втр 14:28:51 #334 №470125 
>>470098
>>глючит под виндой
>В каких ситуациях? Примеры?
Я не тот анон, что с тобой спорит, но у меня, например, есть одна проблема.
В QGraphicsScene есть 2 QGraphicsItem один из них - картинка, а другой - прямоугольник. Так вот, при изменении размера через стандартный setScale(), прямоугольник ИНОГДА съезжает с границ пикселей картинки. То есть увеличиваешь его - все норм, ровно по границам пикселей лежит, увеличишь еще пару раз - съезжает, увеличишь еще - нормально стоит на границе нужного пикселя. Причем я пробовал оба варианта дистрибуции opengl и не-opengl, ничего не менялось.
sageАноним 28/04/15 Втр 14:38:03 #335 №470129 
14302210831520.jpg
14302210831521.jpg
>>470125
Пример
Аноним 28/04/15 Втр 15:47:01 #336 №470159 
>>470129
Тут только траллить друг друга умеют и лабы новичкам делать.
Код бы какой-нибудь дал хотя бы.
sageАноним 28/04/15 Втр 15:54:32 #337 №470162 
>>470159
Да какой код, говорю же все стандартно, просто делаю setScale().
[code lang="cpp"]
// добавляю в сцену 2 простых итема
mImage = scene->addPixmap(pixmap);
scene->addItem(mSelectionFrame);
// По эвенту нажатия на кнопку увеличения масштаба или по колесу мыши происходит следующее:
mImage->setScale(mScale);
mSelectionFrame->setScale(mScale);
[/code]
sageАноним 28/04/15 Втр 16:00:55 #338 №470165 
>>470125
>>470129
Пробовал на форуме спрашивать? Попробуй, иногда они помогают, либо подтверждают что баг есть и в следующих патчах исправляют.
Аноним 28/04/15 Втр 16:57:01 #339 №470196 
>>468625
помогите пожалуйста, не понимаю код
http://pastebin.com/GZRsUw38
привыполнении выводится 8, но я не понимаю что значит выражение n&1,
объясните пожалуйста что это такое
sageАноним 28/04/15 Втр 17:01:03 #340 №470197 
>>470196
>значит выражение n&1
это bitwise and
Аноним 28/04/15 Втр 17:09:32 #341 №470201 
>>470197
а что это значит ? объясни пожалуйста подробнее
sageАноним 28/04/15 Втр 17:12:00 #342 №470203 
>>470201
http://lmgtfy.com/?q=bitwise+and
sageАноним 28/04/15 Втр 17:16:59 #343 №470209 
>>470201
Тебе в /s тупой хуесос, там учат пользовать гуглом.
Аноним 28/04/15 Втр 17:25:28 #344 №470212 
>>470087
hlt
Аноним 28/04/15 Втр 17:27:46 #345 №470214 
>>470212
Зачем? Мы же возвращаем управление ДОСу.
Аноним 28/04/15 Втр 17:39:04 #346 №470218 
>>470112
>с какого перепугу твоя параша будет быстрее работать?
С такого, что size() может быть неконстантным методом класса, или в теле цикла будет вызов такого метода, и компилятор понаставит ненужных проверок, не говоря уже о пересчете size() на каждой итерации.
Аноним 28/04/15 Втр 17:50:05 #347 №470222 
>>470218
Так введи n: (unsigned int n = v.size(), i = 0; i < n; ++i)
Аноним 28/04/15 Втр 17:54:28 #348 №470226 
>>470222
Это недостаточная байтоебля, ну. Зачем разбираться, как работает процессор, если можно написать for без третьего аргумента, как настоящий хакир?
Аноним 28/04/15 Втр 17:58:13 #349 №470227 
>>470222
Я так и делаю. Суть в том, что компилятор спотыкается даже на такой безобидной фигне, и если не проверяешь выхлоп компилятора, не понимаешь где он может протупить, то код на асме ты вряд ли обгонишь.
Аноним 28/04/15 Втр 18:01:12 #350 №470230 
>>470227
Пруфы были, что компилятор не спотыкается. И, да, от твоей байтоебли он _больше_ спотыкается и поэтому и нужно постоянно проверять. Это не твой уровень — так оптимизировать код, только если ты не пишешь высокопроизводительные библиотеки (что ты не делаешь судя по уровню владения темой)
Аноним 28/04/15 Втр 18:05:45 #351 №470232 
>>470227
Но ведь для того, чтобы понимать, что [вызов метода + операция сравнения] тяжелее, чем просто операция сравнения, вовсе не нужно знать ассемблер.
Аноним 28/04/15 Втр 18:10:05 #352 №470236 
>>470230
>Пруфы были, что компилятор не спотыкается
Перечитай пост >>470218, и не тупи больше. Речь идет о методе класса, а не константе, как у тебя в примере.
>от твоей байтоебли
Это банальный branch hoisting.
>Это не твой уровень
Кашпировский в треде, всем заряжать баночки с водой.
Аноним 28/04/15 Втр 18:12:41 #353 №470238 
>>470232
Конечно. Просто у некоторых есть безоглядная вера в то, что компилятор все оптимизирует, и разницы не будет.
Аноним 28/04/15 Втр 18:15:10 #354 №470240 
>>470227
Не знаю, спотыкается ли. Например, когда я делаю

for (unsigned int n = v.size(), i = 0; i < n; ++i)
    fuck_your_mom(v, i);

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

Но когда я пару тредов назад спросил следующее: у меня есть (вместо звёздочек собачки т.к. иначе сожрётся) @@int_array_2D, я делаю внутри цикла switch (int_array_2D [ i ] [ j ] ) , и мне сказали, что отдельную переменную делать не надо, типа, здесь очевидно и так, что компилятор скопирует элемент массива в свитч.

Правильно сказали или нет?
Аноним 28/04/15 Втр 18:16:02 #355 №470242 
>>470238
> Конечно. Просто у некоторых есть безоглядная вера в то, что компилятор все оптимизирует, и разницы не будет.
Не путай незнание работы компилятора и байтоеблю. Не знаешь, как работает компилятор как раз ты. Вставить auto condition = size(); гораздо разумнее и понятнее, а работает быстрее.
Аноним 28/04/15 Втр 18:22:38 #356 №470244 
>>470240
>Правильно сказали или нет?
Правильный ответ - скомпилируй и посмотри.
Аноним 28/04/15 Втр 18:58:04 #357 №470251 
>>470244
Как я тебе посмотрю, размеры бинарников/экзешников сравню?

Даже если они разные, это ещё не значит, что код будет практически идентичен.
Аноним 28/04/15 Втр 19:09:18 #358 №470255 
>>470251
Посмотри дизассемблер. Замерь время выполнения разных вариантов.
К.О.
Аноним 28/04/15 Втр 19:17:36 #359 №470258 
>>470251
>Как я тебе посмотрю
Дебаггером. Плюс компиляторы умеют режим, когда для каждой строки исходника выводится получившийся асм.
Аноним 28/04/15 Втр 20:33:51 #360 №470325 
>>468625
Кодоны, есть один код.
<code>


#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int number;
cout << setiosflags(ios::left);
cout.width(10);
cout << "Число";
cout.width(25);
cout << "Квадратный корень" << "Деление\n\n";
cout.setf(ios::fixed);
cout.precision(2);
for (number = 1; number <= 10; number = number + 1)
{

cout.width(10);
cout << number;
cout.width(25);
cout << sqrt(number) << static_cast<float> (number) / 2 << "\n";
}
system("pause");
}
</code>
Как можно реализовать деление number на number из предыдущей итерации с проверкой деления на "0", не городя параллельный цикл?
Аноним 28/04/15 Втр 20:35:28 #361 №470326 
>>470325
квадратные скобки, квадратные
Аноним 28/04/15 Втр 20:50:43 #362 №470354 
>>470326
С каких пор в HTML для тега квадратные скобки используют?
Аноним 28/04/15 Втр 20:53:34 #363 №470357 
>>470354
СУКА ПИЗДЕЦ У НАС НА РАЙОНЕ ЗА ТАКИЕ ВОПРОСЫ УБИВАЮТ НАХУЙ.

Пиши [c ode lang="cpp"]/сюда свою парашу/[/code]
Пробел убери только.
Аноним 28/04/15 Втр 21:00:42 #364 №470360 
>>470357
[code lang="cpp"]
#include <iostream>
int main()
{
int moyaparasha;
return 0;
}
[/code]
Аноним 28/04/15 Втр 21:01:41 #365 №470361 
>>470360 => >>470357
Чёт нихуя не поменялось.
Аноним 28/04/15 Втр 21:06:37 #366 №470364 
>>470361
А ещё тебе надо поставить юзерскрипт. Оп-пост, мамакаёб. Ты читаешь их?
Аноним 28/04/15 Втр 21:14:58 #367 №470369 
>>470364
нет, меня больше волнуют другие проблемы, чем сторонние скрипты
Аноним 28/04/15 Втр 21:24:05 #368 №470373 
>>470369
>волнуют другие проблемы
>Пришел в священное место со своими устоями и правилами
>Выебывается.

Ты ведь понимаешь, что с таким подходом к решению проблем тебя пошлют нахуй вместе с твоими охуительными лабараторками?
Аноним 28/04/15 Втр 21:46:50 #369 №470383 
>>470373
> петух с маняскриптом
> претендует на причастность к священному месту
sageАноним 28/04/15 Втр 21:50:00 #370 №470386 
>>470373
Позволь людям жрать говно, раз они этого хотят. Зачем перед долбоебами распинаться?
инцитат 28/04/15 Втр 22:19:44 #371 №470396 
14302487844980.jpg
есть шаблон BinaryTree,
его наследники BinaryTreeTextFileIO, BinaryTreeRedBlack, их назначения и набор функций не пересекается
идея создать инстанс сразу от двух последних шаблонов - это хорошая или плохая идея, и вообще реализуемая?
sageАноним 28/04/15 Втр 22:26:06 #372 №470400 
>>470396
>BinaryTreeTextFileIO
>BinaryTree
>TextFileIO
Методы для работы с файлами приделаны к структуре данных, правильно понимаю? Это уже само по себе пиздец. Если ты еще и два таких класса в один объединишь, это совсем жопа с ручкой будет.
Аноним 28/04/15 Втр 22:28:30 #373 №470401 
>>470396
>создать инстанс сразу от двух последних шаблонов
Уточни что ты имеешь ввиду.
Аноним 28/04/15 Втр 22:31:54 #374 №470402 
>>470400
>Это уже само по себе пиздец
Ну почему? Может класс может ворочать деревьями на сотни гигабайт не загружая их полностью в оперативную память. Естественно такой класс должен уметь работать с ФС
sageАноним 28/04/15 Втр 22:38:53 #375 №470405 
>>470402
Ну разве что так. Но все равно хуевый дизайн, смешивание двух разных сущностей.
Аноним 28/04/15 Втр 22:49:52 #376 №470409 
>>470396
BinaryTreeTextFileIO добавляет методы загрузки и сохранения дерева в файл
BinaryTreeRedBlack - добавляет функционал красно-черного дерева
в чем проблема методов работы с файлами в классе?
>>470401
хочется создать класс от 2х шаблонов сразу
что-то вроде class MyTree: public BinaryTreeRedBlack<int>, BinaryTreeTextFileIO<int>
или же сначала создать шаблон, наследующий от 2, а затем его инстанс, но это вопросы синтаксиса, а мне интересно, допустимо ли множественное ромбовидное наследование здесь, и насколько вообще допустима практика множественного наследования?
Аноним 28/04/15 Втр 22:55:37 #377 №470412 
>>470402
Ты про mmap/CreateFileMapping слышал? Нафига ты дублируешь работу ОС?
Аноним 28/04/15 Втр 22:56:50 #378 №470414 
>>470409
http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern
Аноним 28/04/15 Втр 23:00:59 #379 №470419 
>>470412
без библиотек, это учебное поделие
sageАноним 28/04/15 Втр 23:13:32 #380 №470425 
>>470409
>в чем проблема методов работы с файлами в классе?
>хуевый дизайн, смешивание двух разных сущностей
Аноним 28/04/15 Втр 23:15:53 #381 №470426 
>>470098
>А также работа с сетью и хттп на достаточно высоком для байтоебского языка уровне
Я смотрю, неосилятор закукарекал. В чем конкретно неудобство send/recv/readv/writev?
>попробуй на курле это сделать
Что сделать? Я сейчас в таком прекрасном настроении, что готов макнуть тебя рожей в говно и хорошенько повозить.
Кстати, libcurl есть практически везде, а твой ебанутый libQtCore и libQtNetwork на сервер будет впердоливать только полный жуебок вроде тебя.
Аноним 28/04/15 Втр 23:19:02 #382 №470428 
>>470414
я так понял, что с помощью этого паттерна можно завести универсальное расширение свойств для многих различных классов, но я не понимаю как решить мою проблему в общем случае: пусть есть базовый шаблон(класс), от него наследуют другие шаблоны(классы), каждый расширяет функционал предка так, что попарно они не пересекаются, хочется свободно и гибко наследовать сразу от нескольких шаблонов (иметь любую комбинацию расширений функционала начального предка).
Аноним 28/04/15 Втр 23:27:35 #383 №470433 
>>470428
Ты описываешь Mixin, CRTP позволяет реализовать эту штуку, вот ссылка на хабропарашу:
http://habrahabr.ru/post/210894/
Аноним 28/04/15 Втр 23:32:39 #384 №470436 
>>470419
Это все равно верх тупизма, особенно если учесть, что ОС и так вызовет memory map, как только память процесса превысит лимит.
Аноним 28/04/15 Втр 23:34:58 #385 №470437 
>>470436
там ввод-вывод в файл в наглядном для человека виде
Аноним 28/04/15 Втр 23:45:55 #386 №470440 
>>470437
Тогда ты очень неправильно понимаешь ООП.
Аноним 28/04/15 Втр 23:48:00 #387 №470443 
Аноны, поясните чому d не взлетел?
Он же куда лучше крестов.
Аноним 28/04/15 Втр 23:57:59 #388 №470450 
>>470443
Очень долго взлетал и был неюзабелен, а сейчас уже не взлетит, потому что есть более вменяемые альтернативы в виде новых плюсов, го и раста.
Аноним 29/04/15 Срд 00:01:02 #389 №470452 
>>470450
Го не замена крестам, от синтаксиса раста можно вырвать глаза, а новые кресты такое же многословное уебанство.

Я бы писал на d, но сцуко не хватает гуя и идешки.
Аноним 29/04/15 Срд 00:06:50 #390 №470455 
А с этим что делать? => >>470325
Аноним 29/04/15 Срд 00:07:29 #391 №470457 
>>470452
>Го не замена крестам
Но он занимает нишу нативного языка со сборкой мусора. Плюс он уже очень популярен.
>от синтаксиса раста можно вырвать глаза
Зато там безопасность работы с памятью обеспечивается на уровне типов. Он занимает байтоебскую нишу.
>а новые кресты такое же многословное уебанство
Но они гораздо более юзабельные, чем предыдущие, и у них куча библиотек и тулзов.
В итоге для ди просто не остается места. Он бы выжил, если бы на нем был бы популярный проект, или его проталкивала жирная корпорация, но этого нет.
Аноним 29/04/15 Срд 00:10:03 #392 №470458 
>>470455
Выкинуть нахуй эту лабу и съебать из треда.
Например завести переменную prevNumber и делить на неё или делить на number - 1
Аноним 29/04/15 Срд 00:16:37 #393 №470461 
>>470458
Это не лаба, это я для себя делаю.
Аноним 29/04/15 Срд 00:36:29 #394 №470465 
>>470461
Тогда думать и самому решать подобные задачи, иначе даже говнокодера из тебя не получится.
Аноним 29/04/15 Срд 00:48:10 #395 №470468 
>>470465
Ну этим я себя в тупик и загоняю.
Аноним 29/04/15 Срд 05:33:27 #396 №470502 
>>470436
> Это все равно верх тупизма, особенно если учесть, что ОС и так вызовет memory map, как только память процесса превысит лимит.
Вопиющее незнание вопроса. Подкачка (про которую ты вспомнил), memory map и напердоленная вручную буферизация это обычно три совершенно разных скорости работы (а если кончается оперативная память, то это обычно либо ошибка в программе, либо в днк, либо высокопроизводительное приложение).
Аноним 29/04/15 Срд 08:08:34 #397 №470513 
>>469542
Может ты ошибся?
Аноним 29/04/15 Срд 09:27:23 #398 №470537 
>>470513
Не исключаю. Мне лень делать проект с библиотекой, если вход в библиотеку осуществляется нечасто, то разницы никакой точно нет. Если часто, надо делать замеры.
Аноним 29/04/15 Срд 09:53:42 #399 №470544 
>>470433
но тогда необходимо добавлять обертки подмешиваемых функций в базовый шаблон, а как сделать MixIn без изменения базового класса?
Аноним 29/04/15 Срд 09:56:04 #400 №470547 
>>470513
Если что, у меня здоро-о-о-овый бинарник, к которому статически линкуется mkl, cudart, какая-то параша для проверки персечений. А вот MPI линкуется динамически, и не тормозит, и линковать его статически почему-то не принято.
Так что я ставлю на то, что разницы особой нет. На шинде MPI не линкуется, бинарник не запускается, а его дёргает динамически шарп, но я перебдел, и вызовы в библиотеку ходят очень нечасто.

Про динамически залинковано я точно ошибся, там вообще весь пост несвязный, не знаю, почему я так написал.
Аноним 29/04/15 Срд 10:24:41 #401 №470561 
>>470544
Виртуальным наследованием. Но у тебя хуйня какая-то с архитектурой.
Аноним 29/04/15 Срд 10:56:20 #402 №470571 
>>470561
то есть это - нехорошая идея?

template <class T> class BinaryTree
{
//
}

template <class T> class BinaryTreeRB: public virtual BinaryTree<T>
{
//
}

template <class T> class BinaryTreeFileIO : public virtual BinaryTree<T>
{
//
}

class myTree:public BinaryTreeAVL<int>::BinaryTreeAVL, public BinaryTreeFileIO<int>::BinaryTreeFileIO{};
Аноним 29/04/15 Срд 11:30:40 #403 №470583 
>>470571
> то есть это - нехорошая идея?
А зачем эта говнина вообще? Расплескивать интерфейс по куче малафьи. У тебя он такой большой, или надо постоянно подменять классы?
KISS
Аноним 29/04/15 Срд 12:34:43 #404 №470609 
>>470583
интересно, ты сам сначала выучил язык или ооп?
Аноним 29/04/15 Срд 12:46:16 #405 №470623 
>>470571
Почитай про шаблон ВИЗИТОР. С ним еще алксандреску пердолился (в modern c++ disign) можешь скачать книгу и почитать.
Аноним 29/04/15 Срд 13:04:22 #406 №470635 
>>470571
>это - нехорошая идея?
Хорошая в скале, но для С++ - не очень.
Правильнее сделать интерфейс
template <class T> ITree { ... = 0; };

Его реализацию
template <class T> BinaryTree : public ITree<T> { ... override; };

А в реализацию уже добавлять IO параметром шаблона, классом или миксином.

Если миксином, то можно так:
интерфейс
template <class T> ITreeIO { ... };

И реализация с CRTP:
template <class T, template <class> Base>
TreeTextIO : public ITreeIO {
Base self() { return (Base) this; };
...
}

соответственно, получаем
class TreeWithTextIO : public BinaryTree<int>, public TreeTextIO<int, TreeWithTextIO> { ... }
Аноним 29/04/15 Срд 13:43:13 #407 №470648 
Посоны, в чем дело? Есть вектор указателей на объекты типа std::vector< obj@ > vec. Он хранится в объекте. В конcтрукторе объекта делается resize и потом вектор заполняется через такой цикл:

for ( auto obj : vec )
{
vec = new Obj();
}

После этого при обращении к объекту происходит сегафолт. Как выяснилось, объект не создается. В чем беда?
Аноним 29/04/15 Срд 13:44:26 #408 №470649 
И еще один вопрос на ту же тему. В объект-хранитель вектора нужно написать функцию, которая возвращает указатель на один из объектов. Можно ли это реализовать на умных указателях?
Аноним 29/04/15 Срд 14:05:42 #409 №470653 
>>470648
http://ideone.com/ee0OIN

Чуешь разницу?
Аноним 29/04/15 Срд 14:08:52 #410 №470654 
>>470649
Опять нихуя не понятно, чего ты хочешь?
Аноним 29/04/15 Срд 14:10:17 #411 №470655 
>>470653
Да, понял. Благодарю. Глупая ошибка.
То есть, auto не понимает, что в векторе хранятся указатели?
Аноним 29/04/15 Срд 14:12:54 #412 №470657 
>>470655
auto то понимает, просто здесь та же фишка то и при передаче в функции по ссылкам и по значениям.
Аноним 29/04/15 Срд 14:13:05 #413 №470658 
>>470654
Есть объект, в нем вектор указателей. Нужна функция, которая выберет из вектора указатель и вернет, чтобы другая функция с ее помощью сошла с ним работать.
Аноним 29/04/15 Срд 14:21:24 #414 №470661 
>>470609
Ты какой-то ебанутый. Язык — лишь способ записи идеи. Нельзя выучить отдельно идею и запись идеи. Ты в своей путяги философию прогуливал?
Аноним 29/04/15 Срд 14:24:11 #415 №470662 
>>470658
Можно возвращать shared_ptr, и хранить его в контейнерах. Нихуя не понимаю, в чём проблема.
Аноним 29/04/15 Срд 14:26:10 #416 №470663 
>>470658
http://en.cppreference.com/w/cpp/memory/shared_ptr
get - returns a pointer to the managed object
Аноним 29/04/15 Срд 14:27:52 #417 №470666 
>>470663
То есть, ты предлагаешь делать вектор shared_ptr и возвращать их?
Аноним 29/04/15 Срд 14:32:37 #418 №470671 
>>470666
Если не будет кольцевых зависимостей, то все будет прекрасно работать. Ты вообще читал мануал?
Аноним 29/04/15 Срд 14:45:45 #419 №470676 
>>470666
Можешь shared_ptr возвращать. Не понимаю твоей проблемы.
Аноним 29/04/15 Срд 15:15:54 #420 №470695 
>>470661
я даже не вошел в стадию прыщей.
Аноним 29/04/15 Срд 15:30:12 #421 №470706 
>>470676
Я уже разобрался.
Скажи, а насколько вообще стоит дрочить на умные указатели? В С++11-стайл они входят в обязательном порядке или сырой указатель в коде норм, если все удаляется как надо?
sageАноним 29/04/15 Срд 15:34:39 #422 №470708 
Просто оставлю здесь: http://habrahabr.ru/post/256887/
Аноним 29/04/15 Срд 15:44:20 #423 №470715 
>>470706
Зависит от задачи и личных предпочтений.
Аноним 29/04/15 Срд 16:00:25 #424 №470724 
Насколько вообще оправдано множественное наследование? Является ли оно признаком плохой архитектуры?
Аноним 29/04/15 Срд 16:10:05 #425 №470728 
>>470724
Виртуальное наследование и динамические касты - почти всегда признак плохой архитектуры.
Аноним 29/04/15 Срд 16:11:28 #426 №470729 
>>470724
Это долгий холивар со здравыми аргументами с обоих сторон.
Аноним 29/04/15 Срд 16:13:28 #427 №470732 
>>470457
>В итоге для ди просто не остается места. Он бы выжил, если бы на нем был бы популярный проект, или его проталкивала жирная корпорация, но этого нет.

Facebook Александреску кудах ко-ко-ко
Аноним 29/04/15 Срд 16:17:41 #428 №470735 
>>470728
>>470729
Спасибо. Думаю что постараюсь обойтись без множественного наследования, благо только что придумал как это сделать красиво и понятно.
Аноним 29/04/15 Срд 16:35:51 #429 №470743 
>>470706
Мимо проходил, отвечу. Я предпочитаю вилкой вычищать маллок и фри, когда дело идёт о серьёзных вычислениях. Когда игрушки играю для красивого кода, умные указатели.
Аноним 29/04/15 Срд 20:04:13 #430 №470852 
Знатоки C++, что вы скажетре об этой статье? http://psi-logic.narod.ru/pro/diffs.htm
Аноним 29/04/15 Срд 20:09:18 #431 №470857 
>>470852
Прочитал только десятый пункт, не узнал для себя ничего нового.
Аноним 29/04/15 Срд 20:12:37 #432 №470858 
>>470852
Для 1990 года неплохо.
Аноним 29/04/15 Срд 20:28:43 #433 №470867 
Почему драйвера и ядра пишут на C, ведь C++ же более продвинутый и есть йоба-ооп?
Аноним 29/04/15 Срд 20:41:50 #434 №470871 
>>470867
традиция
Аноним 29/04/15 Срд 21:15:12 #435 №470878 
>>470871
НУ ТУПЫЕ да. Пердуляхи в своём мирке, не могут в новые идеи, вот и пердолятся как лохи.
Аноним 29/04/15 Срд 21:27:37 #436 №470886 
>>470867
Вот именно потому и не пишут, что >йоба-ооп .
Закон Мура не сумеет справиться с наплывом цпп-быдлокодеров в системное программирование.
Аноним 29/04/15 Срд 21:47:42 #437 №470905 
>>470708
true.
мы вон клепаем говнокод уже не первый год, однако это не мешает вполне успешно хуячить патенты на написанные говноништяки.
а код потом в продакшене поправят.
Аноним 29/04/15 Срд 22:27:38 #438 №470926 
Двачик. Как лучше поступить в таком случае: у нас есть пул потоков в обертках и главный. В главный постоянно поступают цифры. Надо раздавать цифры потокам, чтобы они хуярили их.

Самый логичный вариант -- notify_one при поступлении числа и глобальная переменная, в которой он хранится, пока его не возьмут на обработку. Но это как-то ебет инкапсуляцию во все дыры. Как это сделать грамотно?
Аноним 29/04/15 Срд 22:33:04 #439 №470931 
>>470926
producer – consumer
Аноним 29/04/15 Срд 22:39:20 #440 №470938 
>>470931
Я не смог найти его реализацию под С++11. Можешь на пальцах хотя бы, как это через condition_variable сделать?
Аноним 29/04/15 Срд 22:44:17 #441 №470942 
>>470938
Скачай cpp concurrency in action, там должно быть
Аноним 29/04/15 Срд 23:12:38 #442 №470975 
>>470867
>Почему драйвера и ядра пишут на C
Потому что ООП для системного программирования абсолютно ненужно, а в С++ варианте - откровенно вредно.
Аноним 30/04/15 Чтв 00:39:53 #443 №471007 
>>470926
Что за обертки у потоков? Если самописные просто добавь ему метод "обработать число" - поток получает число как аргумент, обрабатывает и засыпает. А основной поток постоянно просматривает дочерние потоки, находит спящие и дергает их за метод с следующим числом на обработку. Если обработка очень долгая можно добавить нотификации от дочерних потоков что они свободны и готовы получать новое число (чтобы главный не тормошил постоянно их, а ждал пока освободятся) - но это уже ебля, так как нотификации будут рассылатся из разных потоков ну и пиздец.
Аноним 30/04/15 Чтв 01:31:42 #444 №471031 
>>471007
Обертки — объекты, в которых хранится поток, его флаги и функции для работы с ним. В принципе, оно и так нормально работает, но думал сделать на CV, чтобы все в конторе, куда делаю тестовое, охуели, как я могу.

В итоге решил забить, потому что мороки много, а программу это лучше не делает — наоборот, вместо lock-free механизма, который выглядит легко и работает быстро, получается мутотня с мьютексами и страшный код.

Послал в полночь, завтра узнаю, насколько я крутой падаван многопоточного программирования.
Аноним 30/04/15 Чтв 01:59:26 #445 №471036 
14303483668830.jpg
посоны, вопрос по архитектуре, как лучше имплементировать

[code]
struct GUIStorageObject
{
virtual ~GUIStorageObject() = default;
};


template<class T>
struct GUIStorage : GUIStorageObject
{
void setValue(T value) {m_value = value;}
T value() const {return m_value;}

private:
T m_value;
};


struct GUIElementObject
{
void AddLogic(GUIElementLogic logic);

template<class T>
void AddStorage() {m_storage.emplace_back(new GUIStorage<T>);}
template<class T>
GUIStorage<T>& Storage()
{
auto ptr = dynamic_cast<GUIStorage<T>
>(m_storage.back().get());
CASSERT(ptr, "Wrong type for requested storage");
return *ptr;
}

private:
vector<unique_ptr<GUIStorageObject>> m_storage;
unique_ptr<GUIElementLogic> m_logic;
}
[/code]

потом я, вооружившись поинтером на GUIElementObject и номером стоража, внутри GUIElementLogic делаю вычисления(например привожу позицию слайдера к виду [0. .. 1.]) и далее могу получить результат из манагера GUIElementObject где угодно.

можно ли сделать это лучше?
Аноним 30/04/15 Чтв 03:17:58 #446 №471057 
>>471036
>virtual ~GUIStorageObject() = default;
Что значит = default? Это какая-то хуйня из С++11/14?
Аноним 30/04/15 Чтв 05:03:43 #447 №471060 
Анон, как думаешь: стоит ли мне лезть в С++, если я только ебучий паскаль и знаю?
sageАноним 30/04/15 Чтв 07:43:05 #448 №471067 
>>471057
g: c++ default
>>471060
Не стоит. Тут и без тебя полный тред даунов.
Аноним 30/04/15 Чтв 07:43:47 #449 №471068 
>>471060
Если единственное что тебя останавливает это ебучий паскаль то можно.
Аноним 30/04/15 Чтв 09:30:33 #450 №471092 
>>471057
{}
Аноним 30/04/15 Чтв 10:29:08 #451 №471110 
>>471036
Лучше имплементировать через MVC/MVVM.
Аноним 30/04/15 Чтв 17:15:35 #452 №471318 
Есть две функции.
[code lang="cpp"]
template< typename EventType, typename ... Args >
std::shared_ptr< EventType > make_event_0 (Args &&... args)
{
auto result = std::make_shared< EventType > (std::forward< Args > (args)...);
return result;
}

template< typename EventType, typename ... Args >
std::shared_ptr< EventType > make_event_1 (Args &&... args)
{
return std::make_shared< EventType > (std::forward< Args > (args)...);
}
[/code]
На всяких stackoverflow и маерсах написано, что нужно юзать 1-й вариант, мол во 2-м шаред сразу разрушается. Только что проверил - оба возвращенные значения имеют по 1 strong ref
Это маерсы со стеком пиздят, или это спермотанцы в компиляторе?
Аноним 30/04/15 Чтв 17:24:51 #453 №471333 
>>471318
Алсо, про rvo знаю, но маерс вроде бы хуйни не скажет. Компилятор, как видно из поста, msvc
Аноним 30/04/15 Чтв 18:04:52 #454 №471362 
>>471318
Вообще, по логике вещей, эти штуки должны компилироваться в один и тот же код. Поэтому если не собираешься в кроссплатформенность, то не парься на этот счет вообще.

Но вообще сейчас проверю на gcc.
Аноним 30/04/15 Чтв 18:12:48 #455 №471370 
>>471318
Проверил, ровно так же по одному рефу. У меня gcc 4.7.3.
Короче, хуйню в интернетах пишут.
sageАноним 30/04/15 Чтв 18:31:24 #456 №471385 
>>471318
В обоих случаях внутри функции происходит создание экземпляра shared_ptr, после чего при выходе из функции создается еще один экземпляр (который и является возвращаемым значением), а экземпляр внутри функции удаляется. Никакой разницы с точки зрения последовательности событий нет.
Аноним 30/04/15 Чтв 23:19:44 #457 №471484 
Насколько объявление класса friend'ом другого является нормальной практикой?
Иногда это можно поправить наследованием, но когда классы друг с другом вообще плохо связаны, но один должен в некоторой ситуации покрутить в другом?
Например, enable_shared_from_this хранит weak_ptr, который при захвате объекта должен быть инициализирован в конструкторе shared_ptr. Я не понимаю, как тут избавиться от друзей, и не знаю, нормально это или нет.
Аноним 30/04/15 Чтв 23:35:03 #458 №471493 
>>471484
Не вдаваясь в подробности, в моем случае все тоже можно решить наследованием, однако хотелось бы все же услышать авторитетное мнение про общий случай.
Аноним 30/04/15 Чтв 23:50:58 #459 №471500 
>>471484
Абсолютно нормально. В С++ кривой механизм инкапсуляции, и friend используется как костыль для замены нормальной модульности.
Аноним 01/05/15 Птн 01:59:05 #460 №471530 
>>471500
Поясни за это подробнее. Чем кривой, как не криво?
Аноним 01/05/15 Птн 02:17:49 #461 №471537 
>>471484
От друзей избавляются делая публичный интерфейс таким чтобы обьявлять друга не надо было.
Аноним 01/05/15 Птн 02:40:58 #462 №471540 
>>471530
>Чем кривой, как не криво?
Тем что инкапсуляция ограничена классом, а не модулем. С модулями можно было бы указать, что вот эти классы в одном модуле, и имеют доступ к приватным полям друг друга.
Аноним 01/05/15 Птн 08:42:38 #463 №471563 
>>471540
Кстати, для визуализации данные есть d3.js, может ему все-таки в анализ данных податься, если бэкграунд такой хорош, как он описывает.
Аноним 01/05/15 Птн 18:04:28 #464 №471711 
14304926682610.jpg
Сап, программач. Как мне вызвать виртуальную функцию из класса, где она объявлена? Например, у меня есть класс Base. В нём есть virtual void init() = 0. В конструкторе этого класса я хочу написать что-то вроде
this->init();
this->onCreate();
То есть, я хочу вызвать метод onCreate после инициализации класса, которая обязательно будет в функции init. Компилятор ругается на unresolved reference. По 1 на каждый подкласс. Если я определяю init как virtual void init(){}, то всё компилируется, но функции в подклассах не вызываются.
Пикрандом.
sageАноним 01/05/15 Птн 18:15:42 #465 №471718 
>>471711
Никак. Сначала вызывается конструктор базового класса, а только потом - наследника. В базовом классе у тебя метод чисто виртуальный, поэтому и обратиться не к чему.
Аноним 01/05/15 Птн 18:19:26 #466 №471722 
>>471718
Может есть какие паттерны? Я просто хочу вызывать метод onCreate после того, как инициализирую класс-наследник.
sageАноним 01/05/15 Птн 18:19:28 #467 №471723 
На вот, почитай, там лучше объясняют, чем я: http://stackoverflow.com/questions/962132/calling-virtual-functions-inside-constructors
sageАноним 01/05/15 Птн 18:23:31 #468 №471724 
>>471722
Дружественная фабричная функция, создающая объект, вызывающая onCreate и затем возвращающая объект, не?
[code lang="c++"]
Base create(Type t)
{
Base
o = 0;
switch (t) {
case Derived1Type:
o = new Derived1;
break;
//...
default:
break;
}
if (o)
o->onCreate();
return o;
}
[/code]
Аноним 01/05/15 Птн 18:24:51 #469 №471725 
>>471711
А можешь объяснить, зачем оно тебе вообще надо? Я с ходу не могу вообще представить ситуацию, где конструктор Derived должен работать не по принципу "конструктор Base + еще что-то", более того, это противоречит абстракции.
Аноним 01/05/15 Птн 18:45:00 #470 №471736 
>>471725
Всё вам объяснять, блядь. Я же написал. Хочу вызывать метод onCreate после инициализации класса. Инициализация у каждого класса своя, а onCreate - общий метод.
Аноним 01/05/15 Птн 18:47:56 #471 №471739 
>>471724
И так для каждого Derived-класса? Может есть что-то более компактное?
Аноним 01/05/15 Птн 18:51:13 #472 №471740 
>>471736
Но ведь это не ответ на вопрос. Зачем тебе надо вызывать какой-то метод после создания каждого объекта такого класса?

И зачем, к слову, его делать методом класса, а не просто void onCreate( Base @base )?
Аноним 01/05/15 Птн 18:57:40 #473 №471742 
>>471740
Конструктор Base-класса должен делать немного своих дел, потом вызывать инициализатор Derived-класса, а потом вызывать свой метод onCreate.
Аноним 01/05/15 Птн 19:04:52 #474 №471744 
>>471740
NioController(T object, std::string fileName) {
this->mObject = object;
this->initLua(fileName);
this->init(); // вот эта функция и есть виртуальная
this->onCreate();
};

В init делаются все нужные биндинги для lua, которые нужны определённому Derived-классу. Для каждого биндинги свои. Метод onCreate вызывает lua-функцию onCreate. Вызов этой функции для каждого Derived-класса одинаковый.
Аноним 01/05/15 Птн 19:06:26 #475 №471745 
>>471744
Костыльно-ориентированное программирование же. Логичнее сделать фабрику.
sageАноним 01/05/15 Птн 19:08:05 #476 №471748 
Пиздец ты тупой. Тебе русским по белому сказали, что у тебя хуевая архитектура и что так, как ты хочешь, сделать нельзя, и даже пример привели. Хули тебе еще надо? Какая архитектура, такой и костыль (корявый, если ты не понял).
Аноним 01/05/15 Птн 19:08:26 #477 №471749 
>>471745
Тогда придётся добавлять в неё все новые Derived-классы. А я хочу, чтобы такого не было.
Аноним 01/05/15 Птн 19:10:21 #478 №471750 
>>471748
Пошёл-ка ты нахуй. Я спросил, как можно реализовать костыль для моей архитектуры. Объяснять мне, какой я мудак и как неправильно делаю я не просил.
Аноним 01/05/15 Птн 19:12:04 #479 №471752 
>>471749
Реализуй так, чтобы не понадобилось.

Вообще, приведи, наконец, конкретный пример, чего тебе хочется реализовать. Расскажем тебе, как это сделать не через жопу.
sageАноним 01/05/15 Птн 19:38:07 #480 №471762 
>>471750
Кокой агрессивный петушок. Хуй тебе помогут, чепушило.
Аноним 01/05/15 Птн 19:42:48 #481 №471764 
Ебашь фабрику или фабричный метод. По другому нельзя. Можешь добавить метод типа finishInit() и обязать ползователей своего класса вызывать его в конце конструкторов наследуюмых.
Аноним 01/05/15 Птн 22:49:10 #482 №471836 
>>471752
Я же уже приводил. Вот в этом посте >>471744
Аноним 01/05/15 Птн 23:42:00 #483 №471869 
простой вопрос:
возможно ли в конструкторе по условию отказаться от создания экземпляра и выплюнуть NULL или всегда нужна обертка?
Аноним 01/05/15 Птн 23:47:26 #484 №471876 
>>471869
NULL выплюнуть не получится.
Аноним 01/05/15 Птн 23:54:58 #485 №471890 
>>471869
Исключения Маня, слышал о них?
Аноним 01/05/15 Птн 23:54:59 #486 №471891 
>>471876
я понял про NULL_OBJECT, но если очень хочется, чтобы к памяти не было запросов
Аноним 02/05/15 Суб 00:01:52 #487 №471898 
>>471890
Скорее всего, вопрошающий дрочит на скорость и исключениями пользоваться не хочет.

>>471891
Ну хуй знает даже.
На всякий случай:
http://www.parashift.com/c++-faq-lite/ctors-can-throw.html
Аноним 02/05/15 Суб 00:05:14 #488 №471905 
>>471898
если что, мой текущий рекорд - 1,5 эякуляции за время компиляции
Аноним 02/05/15 Суб 00:06:16 #489 №471906 
>>471898
> Скорее всего, вопрошающий дрочит на скорость и исключениями пользоваться не хочет.
А тип вылет к хуям от нуллпоинтера это норм? Охуеть вообще
Аноним 02/05/15 Суб 00:10:28 #490 №471909 
>>471869
ПРО СИ++, ЦИТИРУЮ СЕБЯ ПО ПАМЯТИ:


про С++ (цитирую себя по памяти)

Деструкторы не использовать

Виртуальные методы только как реализвции интерфейсов

Вместо не виртуальных методов - статические методы

Вместо конструкторов - статические методы

каталог-кун
Аноним 02/05/15 Суб 00:14:24 #491 №471912 
>>471909
> статические методы
тоже предпочитаю так делать

> Вместо не виртуальных методов - статические методы
Это что ещё за хуита такая?
Аноним 02/05/15 Суб 00:18:08 #492 №471915 
>>471909
я вижу в твоих словах много рекурсии, но мало здравого смысла.
Аноним 02/05/15 Суб 00:38:24 #493 №471922 
>>471909
оно джавапредатель, пари держу
Аноним 02/05/15 Суб 00:43:32 #494 №471924 
14305166129640.jpg
>>471909
ИЛЛЮСТАЦИЮ ЗАБЫЛ
Аноним 02/05/15 Суб 01:29:56 #495 №471936 
>>468625
ПРОБЛЕМА С++ В ТОМ ЧТО ТУПОЙ ПРЕПОД СТРАУСТРУП В СВОИХ КНИЖКАХ НАСАЖДАЕТ В ГОЛОВЫ НЕПОТНЫХ ЛОХОВ ИДЕАЛЫ ООП КОТОРЫМ ПРЕДСТОИТ БЫСТРО РАЗБИТСЯ О СПЛОШ КОМПРОМИСНУЮ РЕАЛИЗАЦИЮ
У ДЖАВАМАКАК ИДЕАЛЫ ООП РАЗРУШАЮТСЯ НАМНОГО ПОЗНЕЕ КОГДА СБОРЩИК МУСОРА НАЧНЕТ ВЕШАТЬ СИСТЕМУ НА НЕСКОЛЬКО МИНУТ
sageАноним 02/05/15 Суб 01:56:12 #496 №471947 
>>471936
> СБОРЩИК МУСОРА НАЧНЕТ ВЕШАТЬ СИСТЕМУ НА НЕСКОЛЬКО МИНУТ
как там в 2220?
Аноним 02/05/15 Суб 03:19:23 #497 №471974 
почему

QString qstr;
bool *ok;
int res=qstr.toInt(ok);//ошибка
//

bool ok;
int res=qstr.toInt(&ok);//все нормалек
Аноним 02/05/15 Суб 04:23:06 #498 №471983 
//и вдогонку
class A
{
//
A GetShit();
};

class B: public virtualB
{
//
}

int main
{
B
ptrB=new B;
B C;
C=B->GetShit();//здесь возвращается дерьмо типа базового класса
//а мне нужно дерьмо производного
//как изменить метод, чтобы его не требовалось переопределять в любом производном классе?
//в голову приходит только void
GetShit();
Аноним 02/05/15 Суб 04:31:38 #499 №471986 
Программачик, такой вопрос. Хочется сделать некий класс модуля, состоящий из модели, связанного с ней меню (виджета) и указателя на представление. Суть состоит в том, что в программе используется одно представление (основное окно программы, по сути), но к нему в разные моменты времени привязаны разные модели, каждой из которых соответствует свое основное меню. Собственно, как бы вы предложили это реализовать?

Модель всегда наследник одного и того же класса, представление -- тоже.
Аноним 02/05/15 Суб 04:33:41 #500 №471987 
>>471983
Никак. Просто изменяй его в любом производном. Может быть, можно просто написать = delete в 11-х Сях, не знаю.
sageАноним 02/05/15 Суб 04:54:14 #501 №471990 
>>471974
Память кто выделять будет?
>>471986
Было уже. Иди на хуй.
Аноним 02/05/15 Суб 09:18:04 #502 №472016 
>>471986
А в чем проблема? Обычное же MVC - у вью метод который принимает модель и изменяет вью соответсвенно модели, контролер в нужные моменты скармливает вью нужные модели, вью изменяется.
Аноним 02/05/15 Суб 11:02:11 #503 №472040 
>>471990
ебать, ну я и мудак
Аноним 02/05/15 Суб 14:10:15 #504 №472123 
14305650150180.jpg
>>471983
class MyShit: public B<int>
{
};
int main()
{
MyShit test();
}

template <class T> A<T>
{private:
T Value;
protected:
T GetValue(){return this->Value;}
public:
A(T value){this->Value=value;}
};

template <class T> B<T>:public virtual A<T>
{ private:
struct C
{
QString key;
//other shit
};
C TransmuteThisIntoC();
public:
A<C>* SomeShit()
{
return new A<C>(TransmuteThisIntoC());
}//здесь первый наебок
//in instantiation of class A<B<int>::C>
//required from class B<int>
//required from class MyShit
//A<T> has incomplete type
};
//второй наебок с любым вызовом GetValue<C>()
//member function T GetValue() is declared as protected
//то есть экземпляр класса A<C> не видит свой собственный метод
throw PR_SOLVES_MY_PROBLEM();




Аноним 02/05/15 Суб 14:39:00 #505 №472145 
>>472123
коротко: как внутри шаблона-потомка инстанцировать шаблон-предок структурой, декларированной приватной в шаблоне-потомке?
Аноним 02/05/15 Суб 14:40:21 #506 №472147 
Йобушки, пилите перекат.
Аноним 02/05/15 Суб 14:40:59 #507 №472148 
>>472145
Использовать protected.
Аноним 02/05/15 Суб 14:42:11 #508 №472149 
>>472147
Сам запили.
Аноним 02/05/15 Суб 15:24:47 #509 №472174 
>>472149
Вас, блджад, дождёшься.
Давайте сюда:
>>472173
>>472173
>>472173
>>472173
>>472173
>>472173
>>472173
>>472173


comments powered by Disqus

Отзывы и предложения