Цікаво чи можна зробити кращий dispatch що не потребує common return value type (відкинемо зараз ситуацію з віртуальними класами, нехай всі типи відомі). Зараз я бачу два мінуси — ReturnType має бути загальним для всіх функцій і, а також default constructible.
Але ж всі типи відомі — як функцій так і аргументів, чому не можна вивести ReturnType зробивши match на етапі компіляції а також не створювати його на стеку.
Я дивився схожий приклад в boost::mp11 де вони робили свій std::visit: www.boost.org/...s/mp11/doc/html/mp11.html
То там пацани теж використовують common type у вигляді std::variant.
Щира правда для Голандії. Якщо до 30 років з дипломом, то в тебе податкова база дозволяє отримувати рулінг з 36000 бруто, що виливається в близько 2.5к чистими на місяць.
Я не знаю як з цього приводу в Німеччині звичайно.
исполнение команд видно невооружённым взглядом.
que?
очень даже понятна — в библиотеке есть явные инструменты для этого
Я маю на увазі коли в проекті багато взаємодій (напр колбеки) часто модель хто ким володіє не є очевидною.
смотря какой
наскільки мені відомо ніякий існуючий компілятор тобі цього не скаже. Теоретично вміють деякі статичні аналізатори, але вони часто коштують скажених грошей котрих вони не варті (я щоправда користувався лише coverity)
Зробити циклічну залежність на смартпойнтерах в коді з купою взаємодій коли не дуже зрозуміла модель володіння дуже просто. І тоді хопа — а пам’ять потікла. І компілятор тобі нічого не скаже.
Теоретично ніяких — у тебе є і RAII i smart pointers і все таке інше. На практиці не зважаючи на наявність цих інструментів в тебе може:
— Текти пам’ять.
— Робити use-after-free.
— Звертатись за межі масиву
— Дедлоки на мьютексах
Мова звичайно дає тобі певні інструменти для боротьби з цим, але Rust-код з цими проблемами просто не буде компілюватись. Тобто як таких проблем нема, просто пиши код без помилок лол.
Яка фіча 20х плюсів вирішує проблеми memory-management?
D був альтернативою хрестам, а не пішов тому що велика частина стандартної біблотеки потребувала garbage collector. Як тільки хтось скаже програмісту на плюсах що системна мова вимагає GC, для нього вся дискусія на цьому закінчиться.
Зараз ситуація звичайно виправилась, алгоритми не потребують більше GC, сам GC став опціональним, мова стала набагато потужнішою і загалом є кращою аніж С++.
Якби D був в теперішньому стані років 8 назад, я думаю він би злетів. Але РАПТОВО з’являється RUST, який не тільки пропонує zero-cost абстракції і купу плюшок ФП, а ще й вирішує багато проблем з безпекою.
В результаті кілька років назад у С++ не було альтернативи для системного програмування, а ті задачі які вирішував D зі своїм GC так само успішно вирішував і Go. Тепер D став нормальним для системного програмування, але як альтернатива з`явився Rust який краще.
В прикладі про корутини:
generator<int> generatorForNumbers(int begin, int inc = 1)
Цей generator це частина стандартної бібліотеки?
ок не вопрос )) вопрос как теперь выйти с for_each ? ))
мій приклад робить те ж саме що написано в статті, а саме множить на 10 всі елементи колекції доки не зустріне елемент більше 5. Виходить з foreach та частина що take_while.
for (i : any_range) { sum += i; }куда исчо лаконичнее?
Повний приклад буде все ж
int sum = 0;
for (i : any_range) { sum += i; }
Проти
auto i = std::accumulate(begin(any_range), end(any_range), 0);
но...ок не вопрос )) давай конкретный пример будем т.с. ближе к телу ))
Різниця між ручним циклом і алгоритмами STL в тому, що ручний цикл каже тобі як робити, а алгоритм — що робити.
В розгляді даної статті, ручний цикл каже:
— Пройтись циклом по всім елементам колекції
— Якщо елемент більше 5 — вийти з циклу
— Помножити елемент на 10
Використання алгоритму каже:
— Застосувати операцію множення на 10 до всіх елементів колекції доки не зустрінеш елемент більше 5
Різниця тут в основному семантична, але мене приваблює саме факт декларативності при використанні алгоритмів. Ну і це добре коли в тебе foreach в одну стрічку (через це я і кажу що foreach нішевий), але купа алгоритмів замінює простині магії з індексами і подібною шнягою.
Тут вже радили Шона Перента, і я з цією людиною абсолютно погоджуюсь.
Просто в інших мовах ця парадигма виглядає більш красиво.
Наприклад на rust це буде щось таке.
vec.iter_mut().take_while(|i| **i <= 5).for_each(|i| *i *= 10);
(щоправда і там намудрили з посиланнями на посилання). Ну а на хрестах — як завжди.
Ну а з іншого боку в плюсах algorithms це must use і якийсь умовний find_if з лямбдою буде мати набагато більше семантичного значення ніж ручний for-цикл.
std::for_each звичайно доволі нішева функція і на практиці я її використовую тільки якщо це буде лаконічний однострічник.
Маєш на увазі шелл по типу баша?
Я сподіваюсь hello world ти вже можеш написати.
Парсити аргументи на C по православному — це getopt: man7.org/...-pages/man3/getopt.3.html (на stack overflow пошукай приклади використання)
Парсити user input треба через readline: tiswww.case.edu/.../chet/readline/rltop.html (заодно там тобі і tab-completion)
cd — linux.die.net/man/2/chdir
exit — повертаєш EXIT_CODE з main() або exit(EXIT_CODE) (linux.die.net/man/2/exit)
help — пишеш вручну
path — я хз що це
pwd — man 2 pwd
cp — можна вручну — відкрити обидва файли, читати з одного писати в інший, або швидший варіант для linux — це sendfile
і т.д.
колір — просто пишеш ansi-послідовність байт в stdout/stderr і все що після цієї послідовності буде кольоровим
про логін я не дуже зрозумів куди він має логінитись
історія ніби є в libreadline вже (разом з навігацією стрілками вгору-вниз)
обробка помилок теж в libreadline
Найбільший бляха підсумок — нема і не буде модулів, рефлексії, корутин в 20 стандарті. Рейнджи хоч завезуть і на тому спасибі.
Йшов, ітіть його, 2019 рік.
Якщо вік до 30 років і з дипломом магістра що визнається Голандією — то є сенс.
Я б сказав Vim+YouCompleteMe+FZF.
Ну не знаю, мені складно порівняти з іншими університетами, бо я там не вчився, але з загальними оцінками по вузу цілком згоден. Теж вчився в НАУ
По С++ є непоганий (і єдиний нормальний?) подкаст: cppcast.com
При наявності диплома достатньої кваліфікації тобі дають податкові пільги (це десь лишніх
Стаття сама вода на кшталт «єслі у вас праблєми, ісправьтєсь і больше так нє дєлайтє».
До того ж складається враження ніби всі методології описують одну і ту ж послідовність вчинків тільки різними словами.
P.S. На діаграмі про Кайдзен в червоному кружечку у вас опечатка — «подчененных».