Re[5]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 10:37
Оценка:
Здравствуйте, landerhigh, Вы писали:

С>>Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си.

L>Ага, берешь такой какую-нибудь Atmega 328 и запихиваешь

https://sourceforge.net/p/avr-ada/wiki/Home/
Re[6]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 14.01.19 10:43
Оценка:
Здравствуйте, Слава, Вы писали:

С>>>Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си.

L>>Ага, берешь такой какую-нибудь Atmega 328 и запихиваешь

С>https://sourceforge.net/p/avr-ada/wiki/Home/


gcc based Ada compiler

The compiler generates AVR object code based on your Ada code.


www.blinnov.com
Re[7]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 10:54
Оценка:
Здравствуйте, landerhigh, Вы писали:

С>>https://sourceforge.net/p/avr-ada/wiki/Home/


L>

L>gcc based Ada compiler
L>The compiler generates AVR object code based on your Ada code.


И что? Вам смысл компилятора понятен? Можно и сразу в машинных кодах писать, конечно.
Re[3]: Haters gonna hate but with proofs
От: kov_serg Россия  
Дата: 14.01.19 11:02
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, netch80, Вы писали:


N>>Всё сказанное выше — результат исторического развития методом "каждый раз шаг, полностью логичный из предыдущего состояния, но в новом направлении".


KP>Все вышесказанное верно, но тут есть интересный момент, про который часто забывают говоря о C++ – санитарайзеры. Я наугад взял два примера из приведенных тобой и собрал следующим образом:

KP>
KP>clang++ -fsanitize=undefined main.cpp
KP>

KP>Пример с арифметикой
Автор: Кодт
Дата: 18.06.14

KP>
test>> ./a.out                              
KP>0 : 0 : 27
KP>1 : 1000000000 : 82
KP>2 : 2000000000 : 41
KP>main.cpp:8:38: runtime error: signed integer overflow: 3 * 1000000000 cannot be represented in type 'int'
KP>3 : -1294967296 : 124
KP>4 : -294967296 : 62
KP>5 : 705032704 : 31
KP>6 : 1705032704 : 94
KP>7 : -1589934592 : 47
KP>8 : -589934592 : 142
KP>9 : 410065408 : 71
KP>

  Скрытый текст
# gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4

# gcc -O3 a.cpp && ./a.cpp
0 : 0 : 27
1 : 1000000000 : 82
2 : 2000000000 : 41
3 : -1294967296 : 124
4 : -294967296 : 62
5 : 705032704 : 31
6 : 1705032704 : 94
7 : -1589934592 : 47
8 : -589934592 : 142
9 : 410065408 : 71
10 : 1410065408 : 214
11 : -1884901888 : 107
12 : -884901888 : 322
13 : 115098112 : 161
14 : 1115098112 : 484
15 : 2115098112 : 242
16 : -1179869184 : 121
17 : -179869184 : 364
18 : 820130816 : 182
19 : 1820130816 : 91
20 : -1474836480 : 274
21 : -474836480 : 137
22 : 525163520 : 412
23 : 1525163520 : 206
24 : -1769803776 : 103
25 : -769803776 : 310
26 : 230196224 : 155
27 : 1230196224 : 466
28 : -2064771072 : 233
29 : -1064771072 : 700
30 : -64771072 : 350
31 : 935228928 : 175
32 : 1935228928 : 526
33 : -1359738368 : 263
34 : -359738368 : 790
35 : 640261632 : 395
36 : 1640261632 : 1186
37 : -1654705664 : 593
38 : -654705664 : 1780
39 : 345294336 : 890
40 : 1345294336 : 445
41 : -1949672960 : 1336
42 : -949672960 : 668
43 : 50327040 : 334
44 : 1050327040 : 167
45 : 2050327040 : 502
46 : -1244640256 : 251
47 : -244640256 : 754
48 : 755359744 : 377
49 : 1755359744 : 1132
50 : -1539607552 : 566
51 : -539607552 : 283
52 : 460392448 : 850
53 : 1460392448 : 425
54 : -1834574848 : 1276
55 : -834574848 : 638
56 : 165425152 : 319
57 : 1165425152 : 958
58 : -2129542144 : 479
59 : -1129542144 : 1438
60 : -129542144 : 719
61 : 870457856 : 2158
62 : 1870457856 : 1079
63 : -1424509440 : 3238
64 : -424509440 : 1619
65 : 575490560 : 4858
66 : 1575490560 : 2429
67 : -1719476736 : 7288
68 : -719476736 : 3644
69 : 280523264 : 1822
70 : 1280523264 : 911
71 : -2014444032 : 2734
72 : -1014444032 : 1367
73 : -14444032 : 4102
74 : 985555968 : 2051
75 : 1985555968 : 6154
76 : -1309411328 : 3077
77 : -309411328 : 9232
78 : 690588672 : 4616
79 : 1690588672 : 2308
80 : -1604378624 : 1154
81 : -604378624 : 577
82 : 395621376 : 1732
83 : 1395621376 : 866
84 : -1899345920 : 433
85 : -899345920 : 1300
86 : 100654080 : 650
87 : 1100654080 : 325
88 : 2100654080 : 976
89 : -1194313216 : 488
90 : -194313216 : 244
91 : 805686784 : 122
92 : 1805686784 : 61
93 : -1489280512 : 184
94 : -489280512 : 92
95 : 510719488 : 46
96 : 1510719488 : 23
97 : -1784247808 : 70
98 : -784247808 : 35
99 : 215752192 : 106
100 : 1215752192 : 53
101 : -2079215104 : 160
102 : -1079215104 : 80
103 : -79215104 : 40
104 : 920784896 : 20
105 : 1920784896 : 10
106 : -1374182400 : 5
107 : -374182400 : 16
108 : 625817600 : 8
109 : 1625817600 : 4
110 : -1669149696 : 2
111 : -669149696 : 1

# g++ -O3 -fwrapv a.cpp && ./a.out
0 : 0 : 27
1 : 1000000000 : 82
2 : 2000000000 : 41
3 : -1294967296 : 124
4 : -294967296 : 62
5 : 705032704 : 31
6 : 1705032704 : 94
7 : -1589934592 : 47
8 : -589934592 : 142
9 : 410065408 : 71


И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?
Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.
Re[6]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 11:03
Оценка: 1 (1) +4
Здравствуйте, Kswapd, Вы писали:

K>Здравствуйте, wander, Вы писали:


W>>На любом языке. И паскаль, и Си, и всякие

W>>новомодные Rust`ы могут быть языками, на которых потенциально будут написаны приложения, падающие таким образом.

K>Да, только в некоторых языках надо сильно постараться, чтобы выстрелить себе в ногу, а в C++ это получается легко, незаметно и непринуждённо. На любом языке можно творить хорошие качественные приложения. Только себестоимость разработки будет разная. А у С++ она заметно выше, чем у некоторых других языков со сравнимыми возможностями. Всё просто: бизнес решает.


Все-таки похоже, что логика немного хромает.
Если мы говорим "С++ недолюбливают из-за ошибок сегментации", далее "Ошибки сегментации (выстрелы в ногу) возникают в С++ легко и непринужденно", из-за этого (в том числе) "себестоимость разработки — высокая". Ладно. С этими утверждениями (кроме самого первого) нет смысла спорить. Это правда.
Но с первым я все-таки хочу поспорить (и собственно делал это с самого начала). Если ошибки сегментации — это одна из причин "нелюбви", то где эта "нелюбовь" проявляется по отношению к другим подобным языкам, где выстрелы в ногу также легки? Например в языке Си. Но похоже, что никакой "нелюбви" к Си нет. Почему-то все понимают, что язык Си — это приближенный к машине инструмент, обладающий соответствующими особенностями, предъявляющие повышенные требования к стоимости программиста. А в случае в С++ — эта особенность внезапно становится кареугольным камнем и причиной нападок. Нет ли здесь двойного дна?

Да, можно возразить, что мол, в С++ куча всяких возможностей, а в Си — нет. Из-за этого С++ гораздо проще неправильно применить (это правда). Но в Си низкая сложность базовых фич языка с лихвой компенсируется количеством умения их применять. Чем более скуден набор инструментов, чем большим мастерством должен обладать разработчик, чтобы сделать что-то качественно. Так что, вроде бы чаши весов здесь если не равны, то колеблются из стороны в сторону, однозначного перевеса нет. Но "не любим" мы все-таки С++.

Поэтому, мне кажется, что настоящая причина не в этом.
Re[8]: Haters gonna hate but with proofs
От: landerhigh Пират  
Дата: 14.01.19 11:03
Оценка: :)
Здравствуйте, Слава, Вы писали:

L>>

L>>gcc based Ada compiler
L>>The compiler generates AVR object code based on your Ada code.


С>И что? Вам смысл компилятора понятен? Можно и сразу в машинных кодах писать, конечно.


Внезапно "затолкать Java" превратилось в "Написать на языке, к которому есть фронтенд к GCC".
Ловкость рук и никакого мошенства, да.
www.blinnov.com
Re[4]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 11:17
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?

_>Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.

Вот тут действительно надо советовать взять Java или Go: у них именно так и сделано.
Но в случае C, C++ — я не хочу повторяться по 300-му разу, но есть достаточно свидетельств, что полагание на корректность решения программистом вопроса "переполняется ли" даёт возможность заметных оптимизаций.
The God is real, unless declared integer.
Re[7]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 11:20
Оценка:
Здравствуйте, wander, Вы писали:

W>Да, можно возразить, что мол, в С++ куча всяких возможностей, а в Си — нет. Из-за этого С++ гораздо проще неправильно применить (это правда). Но в Си низкая сложность базовых фич языка с лихвой компенсируется количеством умения их применять. Чем более скуден набор инструментов, чем большим мастерством должен обладать разработчик, чтобы сделать что-то качественно. Так что, вроде бы чаши весов здесь если не равны, то колеблются из стороны в сторону, однозначного перевеса нет. Но "не любим" мы все-таки С++.


W>Поэтому, мне кажется, что настоящая причина не в этом.


Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.
The God is real, unless declared integer.
Re[8]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 11:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.


Вопросов нет. Почему тогда в списке нелюбимчиков только С++?
Отредактировано 14.01.2019 11:24 wander . Предыдущая версия .
Re[9]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 11:25
Оценка:
Здравствуйте, wander, Вы писали:

W>Здравствуйте, netch80, Вы писали:


N>>Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.


W>Вопросов нет. Почему тогда в списке нелюбимчиков только С++?


Вы сказали, вопросов нет? И в чьём именно списке?
The God is real, unless declared integer.
Re[5]: Haters gonna hate but with proofs
От: kov_serg Россия  
Дата: 14.01.19 11:27
Оценка: :))
Здравствуйте, netch80, Вы писали:

_>>И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?

_>>Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.

N>Вот тут действительно надо советовать взять Java или Go: у них именно так и сделано.

N>Но в случае C, C++ — я не хочу повторяться по 300-му разу, но есть достаточно свидетельств, что полагание на корректность решения программистом вопроса "переполняется ли" даёт возможность заметных оптимизаций.

В C++ как всегда вместо того чтобы явно спросить оно тебе надо делают как "лучше" и таких место с каждым разом всё больше и больше.
Сделали бы тогда уже циклы для допустимых значений for(auto i) y[i]=x[i-1]-2*x[i]+x[i+1];
Re[9]: Haters gonna hate but with proofs
От: Слава  
Дата: 14.01.19 11:31
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Внезапно "затолкать Java" превратилось в "Написать на языке, к которому есть фронтенд к GCC".

L>Ловкость рук и никакого мошенства, да.

Я там про Аду писал, вообще-то. Вам нужен компилятор Ады не на gcc?
Re[10]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 11:41
Оценка: +2 -1
Здравствуйте, netch80, Вы писали:

N>Вы сказали, вопросов нет?

Это выражение такое.

N>И в чьём именно списке?


Ну хейтеров видимо. Тема же так называется.

На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.

Это говорит лишь о человеческой страсти осуждать популярное.
Re[11]: Haters gonna hate but with proofs
От: rg45 СССР  
Дата: 14.01.19 11:48
Оценка: +2 -1 :))
Здравствуйте, wander, Вы писали:


W>Ну хейтеров видимо. Тема же так называется.

W>На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
W>Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.
W>Это говорит лишь о человеческой страсти осуждать популярное.

ИМХО, не стоит тебе воспринимать все сказанное так близко к сердцу. "Хейтеры" — это далеко не "весь мир". И вообще, человек с нормальной психикой не может ненавидеть средства разработки

P.S. Помнится, когда я учился в институте, у нас на потоке один бедолага крышей поехал — охотился на операторы набла — хватал все книжки, которые попадали в его поле зрения и выдирал страницы, на которых находил эти самые "наблы". Вот у всех С++ хейтеров наблюдается очень похожий синдром.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 14.01.2019 12:07 rg45 . Предыдущая версия .
Re[12]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 12:07
Оценка:
Здравствуйте, rg45, Вы писали:

R>ИМХО, не стоит тебе воспринимать все сказанное так близко к сердцу. "Хейтеры" — это далеко не "весь мир". И вообще, человек с нормальной психикой не может ненавидеть средства разработки


Но я ведь и не воспринимаю. Ты все-таки не совсем уловил посыл.

Я пытаюсь в форме диалога вывести мысль о том, что любые конкретные недостатки могут быть у любых средств разработки.
И если задаться идеей найти их все, то могут возникнуть вот такое проекты: https://dorinlazar.ro/why-c-sucks-2016-02-edition/
Но разве это характеризует объективно конкретное средство?
По-моему нет. Вы только посмотрите: у него даже несколько редакций есть.
Это скорее характеризует степень заинтересованности публики в нем, и спрос на такой контент, соответственно.
Если бы на С++ программировал 1 программист на миллион, то никто бы не задавал таких вопросов.

И я не говорю, что в этих статьях и т.п. нет хотя бы частично адекватной критики, просто я хотел обозначить именно этот момент, как первопричину.
Отредактировано 14.01.2019 12:13 wander . Предыдущая версия .
Re[11]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 12:15
Оценка:
Здравствуйте, wander, Вы писали:

N>>Вы сказали, вопросов нет?

W>Это выражение такое.

Неуместно, если сразу после этого следует вопрос.

N>>И в чьём именно списке?

W>Ну хейтеров видимо. Тема же так называется.
W>На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
W>Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.
W>Это говорит лишь о человеческой страсти осуждать популярное.

И это вполне правильно. Сильно меньше смысла обсуждать и искать недостатки у того, чем никто не пользуется. Есть смысл — у популярного. Потому что
1) это даёт шанс, что какие-то из них исправят,
2) это усиливает шанс, что новое средство будет без таких недостатков, за счёт известности такой критики.

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

А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.
The God is real, unless declared integer.
Re[12]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 12:29
Оценка:
Здравствуйте, netch80, Вы писали:

N>Неуместно, если сразу после этого следует вопрос.

Вам это настолько важно?

N>А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.

Ну так если некий (даже конструктивный) недостаток приписывают чему-то одному популярному, а другим, обладающим тем же недостатком, не приписывают только исключительно засчет их меньшей популярности, то об этом надо бы сказать. Очень характерна картинка, которая послужила стартом ветки, она оказалась продуктом другого языка, но привели ее как доказательство для С++. И именно поэтому я решил разбавить это немного рассуждениями на тему первопричин такого явления. Ведь ТС интересовало ПОЧЕМУ хейтят ИМЕННО С++.
Re[13]: Haters gonna hate but with proofs
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.01.19 12:40
Оценка:
Здравствуйте, wander, Вы писали:

N>>Неуместно, если сразу после этого следует вопрос.

W>Вам это настолько важно?

Если обсуждать конструктивно — да, важно.

N>>А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.

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

А с чего вывод про "не приписывают"? Приписывают. Но не настолько обсуждают.
А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.

W> Очень характерна картинка, которая послужила стартом ветки, она оказалась продуктом другого языка, но привели ее как доказательство для С++. И именно поэтому я решил разбавить это немного рассуждениями на тему первопричин такого явления. Ведь ТС интересовало ПОЧЕМУ хейтят ИМЕННО С++.


Про картинку я посмотрел, но мне такая ситуация за пределами интересного.
Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.
The God is real, unless declared integer.
Re[14]: Haters gonna hate but with proofs
От: wander  
Дата: 14.01.19 12:56
Оценка:
Здравствуйте, netch80, Вы писали:

N>А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.


Если говорить абстрактно, то да. Но если говорить про C++, то похоже вы несколько сгущаете краски.
Будь это так, то все уже давно бы отказались от него. А если нет, то терпимый предел все-таки чуть повыше.

N>Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.

Ну так я ниже, буквально над вашим постом написал, что если будут объективные причины заменить на другие средства, то заменят — и это нормально,
а не будут каталогизировать недостатки
Re[11]: Haters gonna hate but with proofs
От: Jack128  
Дата: 14.01.19 13:12
Оценка:
Здравствуйте, rg45, Вы писали:


R>И даже на этом веселуха еще не заканчивается — обязательно ведь найдется грамотей, который позовет Dispose (прямо либо через using) для входного стрима.

Он и так задиспозится, стрим дазиспозится ридером. Это вообще в .NET стандарт, все ридеры по умолчанию закрывают переданный им конструктор стрим. + Обычно есть перегруженный конструктор с флажком, который явно говорит закрывать или нет стрим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.