- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Чего такого умеют кресты, что не умеет Си?
Шаблоны - никто не пользует.
Перегрузка операторов - вообще дурь какая-то: не понятно чего ожидать от полюса или минуса.
Очевидный ответ - объекты , а так уж они нужны? Ну вот есть объект - библиотека работы с сокетами. Создал экземпляр, заполнил поля с адресом и портом, выполнил метод connect. Попользовался, освободил память. И чем оно лучше, чем если бы я запилил структуру и набор функций для работы с ней?
За скобки вынесем области применения, где преимущества объектного подхода очевидны: игры, ГУЙ и прочее. Поговорим об остальном.
Псто не мое.
Заходите на "огонек": https://www.linux.org.ru/forum/development/14396202
real_escape_string 08.08.2018 19:42 # −1
bar-u-xoloda 08.08.2018 20:54 # +1
guest8 08.08.2018 20:57 # −999
bar-u-xoloda 08.08.2018 21:04 # +1
guest8 08.08.2018 21:14 # −999
bormand 08.08.2018 21:16 # +1
Да не хотел он... Это Александреску всю эту метушню затеял.
guest8 08.08.2018 21:18 # −999
bormand 08.08.2018 21:19 # 0
roskomgovno 08.08.2018 22:20 # 0
нам хвотает
roman-kashitsyn 08.08.2018 22:19 # +1
В этом треде остро не хватает упоминания о тов. Степанове, отце-основателе обобщенного программирования.
bormand 09.08.2018 07:11 # +1
roman-kashitsyn 09.08.2018 12:45 # +1
А кто ты думаешь придумал функции на типах iterator_traits, и кому понадобились шаблоны в шаблонах?
The second significant new feature used in STL was template arguments which are templates themselves, and that's how allocators, as originally proposed, were done.
-- http://web.archive.org/web/20090501134514/http://www.sgi.com/tech/stl/drdobbs-interview.html
j123123 09.08.2018 08:53 # +1
А куда ты денешься, если у тебя точки могут задаваться в полярных, декартовых, параболических и еще в хер пойми каких координатах? И чтоб сравнивать (узнавать расстояние) можно было точку, заданную через любую систему координат с точкой, заданной любой системой координат
defecate-plusplus 09.08.2018 09:01 # +1
в крайнем случае один из аргументов можно оператором приведения типа привести к общему универсальному типу, операторов в сишке так-то тоже нет...
j123123 09.08.2018 09:12 # +1
defecate-plusplus 09.08.2018 11:02 # +2
вот именно с этого начинается любое порно в крестах, потому что тоже можно
порождаются мегатонны метушни, которые компилируются по полчаса, зато декларативненько!
20_BLACK_CENTIMETERS 09.08.2018 11:04 # 0
roman-kashitsyn 09.08.2018 12:34 # +1
20_BLACK_CENTIMETERS 09.08.2018 12:55 # 0
roman-kashitsyn 09.08.2018 13:10 # +2
И сколько ведёр из под тебя в день выносят?
666_N33D135 09.08.2018 14:48 # +3
У тебя энурез?
roskomgovno 09.08.2018 13:05 # +1
666_N33D135 09.08.2018 15:24 # +1
Все эти ваши декларативность и описание типов не нужны, настоящему программисту достаточно лишь одного типа – массива байт, и ещё одного типа, что подносит ему чай/кофе/бутерброды, стряхает крошки с его бороды, вытирает с него пыль, пока он работает. А все эти ваши языки высокого уровня, интерпретаторы и компиляторы (что назывались "программирующеми программами") были придуманы для не-программистов: учёных-физиков и пр.
roskomgovno 09.08.2018 17:10 # +1
Зачем вообще программисту язык высокого уровня?
Друзья, 1968 год на дворе, пора бы такие вещи знать.
roman-kashitsyn 14.08.2018 00:44 # +1
roman-kashitsyn 09.08.2018 13:06 # +2
Очень сомнительная хотелка. Может быть полезной в системе комьютерной алгебры (где тебе никакие шаблоны не помогут), но в каких-нибудь играх неявные преобразования координат тут и там будут лишь способствовать баттхёрту разработчиков.
Если очень хочется, то делаешь систему координат параметром шаблона типа координат и описывашь преобразования в специализациях.
Есть правда одна принципиальная проблемка: к какой системе из двух конвертировать при расчёте расстояния? Потому что результат может немного отличаться в зависимости от выбранного пути.
j123123 14.08.2018 00:10 # +1
Он даже может немного отличаться в зависимости от компилятора. Ведь для всяких sin cos sqrt в стандарте C/C++ не описываются требования к точности этой херни.
https://stackoverflow.com/a/20137304
j123123 14.08.2018 00:50 # +1
А если у нас овер 100500 способов представить координаты, надо писать для каждого в каждый способ такое преобразование? А нельзя ли это как-нибудь автоматизировать? Ну вот например можно описать преобразование из системы координат A в систему координат B и обратно (биекция), потом из A в C и обратно, потом из A в D и обратно ... а потом чтоб какой-нибудь несуществующий пока что компилятор несуществующего пока что ЯП через гомоиконы, суперкомпиляцию и символьные вычисления смог математично нагенерить биекций для B <-> C, B <-> D, C <-> D ну и так далее, чтоб без тупых цепочек вроде B -> A -> C от которых может теряться точность преобразования.
roskomgovno 08.08.2018 22:19 # +3
ахахахахахха
webmonkey 08.08.2018 23:56 # −1
bormand 09.08.2018 07:20 # +3
Даже из буста не могут либы спиздить без косяков. Взять тот же random_device, который тут недавно обсуждали.
j123123 09.08.2018 09:14 # +1
roman-kashitsyn 09.08.2018 00:28 # +1
gost 09.08.2018 01:01 # +1
roskomgovno 09.08.2018 01:10 # +3
...и давай сразу делать суждения!
>>Ну так воид - просто ссылка на память. Это хощь-нехошь - массив байт.
...в сях нет ссылок
>>Практика показывает, что «переменных и функций» вполне достаточно. Чего нельзя написать на си, но можно на си++?
Паттерн "На X можно написать тоже самое что и на Y, следовательно Y не нужен".
Всё что угодно можно написать на ассемблере, ЯПы высокого уровня не нужны
Впрочем, реакция админов (основного контингента лор) тоже доставляет
1024-- 09.08.2018 01:30 # +1
Если учить C++ без суждений, можно стать покорным рабом Его Шаблоннейшества, потеряв способность к критической оценке этого чудо-языка.
roskomgovno 09.08.2018 02:34 # +1
Нельзя говорить "шаблоны никто не использует"
roman-kashitsyn 10.08.2018 14:57 # +1
А вот это не совсем верно. Возьмём, к примеру, выражение Какой тип у выражения point.x в этом случае? int? int*? ничто из этого не подходит, там должно быть int& (lvalue).
Т.е. ссылки как бы есть, но не являются "объектами первого рода" в языке, т.е. их, к примеру, нельзя передавать аргументами функции. Нужно конвертировать эти ссылки в указатели и разыменовывать обратно в конструкциях присваивания. В плюсах не изобрели ссылки, а просто сделали ссылки "объектами первого рода".
roskomgovno 10.08.2018 23:33 # +1
roman-kashitsyn 11.08.2018 00:07 # +1
Разумеется, всё, чему можно присвоить значение, является lvalue reference.
В крестах это можно написать явно:
roskomgovno 11.08.2018 00:12 # +1
Там бы мне пришлось брать адрес у point.x и присваивать его указателю
guest8 10.08.2018 18:03 # −999
roskomgovno 10.08.2018 18:14 # +2
bar-u-xoloda 10.08.2018 19:33 # +2
@Ничего не понял
@roman-kashitsyn 5 часов назад #
Возможно, гость №8 подъёбывает Романа Кашицына.
roman-kashitsyn 10.08.2018 19:56 # +2