powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Куда катится C++
25 сообщений из 285, страница 3 из 12
Куда катится C++
    #39278899
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritichmayton 3. Качество кода с точки зрения восприятия человеком.

Например Delphi/Pascal имеет практическую удобную форму
подачи алгоритма которая понятна даже не знающему программирование.



это как? , можно пример
Ну.. например английский язык. Если читать Delphi-алгоритм то получается почти осмысленный
текст. Этим часто пользуются в учебниках по дискретной математике и теории графов при
описании какой-то идеи.
...
Рейтинг: 0 / 0
Куда катится C++
    #39278905
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritichна самом деле есть 2 абсолютных показателя эффективности яп:
1)скорость написания
2)скорость чтения

Есть такой тезис что программист 90% времени занят чтением текст программы. Либо документации.
Я не люблю эту фразу но это "всем известно" или "очевидно".

Если вы старжил форума то вы наверняка знаете студентика который кодил ультра-короткие языки.
Предлагаю погуглить. Там много было сломано копий и разбито клавиатур... Мдя.
...
Рейтинг: 0 / 0
Куда катится C++
    #39278968
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryУ нас был Си. Потом появился так называемый C with classes, который и стал основой для С++. Но почему появление в языке такой сущности как классы, привело к тому, что появился новый язык С++, а не к расширению языка Си? Ведь возможность разработки на Си в объектно-ориентированном стиле существовала и на тот момент, и явная сущность класса в каком-то смысле является синтаксическим сахаром. С момента появления языка С++ в нем произошло большое число изменений, но достаточно ли их для того, чтобы появился новый язык, и нужно ли это. Мне это неизвестно, но мне кажется, что по вопросу в данной теме было бы полезнее размышлять в таком ключеПочитай вот эту книжку:
https://www.amazon.com/gp/product/0123745144
Много-много вопросов отпадут.
...
Рейтинг: 0 / 0
Куда катится C++
    #39278972
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему же С++ не С и таков, как есть? Я бы почитал у автора
The Design and Evolution of C++
...
Рейтинг: 0 / 0
Куда катится C++
    #39278974
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, о "катится С++". Можно почитать, куда его хочет катить старина Бьярне...
...
Рейтинг: 0 / 0
Куда катится C++
    #39278982
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritich1)скорость написания
2)скорость чтения

Большинство новых фич улучшают первое, неготивно влияя на второе.
Ну это надо еще доказать.))

Например, лямбды намного улучшают читаемость, т.к. повышают локальность кода реализующего алгоритм (в отличие от функций-колбэков).
Ждем ваши примеры ухудшения читаемости (которых большинство).

maytonголосование
Не заморачивайтесь, все равно здесь выборка нерепрезентативная. Да и собственно нет ее, этой выборки ))
...
Рейтинг: 0 / 0
Куда катится C++
    #39278988
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНе заморачивайтесь, все равно здесь выборка нерепрезентативная. Да и собственно нет ее, этой выборки ))
Ничего. Я вижу аудиторию. И я буду делать в уме поправку.
Но даже такие сведения для меня будут ценны.
...
Рейтинг: 0 / 0
Куда катится C++
    #39278989
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Куда катится C++
    #39279543
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_kalex_k,

хотя мне пришлось сделать хак:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
extern "C" void __aeabi_unwind_cpp_pr0 (void)
{
}

 void __aeabi_unwind_cpp_pr1 (void)
{
}

 void __aeabi_unwind_cpp_pr2 (void)
{
}



без этого не линкуется. хз, что это такое :)
Обработка исключений. Запрети их и не используй.

https://gcc.gnu.org/onlinedocs/libstdc /manual/using_exceptions.html
...
Рейтинг: 0 / 0
Куда катится C++
    #39279740
chritich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonchritichпропущено...

это как? , можно пример
Ну.. например английский язык. Если читать Delphi-алгоритм то получается почти осмысленный
текст. Этим часто пользуются в учебниках по дискретной математике и теории графов при
описании какой-то идеи.
хотелось бы увидеть пример кода такого алгоритма на дельфях, очень сомнительно что там текст более осмысленный чем у других.
А популярность делфей среди такой аудитории связана исключительно с развитой инфраструктурой для програмирования мышкой
...
Рейтинг: 0 / 0
Куда катится C++
    #39279759
chritich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovskychritich1)скорость написания
2)скорость чтения

Большинство новых фич улучшают первое, неготивно влияя на второе.
Ну это надо еще доказать.))

Например, лямбды намного улучшают читаемость, т.к. повышают локальность кода реализующего алгоритм (в отличие от функций-колбэков).
Ждем ваши примеры ухудшения читаемости (которых большинство).

ну я ж не утверждаю, что все новые фичи -зло.
А лямбды надо было добавить в стандарт еще тогда, когда туда добавили <algorithms>.

Итак, абсолютное зло из нового стандарта:
ключевое слово auto, скрывает имена типов, читать код становится сложнее - это очевидно. Это, своего рода,- уход от статической типизации, ведь статическая типизация - не только помогает отловить ошибки при компиляции, но и повышает читабельность кода.
...
Рейтинг: 0 / 0
Куда катится C++
    #39279767
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chritichИтак, абсолютное зло из нового стандарта:
ключевое слово auto, скрывает имена типов, читать код становится сложнее - это очевидно.
Нет. Не очевидно. И у меня обратное мнение.
Таким образом ваше слово против моего. Пока не тянет на доказательство.
Приведите например кусок кода, где идет цикл по итератору, и убедите меня что явное упоминание типа итератора повышает читаемость )))
...
Рейтинг: 0 / 0
Куда катится C++
    #39279787
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+1

auto & lambda очень повышают читабельность. Без них вообще не вижу смысла заниматься набиванием типов по 3 раза на функцию.
...
Рейтинг: 0 / 0
Куда катится C++
    #39279833
critich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskychritichИтак, абсолютное зло из нового стандарта:
ключевое слово auto, скрывает имена типов, читать код становится сложнее - это очевидно.
Нет. Не очевидно. И у меня обратное мнение.
Таким образом ваше слово против моего. Пока не тянет на доказательство.
Приведите например кусок кода, где идет цикл по итератору, и убедите меня что явное упоминание типа итератора повышает читаемость )))
вот пример кода, что напечатается в поток вывода?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
template<typename T>
void print(const T &)
{
	cout<<"print function for this type is undefined"<<endl;
}

template<>
void print(const Employee &emp)
{
	cout<<"Employee at "<<hex(this)<<", name:"<<emp.name()<<" ,age:"<<emp.age()<<", spec."<<emp.specification()<<endl;
}

void printSomething()
{
	auto some=getThing();
	print(some);
}
...
Рейтинг: 0 / 0
Куда катится C++
    #39279834
critich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl+1

auto & lambda очень повышают читабельность. Без них вообще не вижу смысла заниматься набиванием типов по 3 раза на функцию.
офигеть, auto оказывается ещё и повышает читабельность
...
Рейтинг: 0 / 0
Куда катится C++
    #39279888
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl+1

auto & lambda очень повышают читабельность. Без них вообще не вижу смысла заниматься набиванием типов по 3 раза на функцию.
Про лямбда отчасти согласен, а auto это просто попытка упростить вышедший из под контроля синтаксис. Оно конечно лучше чем typedef на каждый чих,но тут плюс как и с лямбдами - не надо ломать голову для придумывания очередного осмысленного имени. Хотя не факт что это плюс, т.к. лишний повод не задумываться что пишешь.
...
Рейтинг: 0 / 0
Куда катится C++
    #39279904
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
critichвот пример кода, что напечатается в поток вывода?
Вообще-то перегрузка/специализация функций существует, чтобы не задумываться о том какая функция вызывается, а чтобы компилятор сам вызывал нужную в зависимости от типа.
Поэтому ответ на этот вопрос - напечатается содержимое объекта переданного в print.
...
Рейтинг: 0 / 0
Куда катится C++
    #39279990
Гость123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyПоэтому ответ на этот вопрос - напечатается содержимое объекта переданного в print.
Какой-то очень оптимистичный взгляд. Лично у меня несколько раз в году печатается содержимое временного объекта, который был создан из переданного объекта. Сам конечно виноват, что ленюсь все конструкторы с одним параметром объявлять explicit. Однако auto использую только там, где тип 100% понятен из окружающего кода(итераторы и некоторые другие гораздо более редкие случаи), в остальных случаях явно прописываю тип, чтобы мне, а не компилятору, было понятно с каким классом работаем и какая перегрузка функции будет вызвана.
...
Рейтинг: 0 / 0
Куда катится C++
    #39280009
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
critichSiemargl+1

auto & lambda очень повышают читабельность. Без них вообще не вижу смысла заниматься набиванием типов по 3 раза на функцию.
офигеть, auto оказывается ещё и повышает читабельность

auto повышает читаемость но снижает информативность.
...
Рейтинг: 0 / 0
Куда катится C++
    #39280089
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglОбработка исключений. Запрети их и не используй.

Отлично! Спасибо :)
...
Рейтинг: 0 / 0
Куда катится C++
    #39292342
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivSashaMercury,

с++ отличается от с не только наличием классов.
с++ принципиально язык со строгой типизацией.

Это я запомнил, потому удивился сегодня, когда перечитывал BS.
The C++ PL $7.4
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void print (double );
void print (long);
void f ()
{
print(1L ); // print(long)
print(1.0) ; // print(double)
print(1) ; // error, ambiguous: print(long(1)) or print(double(1))?
}


Finding the right version to call from a set of overloaded functions is done by looking for a best
match between the type of the argument expression and the parameters (formal arguments) of the
functions. To approximate our notions of what is reasonable, a series of criteria are tried in order:
[1] Exact match; that is, match using no or only trivial conversions (for example, array name to
pointer, function name to pointer to function, and T to c o n s t T )
[2] Match using promotions; that is, integral promotions (b o o l to i n t , c h a r to i n t , s h o r t to i n t ,
and their u n s i g n e d counterparts; §C.6.1), f l o a t to d o u b l e , and d o u b l e to l o n g d o u b l e
[3] Match using standard conversions (for example, i n t to d o u b l e , d o u b l e to i n t , D e r i v e d * to
B a s e * (§12.2), T* to v o i d * (§5.6), i n t to u n s i g n e d i n t ; §C.6)
[4] Match using userdefined
conversions (§11.4)
[5] Match using the ellipsis ... in a function declaration (§7.6)
If two matches are found at the highest level where a match is found, the call is rejected as ambiguous.
The resolution rules are this elaborate primarily to take into account the elaborate C and C++
rules for builtin
numeric types (§C.6). For example:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void print (int);
void print (const char*);
void print (double);
void print (long);
void print (char);
void h (char c , int i , short  s , float  f )
{
print (c ); // exact match: invoke print(char)
print (i ); // exact match: invoke print(int)
print (s ); // integral promotion: invoke print(int)
print (f ); // float to double promotion: print(double)
print (&#180;a &#180;); // exact match: invoke print(char)
print (4 9 ); // exact match: invoke print(int)
print (0 ); // exact match: invoke print(int)
print ("a "); // exact match: invoke print(const char*)
}



Думал, что строгая типизация в принципе не позволит такого. Но, даже если в том случае, если данные преобразования законны в рамках термина "строгая типизация", BS ранее пишет о том, что существует некий оператор reinterpret_cast. Вот, что он пишет о нем:
same $6.2.7The s t a t i c _ c a s t operator converts between related types such as one pointer type to another, an
enumeration to an integral type, or a floatingpoint
type to an integral type. The reinterpret_cast
handles conversions between unrelated types such as an integer to a pointer. This distinction
allows the compiler to apply some minimal type checking for s t a t i c _ c a s t and makes it easier for a
programmer to find the more dangerous conversions represented as reinterpret_casts. Some
s t a t i c _ c a s t s are portable, but few r e i n t e r p r e t _ c a s t s are. Hardly any guarantees are made for
reinterpret_cast , but generally it produces a value of a new type that has the same bit pattern as its
argument. If the target has at least as many bits as the original value, we can r e i n t e r p r e t _ c a s t the
result back to its original type and use it. The result of a r e i n t e r p r e t _ c a s t is guaranteed to be
usable only if its result type is the exact type used to define the value involved. Note that
r e i n t e r p r e t _ c a s t is the kind of conversion that must be used for pointers to functions (§7.7).

Что значит "generally "?) Сегодня generally завтра у нас "special case". Разве из этого не следует что у С++ всё-таки слабая типизация. Или лучше сказать "не сильная типизация", или это всё-же не так?
...
Рейтинг: 0 / 0
Куда катится C++
    #39292536
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryСегодня generally завтра у нас "special case". Разве из этого не следует что у С++ всё-таки слабая типизация
Из этого - не следует )))
...
Рейтинг: 0 / 0
Куда катится C++
    #39292636
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryДумал, что строгая типизация в принципе не позволит такого. Но, даже если в том случае, если данные преобразования законны в рамках термина "строгая типизация", BS ранее пишет о том, что существует некий оператор reinterpret_cast. ... Разве из этого не следует что у С++ всё-таки слабая типизация. Или лучше сказать "не сильная типизация", или это всё-же не так?
Нет, не следует. reinterpret_cast - это ... способ сказать компилятору "отвянь, я знаю что делаю" и выключить любые проверки. В любом случае, опытный программист всегда найдёт способ выстрелить себе в ногу... Так что С++ - это язык со строгой типизацией, кроме того случая (и для тех участков кода), когда вы сами сознательно заставляете его проверять поменьше. В обычной ситуации применять кувалду reinterpret_cast программисту для решения своих задач не требуется.
...
Рейтинг: 0 / 0
Куда катится C++
    #39292721
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySashaMercuryСегодня generally завтра у нас "special case". Разве из этого не следует что у С++ всё-таки слабая типизация
Из этого - не следует )))

А из чего это следует?) Или всё-таки у С++ строгая типизация
...
Рейтинг: 0 / 0
Куда катится C++
    #39292776
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryА из чего это следует?) Или всё-таки у С++ строгая типизация
Что такое строгая типизация и пригодны ли языки с нею для практического использования никто не знает.
Про С++ можно только сказать, что тут строже чем в С.
Например нельзя из void* присваивать в другие указатели.
А то, что например обратно можно, как раз и говорит что о полностью строгой типизации нет речи.
Но там где реально надо - проверка равенства типов есть.
Немножко даже добавили в С++11.
...
Рейтинг: 0 / 0
25 сообщений из 285, страница 3 из 12
Форумы / C++ [игнор отключен] [закрыт для гостей] / Куда катится C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]