... но не любой ценой.
-
- Многие слышали про книгу Хемингуэя "The old man and the C", а
некоторые даже читали. Не все знают, что Хемингуэй написал
продолжение, "The old man and the C++". Но книга получилась такая
грустная, что автор впал в депрессию, сжёг второй том
"Мёртвых душ"и застрелился. True story (almost). - йцyкeн(23.12.2020 18:43)- С мест советуют: "Более правильной была бы концовка: "и выстрелил себе в ногу". - Toчкa oпopы(25.12.2020 15:40)
- Можно пример "как-то иначе сформулировать, чтобы компилятор сделал
именно то, что тебе нужно"? Хочется разнести в пух и прах :-) - SciFi(23.12.2020 17:53)
- x, y = y, x - Cкpипaч(23.12.2020 19:47)
- swap? Вот ведь неожиданность. Какие там могут быть трудности
объяснить компилятору? Завести временную переменную? - SciFi(23.12.2020 21:05)
- OOO! Трудности могут быть и большие. Дьявол кроется в мелочах. Как, например, обменять местами два очень больших класса? Или класс в котором есть не копируемый ресурс (открытый сокет, например). Или два контейнера (чуть попроще, т.к. у них есть swap() свой или они имеют move-конструктор). Где-то читал но забыл, std::swap в общем сложная функция... - fk0(23.12.2020 21:36)
- Еще варианты: x,y,z = BestPointCoordinates() Cкpипaч(142 знак., 23.12.2020 21:32)
- Вот тут рассказывают, для C++-программистов рекомендую... (но вообще этот тот же кортеж, std::tuple). fk0(1 знак., 23.12.2020 21:42, ссылка, youtube)
- Аппетит приходит во время еды. Вы ещё попросите компилятор кофе
сварить :-) - SciFi(23.12.2020 21:42)
- Он у меня умный. И догадливый :о) - Cкpипaч(23.12.2020 21:45)
- Как компилятора зовут? Сансаныч? Мариванна? :-) - SciFi(23.12.2020 21:55)
- Он у меня умный. И догадливый :о) - Cкpипaч(23.12.2020 21:45)
- В крестах это будет lloyd(37 знак., 23.12.2020 19:49)
- std::swap? - йцyкeн(23.12.2020 21:03)
- std::swap работает только на двух аргументах, если надо будет три -
опять сводится к тульпе. Но мой коммент скорее про то, что в с++
такая строчка может быть 1:1 - lloyd(23.12.2020 21:20)
- Пытаюсь вспомнить, когда мне последний раз нужно было поменять три
переменные. Кажется, это было до большого взрыва. - йцyкeн(23.12.2020 23:42)
- std::rotate же! На самом деле полезная вещь. Можно что-то, какие-то записи, которые удобно потом видеть в памяти непрерывным блоком, обычно текст, писать в кольцевой буфер. А потом сделать rotate всего буфера и получить набор данных который начинается строго в начале буфера (на самой старой не перезаписанной поверх другими записи) и кончается где-то незадолго до конца. fk0(396 знак., 24.12.2020 01:39, ссылка)
- Пытаюсь вспомнить, когда мне последний раз нужно было поменять три
переменные. Кажется, это было до большого взрыва. - йцyкeн(23.12.2020 23:42)
- std::swap работает только на двух аргументах, если надо будет три -
опять сводится к тульпе. Но мой коммент скорее про то, что в с++
такая строчка может быть 1:1 - lloyd(23.12.2020 21:20)
- В крестах ещё есть structured bindings --> - fk0(23.12.2020 20:01, ссылка)
- Ну, нотация "auto [a, b, ...] = tuple" создает новую переменную в
области видимости, поэтому тот пример вроде бы все-таки через
std::tie делается - lloyd(23.12.2020 20:20)
- Если вам мало "синтаксического мусора" - добавьте reinterpret_cast :o) - Cкpипaч(23.12.2020 21:44)
- Ну, нотация "auto [a, b, ...] = tuple" создает новую переменную в
области видимости, поэтому тот пример вроде бы все-таки через
std::tie делается - lloyd(23.12.2020 20:20)
- std::swap? - йцyкeн(23.12.2020 21:03)
- swap? Вот ведь неожиданность. Какие там могут быть трудности
объяснить компилятору? Завести временную переменную? - SciFi(23.12.2020 21:05)
- x, y = y, x - Cкpипaч(23.12.2020 19:47)
- Проблема в том, что в питоне компилятор очень условный. Считай его
нет. И пока ты абсолютно все ветви программы не покроешь тестами,
руками не протестируешь, и т.п., у тебя вообще нет никаких
гарантий, что оно работает. Догадываешься куда это катится с
более-менее сложной программой ("с высокой цикломатической
сложностью") ? Любая, абсолютно глупая даже не ошибка, описка -- и
оно "компилируется". И работает, пока не зайдёт в проблемную ветку
кода. C++ по крайней мере даёт fk0(691 знак., 23.12.2020 17:11, ссылка)
- На крестах есть одна проблема - на них скучно писать просто. То есть вечно руки чешутся повыделываться, запилив автоматическую обработку чего-нибудь на шаблонах и constexpr. - lloyd(23.12.2020 19:20)
- Не заставляйте меня повторяться. Python type annotations. Есть и
работает. Используем в вполне себе немаленьком проекте. - Cкpипaч(23.12.2020 19:08)
- Но всё равно это не замена статически типизированного языка, вроде Java, C++ или C#. Последние имеют ещё ряд концепций необходимых для поддержки типизированного программирования: 1) автоматический вывода типа выражении и аргументов функций (и собственно (автоматическое) преобразование типов на данном этапе), 2) перегрузку функций (и множественные конструкторы у классов, читай статический полиморфизм), 3) пользовательские операторы конверсии типов (не в Java...) fk0(257 знак., 23.12.2020 21:23)
- таки да, через год выяснил что там была ошибка. Go в этом плане радикально другой но питон это все де динамический интерпретируемый язык. Ну а поюсы меняются, в 20 вон чего нагородили - OlegPowerC(23.12.2020 17:50)
- Ни разу с++ не делал не того, что я хочу. Как тебе удалось
заставить его работать иначе? ... POV_(116 знак., 23.12.2020 16:42,
)
- Мне периодически "удается" заставить его отказываться
компилировать, казалось бы, достаточно линейные фразы(?) Cкpипaч(114 знак., 23.12.2020 19:06)
- Вспоминаю далёкий 1998 год, я на третьем курсе. Из знаний
программирования - ассемблер и бейсик... POV_(208 знак., 23.12.2020 19:52,
)
- После Бейсика "учил" Modula-2. Весь язык - половина страницы формул
Бэкуса-Наура. И Си - со справочником на двух страницах. По полчаса
на язык, примерно :) - Cкpипaч(23.12.2020 21:39)
- На тот момент у меня никакой книги не было. Просто фантазировал по
аналогии... POV_(154 знак., 24.12.2020 00:39,
)
- modula кстати интересный - OlegPowerC(23.12.2020 22:27)
- На тот момент у меня никакой книги не было. Просто фантазировал по
аналогии... POV_(154 знак., 24.12.2020 00:39,
- После Бейсика "учил" Modula-2. Весь язык - половина страницы формул
Бэкуса-Наура. И Си - со справочником на двух страницах. По полчаса
на язык, примерно :) - Cкpипaч(23.12.2020 21:39)
- Вспоминаю далёкий 1998 год, я на третьем курсе. Из знаний
программирования - ассемблер и бейсик... POV_(208 знак., 23.12.2020 19:52,
- вот JS это сила! :-) - OlegPowerC(23.12.2020 17:51)
- === чего только стоит! :-D - Dingo(23.12.2020 19:02)
- Мне периодически "удается" заставить его отказываться
компилировать, казалось бы, достаточно линейные фразы(?) Cкpипaч(114 знак., 23.12.2020 19:06)
- Многие слышали про книгу Хемингуэя "The old man and the C", а
некоторые даже читали. Не все знают, что Хемингуэй написал
продолжение, "The old man and the C++". Но книга получилась такая
грустная, что автор впал в депрессию, сжёг второй том