powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничный бунт
23 сообщений из 73, страница 3 из 3
Пятничный бунт
    #39272726
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЧто показывает, что конструктор копирования и конструктор перемещения не особо то отличаются. И в целом, шаблонная математика suxx
Это скомпилировано надеюсь с -O3 ? )))
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272727
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglПоверьте мне на слово, на чистом С этот пример в десяток раз будет короче.
Особенно хочу посмотреть, как будет короче работа с динамическими строками в С, и надежнее еще наверно
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272745
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglЧто показывает, что конструктор копирования и конструктор перемещения не особо то отличаются. И в целом, шаблонная математика suxx
Это скомпилировано надеюсь с -O3 ? )))


Особенно хочу посмотреть, как будет короче работа с динамическими строками в С, и надежнее еще наверно
Нет, это плейн компиляция.

С -О3 gcc все еще не умеет компилировать (уже лет 8 как).

Короче будет, надежней не будет.

Хочешь повозмущаться - делай конрпримеры.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272748
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglХочешь повозмущаться - делай конрпримеры.
Не вижу ни единой причины тратить время на обсуждение машинного кода сгенеренного без оптимизации.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272759
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПора нам с тобой на пенсию.

Человек, написавший over 30000 постов, должен был уже успеть сходить на пенсию 3-4 раза
"вот и старость прошла" (с)

SiemarglПоверьте мне на слово, на чистом С этот пример в десяток раз будет короче.
Не хочу верить на слово, хочу посмотреть код. Ведь было время я писал, программы в машинных кодах на сях, сехх тогда ещё не было.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39273284
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglХочешь повозмущаться - делай конрпримеры.
Не вижу ни единой причины тратить время на обсуждение машинного кода сгенеренного без оптимизации.Изначальный пойнт топика был в том, что неочевиден результат кода.
Оптимизатор это только костыль, и после него вообще хрен пойми что получается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
00401340 <__ZN1AC1EOS_>:
	A(A& arg); 	// copy
	A& operator=(A&& other);
	void modify();
};

A::A(A&& arg): member(std::move(arg.member)) // the expression "arg.member" is lvalue
  401340:	53                   	push   ebx
  401341:	83 ec 28             	sub    esp,0x28
  401344:	8b 5c 24 30          	mov    ebx,DWORD PTR [esp+0x30]
	_CharT*
	_M_clone(const _Alloc&, size_type __res = 0);
      };

      // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
      struct _Alloc_hider : _Alloc
  401348:	8b 03                	mov    eax,DWORD PTR [ebx]
      : _M_dataplus(__str._M_dataplus)
      {
#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
	__str._M_data(_S_empty_rep()._M_refdata());
#else
	__str._M_data(_S_construct(size_type(), _CharT(), get_allocator()));
  40134a:	c7 44 24 04 00 00 00 	mov    DWORD PTR [esp+0x4],0x0
  401351:	00 
  401352:	c7 04 24 00 00 00 00 	mov    DWORD PTR [esp],0x0
	_CharT*
	_M_clone(const _Alloc&, size_type __res = 0);
      };

      // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
      struct _Alloc_hider : _Alloc
  401359:	89 01                	mov    DWORD PTR [ecx],eax
      : _M_dataplus(__str._M_dataplus)
      {
#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
	__str._M_data(_S_empty_rep()._M_refdata());
#else
	__str._M_data(_S_construct(size_type(), _CharT(), get_allocator()));
  40135b:	8d 44 24 1f          	lea    eax,[esp+0x1f]
  40135f:	89 44 24 08          	mov    DWORD PTR [esp+0x8],eax
  401363:	e8 a0 01 00 00       	call   401508 <__ZNSs12_S_constructEjcRKSaIcE>
      _M_data() const _GLIBCXX_NOEXCEPT
      { return  _M_dataplus._M_p; }

      _CharT*
      _M_data(_CharT* __p) _GLIBCXX_NOEXCEPT
      { return (_M_dataplus._M_p = __p); }
  401368:	89 03                	mov    DWORD PTR [ebx],eax
{} 
  40136a:	83 c4 28             	add    esp,0x28
  40136d:	5b                   	pop    ebx
  40136e:	c2 04 00             	ret    0x4
  401371:	90                   	nop
  401372:	8d b4 26 00 00 00 00 	lea    esi,[esi+eiz*1+0x0]
  401379:	8d bc 27 00 00 00 00 	lea    edi,[edi+eiz*1+0x0]

00401380 <__ZN1AC1ERS_>:

A::A(A& arg): member(arg.member) // cpy
  401380:	55                   	push   ebp
  401381:	89 e5                	mov    ebp,esp
{} 
  401383:	c9                   	leave  
};

A::A(A&& arg): member(std::move(arg.member)) // the expression "arg.member" is lvalue
{} 

A::A(A& arg): member(arg.member) // cpy
  401384:	e9 87 01 00 00       	jmp    401510 <__ZNSsC1ERKSs>
  401389:	90                   	nop
  40138a:	8d b6 00 00 00 00    	lea    esi,[esi+0x0]

00401390 <__ZN1AaSEOS_>:
{} 

A& A::operator=(A&& other) 
{
  401390:	53                   	push   ebx
  401391:	89 cb                	mov    ebx,ecx
  401393:	83 ec 18             	sub    esp,0x18
      // PR 58265, this should be noexcept.
      basic_string&
      operator=(basic_string&& __str)
      {
	// NB: DR 1204.
	this->swap(__str);
  401396:	8b 44 24 20          	mov    eax,DWORD PTR [esp+0x20]
  40139a:	89 04 24             	mov    DWORD PTR [esp],eax
  40139d:	e8 76 01 00 00       	call   401518 <__ZNSs4swapERSs>
  4013a2:	83 ec 04             	sub    esp,0x4
   	member = std::move(other.member);
   	return *this;
}
  4013a5:	89 d8                	mov    eax,ebx
  4013a7:	83 c4 18             	add    esp,0x18
  4013aa:	5b                   	pop    ebx
  4013ab:	c2 04 00             	ret    0x4
  4013ae:	66 90                	xchg   ax,ax

004013b0 <__ZN1A6modifyEv>:

void A::modify()
{
  4013b0:	83 ec 1c             	sub    esp,0x1c
       */
      basic_string&
      append(const _CharT* __s)
      {
	__glibcxx_requires_string(__s);
	return this->append(__s, traits_type::length(__s));
  4013b3:	c7 44 24 04 01 00 00 	mov    DWORD PTR [esp+0x4],0x1
  4013ba:	00 
  4013bb:	c7 04 24 24 c0 40 00 	mov    DWORD PTR [esp],0x40c024
  4013c2:	e8 59 01 00 00       	call   401520 <__ZNSs6appendEPKcj>
  4013c7:	83 ec 08             	sub    esp,0x8
	member += "1";
}
  4013ca:	83 c4 1c             	add    esp,0x1c
  4013cd:	c3                   	ret    
  4013ce:	66 90                	xchg   ax,ax

004013d0 <__Z11fingingDoryv>:

A* fingingDory()
{
  4013d0:	55                   	push   ebp
  4013d1:	89 e5                	mov    ebp,esp
  4013d3:	83 ec 68             	sub    esp,0x68
  4013d6:	8d 45 f8             	lea    eax,[ebp-0x8]
  4013d9:	89 65 dc             	mov    DWORD PTR [ebp-0x24],esp
  4013dc:	c7 45 cc 00 15 40 00 	mov    DWORD PTR [ebp-0x34],0x401500
  4013e3:	c7 45 d0 14 aa 40 00 	mov    DWORD PTR [ebp-0x30],0x40aa14
  4013ea:	c7 45 d8 b1 14 40 00 	mov    DWORD PTR [ebp-0x28],0x4014b1
  4013f1:	89 45 d4             	mov    DWORD PTR [ebp-0x2c],eax
  4013f4:	8d 45 b4             	lea    eax,[ebp-0x4c]
  4013f7:	89 04 24             	mov    DWORD PTR [esp],eax
  4013fa:	e8 71 0f 00 00       	call   402370 <__Unwind_SjLj_Register>
using namespace std;

class A {
	string member;
public:
	A(): member("Dory"){};
  4013ff:	8d 45 f3             	lea    eax,[ebp-0xd]
  401402:	8d 4d f4             	lea    ecx,[ebp-0xc]
  401405:	c7 04 24 26 c0 40 00 	mov    DWORD PTR [esp],0x40c026
  40140c:	89 44 24 04          	mov    DWORD PTR [esp+0x4],eax
  401410:	c7 45 b8 ff ff ff ff 	mov    DWORD PTR [ebp-0x48],0xffffffff
  401417:	e8 0c 01 00 00       	call   401528 <__ZNSsC1EPKcRKSaIcE>
  40141c:	8d 4d f4             	lea    ecx,[ebp-0xc]
  40141f:	83 ec 08             	sub    esp,0x8
  401422:	c7 44 24 04 01 00 00 	mov    DWORD PTR [esp+0x4],0x1
  401429:	00 
  40142a:	c7 04 24 24 c0 40 00 	mov    DWORD PTR [esp],0x40c024
  401431:	c7 45 b8 01 00 00 00 	mov    DWORD PTR [ebp-0x48],0x1
  401438:	e8 e3 00 00 00       	call   401520 <__ZNSs6appendEPKcj>
  40143d:	83 ec 08             	sub    esp,0x8

A* fingingDory()
{
	A dory; 
	dory.modify();
	A *copydory = new A(dory);
  401440:	c7 04 24 04 00 00 00 	mov    DWORD PTR [esp],0x4
  401447:	e8 e4 00 00 00       	call   401530 <__Znwj>
};

A::A(A&& arg): member(std::move(arg.member)) // the expression "arg.member" is lvalue
{} 

A::A(A& arg): member(arg.member) // cpy
  40144c:	8d 55 f4             	lea    edx,[ebp-0xc]

A* fingingDory()
{
	A dory; 
	dory.modify();
	A *copydory = new A(dory);
  40144f:	89 45 b0             	mov    DWORD PTR [ebp-0x50],eax
};

A::A(A&& arg): member(std::move(arg.member)) // the expression "arg.member" is lvalue
{} 

A::A(A& arg): member(arg.member) // cpy
  401452:	89 c1                	mov    ecx,eax
  401454:	89 14 24             	mov    DWORD PTR [esp],edx
  401457:	c7 45 b8 02 00 00 00 	mov    DWORD PTR [ebp-0x48],0x2
  40145e:	e8 ad 00 00 00       	call   401510 <__ZNSsC1ERKSs>
      // Data Members (private):
      mutable _Alloc_hider	_M_dataplus;

      _CharT*
      _M_data() const _GLIBCXX_NOEXCEPT
      { return  _M_dataplus._M_p; }
  401463:	8b 4d f4             	mov    ecx,DWORD PTR [ebp-0xc]
  401466:	83 ec 04             	sub    esp,0x4
  // __exchange_and_add_dispatch
  // __atomic_add_dispatch
#ifdef _GLIBCXX_ATOMIC_BUILTINS
  static inline _Atomic_word 
  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
  { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
  401469:	b8 ff ff ff ff       	mov    eax,0xffffffff
  40146e:	f0 0f c1 41 fc       	lock xadd DWORD PTR [ecx-0x4],eax
	  if (__builtin_expect(this != &_S_empty_rep(), false))
#endif
	    {
	      // Be race-detector-friendly.  For more info see bits/c++config.
	      _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
	      if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
  401473:	85 c0                	test   eax,eax
  401475:	7e 19                	jle    401490 <__Z11fingingDoryv+0xc0>
  401477:	8d 45 b4             	lea    eax,[ebp-0x4c]
  40147a:	89 04 24             	mov    DWORD PTR [esp],eax
  40147d:	e8 5e 10 00 00       	call   4024e0 <__Unwind_SjLj_Unregister>
{
	A dory; 
	dory.modify();
	A *copydory = new A(dory);
	return 	copydory;
}
  401482:	8b 45 b0             	mov    eax,DWORD PTR [ebp-0x50]
  401485:	c9                   	leave  
  401486:	c3                   	ret    

...
Рейтинг: 0 / 0
Пятничный бунт
    #39273326
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglИзначальный пойнт топика был в том, что неочевиден результат кода.
Оптимизатор это только костыль, и после него вообще хрен пойми что получается
А нечего лезть в машинный код, не проведя профилирование.
Считаете себя умнее компилятора? Ну может в таком тривиально примере как вы выше привели вы и сможете на пару процентов более быстрый код написать, но в реально сложных задачах, где имеет смысл применять С++ - никогда.

Кроме того большинство проблем производительности вызваны не качеством генерации кода, а медленным алгоритмом.

Поэтому нечего на С++ кивать коли руки кривые )))
...
Рейтинг: 0 / 0
Пятничный бунт
    #39273450
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglИзначальный пойнт топика был в том, что неочевиден результат кода.
Оптимизатор это только костыль, и после него вообще хрен пойми что получается
....
Кроме того большинство проблем производительности вызваны не качеством генерации кода, а медленным алгоритмом.
...
Еще есть и третий фактор - скрытые накладные расходы библиотек, в т.ч. шаблонных
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274625
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyд0k,

Все в рамках темы ))

Но вообще конечно реальных альтернатив С++ не существует.
Иначе бы при таком количестве ворчунов все они на эти альтернативы уже бы перешли.
Но вместо этого они ходят по С++ форумам и плачутся, как им трудно с С++

в смысле не существует? во всех областях всегда есть куча очень реальных альтернатив.
даже в области кодирования аппаратного обеспечения - есть куда более надежные и предсказуемые Erlang, ADA, да тот-же ANSI C, урезанный через MISRA.

зато есть куча областей, где C++ в принципе неадекватен - начиная от веб сайтов, заканчивая геймдевом в части написания скриптов поведения персонажей (там где "нормальная" практика линковки по 15 минут в принципе не приемлема для процесса разработки).
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274658
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyИначе бы при таком количестве ворчунов все они на эти альтернативы уже бы перешли.
Но вместо этого они ходят по С++ форумам и плачутся, как им трудно с С++

есть люди, которые плачутся, что в мире JavaScript есть jQuery, который, внезапно, для современных браузеров вообще-то уже и не нужен - можно делать динамические сайты и без него.

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

хотя тут-же понабегут тысячи чуваков, которые вложили многие годы в изучение вот этих самых хреней (stl, boost, jquery, список можно продолжить), и которых сама мысль о том, что их знания неактуальны и их нужно выбросить на помойку - повергает
в неосознанный панический ужас, потому они будут дежаться за свои заучивамые годами, но тормозные в рантайме и
максимально отдаленные от реальных задач бизнеса нагромождения до последнего, пока "the vast majority" не сделает их
маргиналами (возможно не при этой жизни).

что, впрочем, не отменяет монструозность и неадекватность этих самых хреней.
просто ты их выучил, и они у тебя не вызвали вопрос "а нафига так сложно?". ну так это просто ограничения твоего сознания, на самом деле - ты просто не можешь ответить на вопрос "а как можно сделать еще проще?"
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274755
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaпросто ты их выучил, и они у тебя не вызвали вопрос "а нафига так сложно?
Говоря про отсутствие альтернатив я как раз это и имел в виду.
Нет ничего проще. Все что предлагается - либо сложнее либо не все умеет.
Вот например С как альтернатива С++ меня вообще не устраивает, т.к. там нет деструкторов, методов, исключений (не только это конечно), и все попытки фанатиков С объяснить мне что я должен обходиться без этого вызывают у меня лишь желание вызвать им санитаров ))
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274769
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskynojavaпросто ты их выучил, и они у тебя не вызвали вопрос "а нафига так сложно?
Говоря про отсутствие альтернатив я как раз это и имел в виду.
Нет ничего проще. Все что предлагается - либо сложнее либо не все умеет.
Что именно подразумевается под всё? Всё что есть в природе и всё, что тебе нужно - это разные вещи.

Конкретика где?



Anatoly MoskovskyВот например С как альтернатива С++ меня вообще не устраивает, т.к. там нет деструкторов, методов, исключений (не только это конечно),
Опять юношеский максимализм. Иногда таки стоит детям почитать MISRA и подобное, чтоб осознать, что

а) динамическое управление памятью не нужно (а вот так - существуют только или вечноживущие объекты, или короткоживущие на стеке)
б) деструкторы не нужны в виду а)
в) исключения тоже не нужны, ибо это очердная форма goto, а так в мире есть process monitor и let it die модели, ничего лучше для надежности не придумано
г) ну и отсутствие методов порадовало, да. неимоверно

скажешь, может быть, чем

a->my_method()

отличается от

my_method(a)?

Anatoly Moskovskyи все попытки фанатиков С объяснить мне что я должен обходиться без этого вызывают у меня лишь желание вызвать им санитаров ))
отлично, ты когда перейдешь в лигу mission critical fail tolerant code, ты обязательно санитаров заранее пригласи, когда тебя начнут колеги из проекта выносить, после попытки запихать туда boost или stl :)
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274888
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaдинамическое управление памятью не нужно
Да, есть такой класс задач, где динамическая память не нужна.
Их примерно 0.0001% от рынка софта.
И мне абсолютно наплевать на эту часть рынка.

Дальше не читал, ибо проекция вашего небольшого мирка на весь софт никому не интересна.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274907
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskynojavaдинамическое управление памятью не нужно
Да, есть такой класс задач, где динамическая память не нужна.
Их примерно 0.0001% от рынка софта.
В web приложении не нужна динамическая память (оопс, да да - там нужен лишь аппендируемый контекст mmap()-еd ara, сделанный как стек).
В любом парсере не нужна динамическая память.
В библиотеке nosql баз данных - оопс, тоже не нужны malloc()/free()

забавно, да?

Anatoly MoskovskyИ мне абсолютно наплевать на эту часть рынка.
Ты серьезно думаешь, что кому-то не наплевать на то, на что там тебе плевать в силу ограниченности твоего мышления?

Anatoly MoskovskyДальше не читал, ибо проекция вашего небольшого мирка на весь софт никому не интересна.
У тебя кванторное размножение личности? Ну да, про санитаров же ты не зря упомянул...
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274909
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaТы серьезно думаешь, что кому-то не наплевать на то, на что там тебе плевать в силу ограниченности твоего мышления?
Разница в том, что это не я, а вы указываете другим на чем им писать программы ))
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274914
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskynojavaТы серьезно думаешь, что кому-то не наплевать на то, на что там тебе плевать в силу ограниченности твоего мышления?
Разница в том, что это не я, а вы указываете другим на чем им писать программы ))

я? вообще-то это ты задвигал, что дескать если тебе 40 лет и тебе трудно на C++, то ты занимаешься чем-то не тем.
19396461

бугага. продолжай в том-же духе, твое рефлективное мнение очень ценно для самодиагностики.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274922
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaя? вообще-то это ты задвигал, что дескать если тебе 40 лет и тебе трудно на C++, то ты занимаешься чем-то не тем.
19396461
И где здесь я говорю кому-то чем заниматься? Я там объясняю что причина трудностей с С++ не связана со старостью.
Но глядя на ваш случай, допускаю что был неправ ))
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274925
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskynojavaя? вообще-то это ты задвигал, что дескать если тебе 40 лет и тебе трудно на C++, то ты занимаешься чем-то не тем.
19396461
И где здесь я говорю кому-то чем заниматься? Я там объясняю что причина трудностей с С++ не связана со старостью.
Но глядя на ваш случай, допускаю что был неправ ))

ты там пытаешься объяснить человеку, чем ему не надо заниматься, этого вполне достаточно.

а человек же тебе пытался сказать, что не смотря на свой опыт в IT (40 лет) - он в упор не понимает, зачем в C++ нагородили вот это все барахло в таких мегаколичествах, и которое ему теперь нужно несколько лет осваивать, просто чтоб получить возможность решать свои непосредственный прикладные задачи без риска разрушить мир.

даже в Oracle такого нет - там можно стать продуктивным за примерно пару недель с нуля (прочитав листов 200), без риска разрушить цивилизацию, поставив не там запятую. и это - не смотря на 40 томов приложенной базовой документации.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274928
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bjarne Stroustrup C++11 feels like a new language
...
Рейтинг: 0 / 0
Пятничный бунт
    #39274952
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Прекращайте
...
Рейтинг: 0 / 0
Пятничный бунт
    #39275716
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskynojavaдинамическое управление памятью не нужно
Да, есть такой класс задач, где динамическая память не нужна.....
Она очень удобна, и многие вещи без нее просто не сделать.

Но неконтролируемое использование динамической памяти в STL - достаточно дорогое удовольствие.
Особенно если сравнивать со стеком.
Это немногим лучше того же GC.

Еще для меня было большим сюрпризом, что MSVC рантайм по умолчанию на _каждый_ malloc дергает системный вызов.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39276238
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly Moskovskyпропущено...

Да, есть такой класс задач, где динамическая память не нужна.....
Она очень удобна, и многие вещи без нее просто не сделать.
Спорное утверждение, апологеты функционального программирования и вовсе сейчас очень широко улыбаются.


SiemarglНо неконтролируемое использование динамической памяти в STL - достаточно дорогое удовольствие.
А еще дорогим удовольствием являются exceptions, и .so/.dll с этими C++ ными mangling именами порой 1000 байт длиной, которые нужно связывать при старте.

SiemarglОсобенно если сравнивать со стеком.
Это немногим лучше того же GC.
в том-то и дело, что STL при ее архитектурных ограничениях не предполагает альтернативы.
если у тебя требование запрета на использование exceptions и dynamic heap (realtime системы, OpenCL, контроллеры и прочее) - то все это "богатство" просто летит в шредер, и "современный C++" превращается в C with objects, вся польза которого - это лишь namespace isolation.... который опять-же сделан предельно криво в случае .so/.dll - проблема строковых констант по 1000 байт длиной.

SiemarglЕще для меня было большим сюрпризом, что MSVC рантайм по умолчанию на _каждый_ malloc дергает системный вызов.
это известный баян, детей пугать разве. любой чуть более, чем на три файла проект довольно быстро приходит к замене не только стандартного malloc/free, но и new/delete
...
Рейтинг: 0 / 0
Пятничный бунт
    #39276303
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaапологетыапологет/аполосет
...
Рейтинг: 0 / 0
23 сообщений из 73, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничный бунт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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