🦥Alex Fails
Полезная хрепь для проверки условий, которые обязаны быть истинными
Rafael 🌵
Dumitru
на счет ассертов, кто-то использовал Design by Contract в С++?
Ned
Но это же вроде проверка на этапе компиляции только
ну а если человек явно тупизну делает?
🦥Alex Fails
на счет ассертов, кто-то использовал Design by Contract в С++?
Вот про контрактное программирование я и вспомнил, когда мне начали про статик ассерт спрашиватт
Dumitru
Ссылочку
https://en.wikipedia.org/wiki/Design_by_contract конкретно в плюсах не знаю как оно работает, и есть ли вообще
Richard
Не рвись "туда". Если ты действительно достоин, то тебя заметят. Чем больше ты изъявляешь и проявляешь желание "туда" попасть - тем меньше у тебя шансов. Не торопи события, всему свое время. Не лезь туда.. Там не так "сладко" как ты это себе представляешь. З. Ы. По крайней мере, на данном этапе точно.
Оно само меня находит :) больше года я туда не лез в принципе, сейчас просто уже пошло в сторону, что либо я высказываю описанное выше и стою на своем, или со всем соглашаюсь и продолжаю дальше быть безвольным разрабом. За не сладко - это понятно) самое сладкое быть джуном: тебя за ручку водит синьор/лид, с тебя требуют просто адекватности, супер производительности никто не ждет :))
Ned
я например даже не слышал основных идей
Ned
если ООП можно передать в 2х словах, то что такое контракт?
🦥Alex Fails
что это вообще такое?
на русской вики тож есть
🦥Alex Fails
если ООП можно передать в 2х словах, то что такое контракт?
некоторые соглашения о выполнении фугкции
🦥Alex Fails
Типа "функция вернет 0, еслм индекс отрицательный", "для функции надо передавать значение x не больше N"
🦥Alex Fails
в17 стандарт пропосал хотели добавить
Dumitru
что это вообще такое?
проще говоря ты есть три условия которые должны быть True 1) все что происходит при вызове метода (pre-condition) 2) все что происходит полсе вызова метода (post-condition) 3) условия которые должны быть True в любом состоянии обьект (скажем сумма денег на счету должна быть >= 0)
Ned
фактически, если такую херОту добавили б в С++17, я бы сдох от синтаксического сахарного диабета
Dumitru
и всё?
там момент с их работой если падает на пре-кондишине криворукий пользователь если падает на пос-кондишине криворукий разработчик все это компилится в ассерты что сильно замедляют приложение, поэтому на релизе все контракты как правило вырубают
Ned
ну, мне кажется, такому маленькому девелоперу, как я, это пока ненужно
Ned
а вот где команды, скрам, все дела - там весьма полезно
Dumitru
на самом деле очень полезная штука))
Dumitru
тут есть кто слышал или писал на Eiffel ?
Andrey
Dumitru
это на тему контрактов, это был первый язык где они появились мало ли..
Крылатый
В 2х словах)
Vladislav
Зависимая типизация
скорее "жидкая", dependent types - более общая штука
Крылатый
Угу, но кусочек её тут есь)
Ned
сдаётся мне, вся эта херня превратит С++ в один большой снежный ком
Ned
который не столкнуть
Ned
он пока на плаву, потому что позволяет делать быстро то, что надо быстро
Ned
но в него налепили почти всё, чтобы сделать его питоном
Vladislav
но в него налепили почти всё, чтобы сделать его питоном
динамической типизации (слава богам!) не налепили пока
Ned
dynamic_cast
Ned
ну это так
Ned
шутейка
Artem
void* был с самого начала
Ned
void* был с самого начала
да и -fpermissive как бы
Dumitru
они и в D так-то идут в стоке
он как раз у эйфеля эту штуку взял, на сколько мне известно)
Ned
чот очень хочу D доучить до кондиции, да ток никому оно не надо
Ned
я на нём крошечную ОСь накатал, вряд ли она популяризует его, как юникс взорвал С
Крылатый
HaikuOS (и все BeOS) были на плюсцах в ядре.
Kirill
ртосы еще на плюсах есть
Anonymous
Ребзи а есть какая нибудь конфа по алгоритмам ?
🦥Alex Fails
Ребзи а есть какая нибудь конфа по алгоритмам ?
Были задумки сделать по алгоритмам, проектированию, и архитектуре
Anonymous
Но их нет я правильно понял ?
🦥Alex Fails
Сделаем
Rafael 🌵
в питоне можно получить имя вызываемой функции в виде строки, в плюсах есть подобный способ?
Artem
http://stackoverflow.com/questions/679021/how-to-find-the-name-of-the-current-function-at-runtime
Detur
имени функции вообще не существует в рантайме
Artem
Загадка
Artem
Почему люди не гуглят
Alexey
да тут гуглить-то не надо,можно просто подумать чуток.. откуда в С++, в скомпилированном бинаре имя функции?.. если только есть отладочная информация
Alexey
и то она работает только в связке с исходником
🦥Alex Fails
Альзо если оно экспортируется из exe/elf
Alexey
ну если оно экспортируется, то оно будет в таблице экспорта PEфайла
Alexey
там да.. будет имя
Artem
Кто вам сказал, что эти ограничения не удовлетворяются
Alexey
хотя может экспортироваться и не по имени
Alexey
на этапе компиляции препроцессор? с отладочной инфой
Alexey
макрос __func__
Rafael 🌵
Alexey
посмотри точно. вроде в студии и gcc они чуток по разному обзываются
🦥Alex Fails
Да
Крылатый
Он и в GCC __func__ должен быть.
Крылатый
Штандартно же.
Rafael 🌵
C99 introduces __func__, and GCC has provided __FUNCTION__ for a long time. Both of these are strings containing the name of the current function (there are slight semantic differences; see the GCC manual). Neither of them is a macro; the preprocessor does not know the name of the current function. They tend to be useful in conjunction with __FILE__ and __LINE__, though. https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html
Alexey
ну вот) оно
Rafael 🌵
вот еще лучше: https://gcc.gnu.org/onlinedocs/gcc/Function-Names.html