Здравствуйте, landerhigh, Вы писали:
С>>Туда можно запихать Java Card и Аду. Кстати, запихивание в систему с очень ограниченными ресурсами — это скорее про Си. L>Ага, берешь такой какую-нибудь Atmega 328 и запихиваешь
Здравствуйте, Слава, Вы писали:
С>>>Туда можно запихать 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.
Здравствуйте, kaa.python, Вы писали: KP>Здравствуйте, netch80, Вы писали: N>>Всё сказанное выше — результат исторического развития методом "каждый раз шаг, полностью логичный из предыдущего состояния, но в новом направлении". KP>Все вышесказанное верно, но тут есть интересный момент, про который часто забывают говоря о C++ – санитарайзеры. Я наугад взял два примера из приведенных тобой и собрал следующим образом: KP>
И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for?
Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.
Здравствуйте, Kswapd, Вы писали:
K>Здравствуйте, wander, Вы писали:
W>>На любом языке. И паскаль, и Си, и всякие W>>новомодные Rust`ы могут быть языками, на которых потенциально будут написаны приложения, падающие таким образом.
K>Да, только в некоторых языках надо сильно постараться, чтобы выстрелить себе в ногу, а в C++ это получается легко, незаметно и непринуждённо. На любом языке можно творить хорошие качественные приложения. Только себестоимость разработки будет разная. А у С++ она заметно выше, чем у некоторых других языков со сравнимыми возможностями. Всё просто: бизнес решает.
Все-таки похоже, что логика немного хромает.
Если мы говорим "С++ недолюбливают из-за ошибок сегментации", далее "Ошибки сегментации (выстрелы в ногу) возникают в С++ легко и непринужденно", из-за этого (в том числе) "себестоимость разработки — высокая". Ладно. С этими утверждениями (кроме самого первого) нет смысла спорить. Это правда.
Но с первым я все-таки хочу поспорить (и собственно делал это с самого начала). Если ошибки сегментации — это одна из причин "нелюбви", то где эта "нелюбовь" проявляется по отношению к другим подобным языкам, где выстрелы в ногу также легки? Например в языке Си. Но похоже, что никакой "нелюбви" к Си нет. Почему-то все понимают, что язык Си — это приближенный к машине инструмент, обладающий соответствующими особенностями, предъявляющие повышенные требования к стоимости программиста. А в случае в С++ — эта особенность внезапно становится кареугольным камнем и причиной нападок. Нет ли здесь двойного дна?
Да, можно возразить, что мол, в С++ куча всяких возможностей, а в Си — нет. Из-за этого С++ гораздо проще неправильно применить (это правда). Но в Си низкая сложность базовых фич языка с лихвой компенсируется количеством умения их применять. Чем более скуден набор инструментов, чем большим мастерством должен обладать разработчик, чтобы сделать что-то качественно. Так что, вроде бы чаши весов здесь если не равны, то колеблются из стороны в сторону, однозначного перевеса нет. Но "не любим" мы все-таки С++.
Поэтому, мне кажется, что настоящая причина не в этом.
Здравствуйте, kov_serg, Вы писали:
_>И что раз переполнение возникло в промежуточном вычислении, результат которого может никому и не нужен. На этом основании надо выкидывать проверку условия выхода из цикла for? _>Вообще всегда надо компилировать с опцией -fwrapv чтоб компилятор не чудил.
Вот тут действительно надо советовать взять Java или Go: у них именно так и сделано.
Но в случае C, C++ — я не хочу повторяться по 300-му разу, но есть достаточно свидетельств, что полагание на корректность решения программистом вопроса "переполняется ли" даёт возможность заметных оптимизаций.
Здравствуйте, wander, Вы писали:
W>Да, можно возразить, что мол, в С++ куча всяких возможностей, а в Си — нет. Из-за этого С++ гораздо проще неправильно применить (это правда). Но в Си низкая сложность базовых фич языка с лихвой компенсируется количеством умения их применять. Чем более скуден набор инструментов, чем большим мастерством должен обладать разработчик, чтобы сделать что-то качественно. Так что, вроде бы чаши весов здесь если не равны, то колеблются из стороны в сторону, однозначного перевеса нет. Но "не любим" мы все-таки С++.
W>Поэтому, мне кажется, что настоящая причина не в этом.
Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.
Здравствуйте, netch80, Вы писали:
N>Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.
Вопросов нет. Почему тогда в списке нелюбимчиков только С++?
Здравствуйте, wander, Вы писали:
W>Здравствуйте, netch80, Вы писали:
N>>Именно в этом. Очень сложно работать с тем, что _и_ со сложностями высоких уровней, _и_ с граблями низких уровней, _и_ со своим специфическим характером в отдельных местах, дающим неожиданные и неприятные эффекты.
W>Вопросов нет. Почему тогда в списке нелюбимчиков только С++?
Здравствуйте, 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];
Здравствуйте, landerhigh, Вы писали:
L>Внезапно "затолкать Java" превратилось в "Написать на языке, к которому есть фронтенд к GCC". L>Ловкость рук и никакого мошенства, да.
Я там про Аду писал, вообще-то. Вам нужен компилятор Ады не на gcc?
Здравствуйте, netch80, Вы писали:
N>Вы сказали, вопросов нет?
Это выражение такое.
N>И в чьём именно списке?
Ну хейтеров видимо. Тема же так называется.
На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах.
Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках.
Это говорит лишь о человеческой страсти осуждать популярное.
W>Ну хейтеров видимо. Тема же так называется. W>На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах. W>Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках. W>Это говорит лишь о человеческой страсти осуждать популярное.
ИМХО, не стоит тебе воспринимать все сказанное так близко к сердцу. "Хейтеры" — это далеко не "весь мир". И вообще, человек с нормальной психикой не может ненавидеть средства разработки
P.S. Помнится, когда я учился в институте, у нас на потоке один бедолага крышей поехал — охотился на операторы набла — хватал все книжки, которые попадали в его поле зрения и выдирал страницы, на которых находил эти самые "наблы". Вот у всех С++ хейтеров наблюдается очень похожий синдром.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>ИМХО, не стоит тебе воспринимать все сказанное так близко к сердцу. "Хейтеры" — это далеко не "весь мир". И вообще, человек с нормальной психикой не может ненавидеть средства разработки
Но я ведь и не воспринимаю. Ты все-таки не совсем уловил посыл.
Я пытаюсь в форме диалога вывести мысль о том, что любые конкретные недостатки могут быть у любых средств разработки.
И если задаться идеей найти их все, то могут возникнуть вот такое проекты: https://dorinlazar.ro/why-c-sucks-2016-02-edition/
Но разве это характеризует объективно конкретное средство?
По-моему нет. Вы только посмотрите: у него даже несколько редакций есть.
Это скорее характеризует степень заинтересованности публики в нем, и спрос на такой контент, соответственно.
Если бы на С++ программировал 1 программист на миллион, то никто бы не задавал таких вопросов.
И я не говорю, что в этих статьях и т.п. нет хотя бы частично адекватной критики, просто я хотел обозначить именно этот момент, как первопричину.
Здравствуйте, wander, Вы писали:
N>>Вы сказали, вопросов нет? W>Это выражение такое.
Неуместно, если сразу после этого следует вопрос.
N>>И в чьём именно списке? W>Ну хейтеров видимо. Тема же так называется. W>На самом деле ответы на это просты. С++ "недолюблювают", потому что он популярен. Причина (изначальная) не в его сложности и чем-то другом объективном, а в популярности. Люди просто не могут пройти мимо. И именно поэтому Вася Пупкин из третьего подъезда колотит жену и всем плевать, а вот как только условный актер это сделает, так вой на всех каналах. W>Или вот как только Rust стал широко известен, так появились, как грибы, статьи о его недостатках. W>Это говорит лишь о человеческой страсти осуждать популярное.
И это вполне правильно. Сильно меньше смысла обсуждать и искать недостатки у того, чем никто не пользуется. Есть смысл — у популярного. Потому что
1) это даёт шанс, что какие-то из них исправят,
2) это усиливает шанс, что новое средство будет без таких недостатков, за счёт известности такой критики.
Сравнение с популярным актёром тоже в тему, в том смысле, что если его обстановка и судьба людям интересны, то на его примере можно и нужно обсуждать, что правильно, а что нет. Может, плохо, что используется именно такой пример, но это уже следствие популярности.
А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.
Здравствуйте, netch80, Вы писали:
N>Неуместно, если сразу после этого следует вопрос.
Вам это настолько важно?
N>А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики.
Ну так если некий (даже конструктивный) недостаток приписывают чему-то одному популярному, а другим, обладающим тем же недостатком, не приписывают только исключительно засчет их меньшей популярности, то об этом надо бы сказать. Очень характерна картинка, которая послужила стартом ветки, она оказалась продуктом другого языка, но привели ее как доказательство для С++. И именно поэтому я решил разбавить это немного рассуждениями на тему первопричин такого явления. Ведь ТС интересовало ПОЧЕМУ хейтят ИМЕННО С++.
Здравствуйте, wander, Вы писали:
N>>Неуместно, если сразу после этого следует вопрос. W>Вам это настолько важно?
Если обсуждать конструктивно — да, важно.
N>>А вот почему из всех популярных C++ критикуют _именно за то_, за что критикуют — это и есть конструктивная часть тематики. W>Ну так если некий (даже конструктивный) недостаток приписывают чему-то одному популярному, а другим, обладающим тем же недостатком, не приписывают только исключительно засчет их меньшей популярности, то об этом надо бы сказать.
А с чего вывод про "не приписывают"? Приписывают. Но не настолько обсуждают.
А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.
W> Очень характерна картинка, которая послужила стартом ветки, она оказалась продуктом другого языка, но привели ее как доказательство для С++. И именно поэтому я решил разбавить это немного рассуждениями на тему первопричин такого явления. Ведь ТС интересовало ПОЧЕМУ хейтят ИМЕННО С++.
Про картинку я посмотрел, но мне такая ситуация за пределами интересного.
Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.
Здравствуйте, netch80, Вы писали:
N>А ещё — какое-то свойство становится недостатком не само по себе, а попав в комплекс с другими свойствами. Даже с популярностью, потому что масштаб его воздействия как недостатка становится выше терпимого предела.
Если говорить абстрактно, то да. Но если говорить про C++, то похоже вы несколько сгущаете краски.
Будь это так, то все уже давно бы отказались от него. А если нет, то терпимый предел все-таки чуть повыше.
N>Ну а в случае C++ его известные недостатки очень сильно вылазят боком, поэтому переход на другие средства, если можно, или пинания разработчиков, чтобы исправить — нормальная реакция от того, кто хочет с большей пользой тратить свои усилия.
Ну так я ниже, буквально над вашим постом написал, что если будут объективные причины заменить на другие средства, то заменят — и это нормально,
а не будут каталогизировать недостатки
R>И даже на этом веселуха еще не заканчивается — обязательно ведь найдется грамотей, который позовет Dispose (прямо либо через using) для входного стрима.
Он и так задиспозится, стрим дазиспозится ридером. Это вообще в .NET стандарт, все ридеры по умолчанию закрывают переданный им конструктор стрим. + Обычно есть перегруженный конструктор с флажком, который явно говорит закрывать или нет стрим.