- 1
- 2
// Извиняюсь, но кода не будет, только ссылка.
// https://github.com/fruxo/turbobadger
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+55
// Извиняюсь, но кода не будет, только ссылка.
// https://github.com/fruxo/turbobadger
>> With compilers supporting C+ + 11
Вот лично против либы ничего не имею - годная получилась. Но..
Аффтар заучил nullptr, и считает что теперь он использует c++11.
Епт, да эта либа спокойно собирается под vc2008, стоит только задефайнить nullptr как 0.
inkanus-gray 16.10.2014 12:11 # +1
Если я правильно понял, то если компилятор поддерживает C++11, куча вычислений будет проведена на этапе компиляции и код будет более эффективным. Вот же тот самый фрагмент для компиляторов с поддержкой C++11, на которых всё разрешится во время компиляции:
И для говна мамонта, с которым всё придётся делать в рантайме:
Надеюсь на то, что Pythoner'у будет стыдно за это.
kipar 16.10.2014 12:14 # +2
inkanus-gray 16.10.2014 12:15 # +1
1024-- 16.10.2014 12:37 # +1
А вообще обидно. Пилишь-пилишь, а потом кто-то "Где здесь C++11?"
inkanus-gray 16.10.2014 12:40 # 0
MAMOHT 03.12.2018 06:13 # 0
roman-kashitsyn 16.10.2014 12:15 # +5
Тарас поддерживает констэкспры.
inkanus-gray 16.10.2014 12:21 # 0
roman-kashitsyn 16.10.2014 12:25 # +2
inkanus-gray 16.10.2014 12:25 # 0
inkanus-gray 16.10.2014 12:27 # 0
Автор так помечает конец ветки, в которой выполнено условие.
// !TB_SUPPORT_CONSTEXPR — конец ветки, в которой !defined(TB_SUPPORT_CONSTEXPR)
// TB_SUPPORT_CONSTEXPR — конец ветки, в которой defined(TB_SUPPORT_CONSTEXPR)
roman-kashitsyn 16.10.2014 12:32 # 0
3.14159265 16.10.2014 13:00 # +4
Чур, чур. Вот почему крестобляди такие мелочные?
"Эффективным". Да ну нах. Преждвременная оптимизация, вот что говорил старина Кнут, о таких.
Ничтожный выигрыш в доли процента, который никто никогда не почувствует, ибо тупит обычно совсем в другом месте (и без профайлера этого не выяснить). Сборка может идти долгие часы, но зато крестоприложение запустится на микросекунду быстрее!!! Нет, ну вы представляете?!
Да программист больше раз пересоберёт тот код, чем пользователь почувствует какое-то замедление от расчёта хеша захаркоженой строки.
Это я к тому почему сборки крестокодов такие меееееееедлеееенныеыыыыыыыыыееееееее.
Soul_re@ver 16.10.2014 13:07 # +2
В С++14 проще: добавил constexpr перед функцией, задефайнил constexpr на пустую строку для неподдерживающих и ОК.
inkanus-gray 16.10.2014 13:21 # 0
roman-kashitsyn 16.10.2014 13:25 # +1
3.14159265 17.10.2014 21:36 # +2
Не пойму чего они вообще эти ограничения?!
По сути совсем немножко упростили сделав ненужными шаблоны для этих делов.
Да и код компилирующийся бесконечное время и можно было писать и до того.
По сути крестоблядям и не только нужен отдельный метаязык времени компиляции. Где желательно еще будет управление макросами. Причем эту стадию можно вынести в совершенно разными и неожиданными способами.
И вот тут мне приходит мысль что мы где-то уже это обсуждали. Ведь точно wvxvw, лисп и его особые стадии компиляции.
Soul_re@ver 17.10.2014 23:43 # +1
«ко-ко-ко разработчики компиляторов ниасилят полноценные функции». А вообще Мейерс давно говорил, что кресты по сути состоят из четырёх отдельных языков.
3.14159265 18.10.2014 00:52 # +1
Я не поленился, нашёл цитату. В том-то и проблема что Майерс писал об этом давно - аж в 2005.
Scott breaks down the c++ language into 4 subparts:
* The old C subsystem. Before all these advanced programming languages such as Java and .NET came, C was the language of choice. C++ is "translated" to C first, and then complied and linked to an executable.
* OO C++, which is C with Classes. This is where the concept of Object Orientation in C++ started. Even though this concept was very much new a decade ago, it is very much part of a programmer's vocabulary.
* Template C++, which is the newest edition to the C++ standard and it brings with it the concept of Template Metaprogramming. This concept is very much new, and this book has dedicated a whole chapter around templates, and template metaprogramming.
* STL, which is the C++ Standard Template Library. Again, STL was a new concept a few years back, but it is very much an established notion in C++
С тех пор придумали бустятину и в моду вошла функцианальщина: лямбды, хитрые выводы типов, foreach, auto (и всё из нового стандарта о чем я еще не знаю), так что подязыков там сейчас куда больше.
И не подумайте что я фанат лишпов, но на ум приходит правило Гриспена:
Любой достаточно сложный язык содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.
1024-- 18.10.2014 01:00 # 0
>> А вообще M$ давно говорил, что винды по сути состоят из джвух отдельных систем.
> Я не поленился, нашёл цитату. В том-то и проблема что M$ писал об этом давно, а теперь обещает снова единую запилить.
roman-kashitsyn 16.10.2014 13:28 # +3
Абсолютно согласен.
Хэштаблицы с виртуальными методами, зато хэши вычисляются быстро, ага.
bormand 16.10.2014 15:16 # 0
Taras B?
Тьфу, выше Роман уже об этом написал. Сорри.
3.14159265 16.10.2014 15:16 # +3
absolut 16.10.2014 20:52 # +3
guest 16.10.2014 12:48 # −9
guest 17.10.2014 20:22 # −3