Отговори на тема  [ 26 мнения ]  Отиди на страница 1, 2  Следваща
C++ 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение C++
Доста време не бях пипал модерно C++ и явно съм изостанал от добавените модерности в него - а то не е като да няма, като те това направо ме облещи:

User-defined literals (since C++11)

Код:
#include <iostream>

// used as conversion
constexpr long double operator"" _deg ( long double deg )
{
    return deg * 3.14159265358979323846264L / 180;
}

// used with custom type
struct mytype
{
    unsigned long long m;
};
constexpr mytype operator"" _mytype ( unsigned long long n )
{
    return mytype{n};
}

// used for side-effects
void operator"" _print ( const char* str )
{
    std::cout << str;
}

int main(){
    double x = 90.0_deg;
    std::cout << std::fixed << x << '\n';
    mytype y = 123_mytype;
    std::cout << y.m << '\n';
    0x123ABC_print;
}


... и не мога да видя смисъла в ""_mytype и "" _print т.е. то е ясно, че може да се прави и така ама за чий ще му е на някой да осира така сорса?!

_________________
Мразя да мразя ...


Чет Мар 05, 2020 12:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: C++
palavrov написа:
за чий ще му е на някой да осира така сорса?!


Предполагам знаеш разликата между compile time и run time... С въвеждането на constexpr в С++ се даде възможност да се пише код, който се изпълнява compile time.
Преди това беше изцяло във възможностите на компилатора. Примерно ако ти трябва дължината на стринг можеше да напишеш strlen("bla-bla") и компилаторът ще се усети, че няма нужда да вика функции. Той може да преброи символите. Но не всички компилатори са толкова добри, а и най-добрите са ограничени в това какво може да се оптимизира.
Докато с constexpr вече програмиста има контрол върху това какво и как трябва да се оптимизира. Просто си овърлоадваш функцията с compile time версия и run time версия. След това при всяко викане компилатора гледа дали работиш с константи и ако да прави сметките и замества викането с резултата. Ако не - остава си викането на рън тайм версията.

Това даде възможност и за друга екстра - да си ползваш литерали в сорса в една мерна единица, а те да се компилират в друга. Примерно аз работя в метрична мерна система и предпочитам константите ми да са в метри, милиметри и т.н. Но ако трябва да ги подавам на библиотека, която е в имперски мерни единици трябва да обръщам всички константи ръчно. Което е тъпо.. Но с оператор "" може да си дефинираш конверсия. Както и в твоя пример в сорса кода ползват градуси, които се компилират като радиани. Съгласи се, че е удобство ;-)


Чет Мар 05, 2020 1:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: C++
Е, аз заради това ""_deg го пропуснах - за него донякъде има смисъл, но останалите примери ми идват безумни.

А това с constexpr наистина има смисъл за да накара компилатора да покаже грешка ако в съотвената функция не е stateless т.е. може не може да се изчисли compile time.

Та това което ме изуми е добавянето на тези литерални суфикси - с тях навика да парсваш с поглед сорс не ти върши работа (то аз така и "открих" това нововъведение) т.е. ако погледнеш един сорс на модерно C++ не можеш веднага да прецениш как би се компилирал без да си прегледал и всички важящи дефиниции в дадения контекст дефинирани по напред в същият файл и в инклуднатите файлове. Да, така се пише лесно първоначално докато всичко ти е в главата но ако трябва да се пипа след време или пък да се включи нов програмист се губи сумати време само защото някой е прекалил с модерностите.

_________________
Мразя да мразя ...


Чет Мар 05, 2020 1:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: C++
Мда, с модерностите нещата лесно могат да излязат от контрол.
Особено ако почнеш да работиш с шаблони... Аз се опитах да направя опростена версия на STL-a. Мога да ти кажа, че ако му погледнеш сорсовете тия примери дето даваш са като за ниво детска градина ;-)


Чет Мар 05, 2020 1:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: C++
Гледал съм ги навремето като излезнаха - още тогава бяха супер омотани за да вървят на различни версии и компилатори и предполагам, че едва ли са станали по четливи с времето.

Последните години все повече ме мъчи дългосрочната цена на разработка на софтуер и установих, че от всичко най евтино излиза plain old C (ако може с const) където всичко е explicit и с един grep можеш да проследиш кое къде се ползва без да се налага да ползваш умно IDE. Да, изисква повече усилия в началото но с времето се изплащат многократно докато при модерните езици където всичко е implicit първоначалното време за разработка е малко, но пък след време става все по скъпо. Разбира се всеки проблем е и предимство т.е. ако пазара е ширпотреба и не се налага дългосрочна поддръжка няма смисъл да се оскъпява първоначалната разработка или пък ако си под изпълнител и ти се плаща на time & materials тогава по скъпата разработка във времето е за предпочитане - разбира се ако клиента се подлъже по привидно евтината разработка в началото.

_________________
Мразя да мразя ...


Чет Мар 05, 2020 2:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: C++
то търсенето е ключово, независимо на какво пишеш ;-)


Чет Мар 05, 2020 5:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: C++
търсене има колкого искаш, предлагане няма :D

Присетих се за един стар виц:

В майкрософт търсели с bing но намирали с google ....

_________________
Мразя да мразя ...


Чет Мар 05, 2020 6:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 9:16 am
Мнения: 1705
Мнение Re: C++
Да продължа и аз малко оффтопика :D

До момента като гледам, клиента избира.. т.е не избира а направо си иска минимално време за девелопмент (възможно най-ниска цена). Това със С ще ти е трудно да го постигнеш. Само си представям да имаш много обработки на стрингове и от сега те виждам как ще се метнеш от някъде ако ти се наложи да го пишеш на С.
На теб може и да ти е ясно как ще е най-добре за проекта в дългосрочен план, но когато на опашката има още поне 5 фирми с оферти, ще ти се наложи да си преглътнеш предразсъдъците и да работиш с езици от високо ниво, колкото и да не ти харесва, само и само да имаш работа.


Чет Мар 05, 2020 7:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: C++
Е то като работя за други най много веднъж-дваж да помрънкам, че то не се прави така ... и толкова :D

Но като е за проекти където нещата зависят от мен си имам едно на ум и последните 10 години не е имало изпускане в грешна посока ...

_________________
Мразя да мразя ...


Чет Мар 05, 2020 7:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2581
Местоположение: Велико Търново / София
Мнение Re: C++
А защо не C# ? Аз сега уча C# и има страшно много неща от високо ниво. Дори може да се пише почти само функционално. И за стрингове има доста методи.

_________________
https://github.com/slav4ocom/


Чет Мар 05, 2020 7:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: C++
slav4o.com написа:
А защо не C#


Защото е недоразумение, като всичко от М$ ;-)


Чет Мар 05, 2020 7:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: C++
slav4o.com написа:
Дори може да се пише почти само функционално. И за стрингове има доста методи.

Точно за това ...


Чет Мар 05, 2020 9:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: C++
C# по мое мнение е ОК като възможности на езика обаче е почти без никаква перспектива освен за поддръжка на вече направени с него проекти.
И това го казвам след почти 10 години опит с .net още от бета версиите които излезнаха около 2000-та - една от най големите ми технологични издънки - да бях започнал още тогава да работя с линукс ама каквото такова.

_________________
Мразя да мразя ...


Пет Мар 06, 2020 10:24 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: C++
Всички правим грешки... И с одъртяването все повече се замисляме на тема грешки и успехи. Аз напоследък все повече разсъждавам над факторите, които водят до добър или лош резултат. Преди години отдавах голямо значение на "професионализма" и съответно на бизнеса. Все пак повечето теории в нашата област са от 30-те до 60-те години на миналия век и гледах на академичната среда (особено нашенската) като нещо през което е добре да минеш, ама важните неща в живота се случват след това.
Сега си давам сметка, че това е грешно. Да, много компании като М$ правят много кинти само с "професионализъм". Но във времето по-устойчиви се оказват неща, свързани с академични среди. Не е задължително да е курсова работа на студентче, но буквално има и много такива случаи и те надживяват продукти в които са инвестирани милиарди$. Това е особено видимо в щатите, където почти всички топ разработки и топ компании работят съвместно с университети. За съжаление в Европа това не е толкова видимо, а у нас пък хич го няма.


Пет Мар 06, 2020 11:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 12:31 pm
Мнения: 3282
Мнение Re: C++
palavrov написа:
C# по мое мнение е ОК като възможности на езика обаче е почти без никаква перспектива освен за поддръжка на вече направени с него проекти.


Ако VR/AR навлезе масово, С# няма да е никак безпреспективно имайки предвид нейтив поддръжката му в Unity.


Пет Мар 06, 2020 1:46 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 26 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни