LINUX.ORG.RU

Сообщения naushniki

 

Dimez, ну и зачем?

Форум — Linux-org-ru

@Dimez, зачем столько скора срезал? Придется перерегистрироваться теперь.

 ,

naushniki
()

С Притяжством!

Форум — Talks

В этот день ровно n лет назад родился сэр Исаак Ньютон.

От модератора: картинку удалил, предлагаю, чтобы не скатиться в 5.3, пропагандируя свои убеждения, не оскорблять других. Относится, кстати, к обеим сторонам, по теме тоже пройдусь - hobbit

 ,

naushniki
()

Смена профессии

Форум — Talks

Нужен совет, серьезно. А лучше истории узбека из жизни.

Трагедия в 3х актах.

Преамбула.

Всю жизнь, сколько себя помню, мечтал работать с вычислительной техникой и стать программистом. То есть сначала сисадмином, а потом уже программистом. В детстве узнал, что существуют ОС, отличные от виндовс, надыбал по знакомым диск с бсд, взял «The C programming language» в библиотеке и начал потихоньку учить си. Таким образом познал все прелести вылизанного, отполированного до блеска и очень красивого опенсорс кода. В основном на си и всякие шел скрипты. Позже поступил в вуз и окончил его по специальности комплуктер саенц, мат методы и программирование. Учиться очень нравилось, код писал практически все свободное от пьянства время. Учили в основном на java, сам писал на си и плюсах.

Амбула.

Первый опыт работы разочаровал сильно. Конечно, в вузе были практики и даже в больших и известных компаниях, но там я писал код один и как хочу, главное чтобы работало. Команды как таковой не было. Первая работа была на C++, естественно джуном. Надо было дописывать какой-то самописный инженерный CAD и править в нем баги. Первым делом подкосил размер, в кадах кол-во кода огромно, сотни тысяч, а может и миллионы строк, и время компиляции. С командой я не сдружился сразу, так как по натуре интроверт, одиночка и д’артаньян, а работали там, мягко скажем, не светочи, далеко не умные дяди. Ну это ладно, дальше хуже. Последующие места работы я искал уже на java, так как думал, что c++ очень плохой язык, а он в то время был именно таким, и потому что в вузе учили на яве и я много чего мог на ней сделать, начиная с бд заканчивая сетями и мультитредингом. Каково же было мое удивление, когда я погрузился в мир жабоентерпрайза. Срыв всех покровов. Я отлюбил программирование в первый день этого бардака. После долгих лет ровного и отлаженного опенсорцного, в основном bsd и gpl кода, я увидел !это! Но spring с хибернатом и maven’ом были еще цветочки, позже подключились докеры, кубернетесы, ci/cd, облака и прочие tdd. Это не то программирование, которое я хотел, подумал я.

Постамбула.

Вот уже 10+ лет прошло с моего выпуска, я уже сеньор и гребу бабло лопатой. Но программировать мне не нравится. И, мне кажется, никогда не нравилось. Ну, то есть в начале нулевых нравилось, когда все было просто и сердито и на си(++), а теперь вот это вот все вызывает скуку и отвращение. Под вот этим вот всем подразумевается то, во что современное программирование превратилось. Мне досихпор нравится сидеть решать алгоритмические задачки на си, но работать над проектом на работе сил никаких нет.

Так вот, к чему это я? Куда бежать выгоревшему (или же просто плохому) программисту? В какую сторону лучше копать чтобы и ЗП осталась нормальной и кода больше не видеть? В меденжеры не могу по причине врожденной нелюбви к людишкам. Желательно не просто советы, а истории из жизни, как кто спасался.

 ,

naushniki
()

Инициализация массива

Форум — Development

Надо создать и занулить (либо заполнить одним и тем же значением) массив произвольной длины.

Действительно ли данная операция является O(n) под капотом? Железо не умеет влепить во всю выделенную память сразу одно значение?

 ,

naushniki
()

copy-and-swap

Форум — Development

Изучаю C++, читаю книгу Hands-on Design Patterns with C++, главу Swap and exception safety. Там есть такой пример:

class C; // Our element type
C transmogrify(C x) { return C(...); }    // Some operation on C
void transmogrify(const std::vector<C>& in, std::vector<C>& out) {
    out.resize(0);
    out.reserve(in.size());
    for (const auto& x : in) {
        out.push_back(transmogrify(x));
    }
}

Написано, что push_back может выкинуть exception и наш вектор out останется пустым или неполным. Предлагается такое решение:

void transmogrify(const std::vector<C>& in, std::vector<C>& out) {
    std::vector tmp;
    tmp.reserve(in.size());
    for (const auto& x : in) {
        tmp.push_back(transmogrify(x));
    }
    out.swap(tmp); // Must not throw!
}

Якобы swap() не выбросит исключения и теперь у нас есть strong exception guarantee и весь этот финт ушами называется идеомой copy-and-swap. Только вот я не понимаю, чем именно обусловлена стронк гарантия? Функция все так же может выбросить исключение и вызывающая функция все равно должна проверить вектор out на валидность, хотя бы размеры in и out сверить.

 

naushniki
()

RSS подписка на новые темы