Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Предполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Преимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 02:55 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereКто что думает?Смотря, что потом с этим кодом будет, и для чего он нужен. Если себе удобнее и на один раз или самому пользоваться дальше - тогда С и С++, в зависимости от того, что тобой предпочитается. Если потом работать другим людям, то брать среднее арифметическое от С и С++ по количеству людей и задач. В общем, вопрос сильно вакуумный, так-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 05:07 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereпонятность тоже не отличается.Это означает, что или программа 100% детская, Hello world, или плюсы используются неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 07:28 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Лучше ни на чем не писать, пока не уяснишь разницу между C/С++ и разницу между процедурным программированием и ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 08:58 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_dev, Никто не мешает писать на c++ в процедурном стиле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 09:26 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Изопропилrdb_dev, Никто не мешает писать на c++ в процедурном стилеКонечно! Но разницу понимать необходимо, так как в Си и C++ даже синтаксис условных директив компилятора несколько отличается, так как С++ практически полностью наследует синтаксис Си, добавляя свои прибамбасы (++). Можно не парится с выбором и использовать синтаксис и все прелести C++, если... Если не пишешь что-нибудь опенсорсное под Линух, ибо сообщество может не оценить такого высокого порыва. Как говорится - "в каждой избушке свои погремушки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 09:44 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devЕсли не пишешь что-нибудь опенсорсное под Линух, ибо сообщество может не оценить такого высокого порыва так в этом случае "собщество" и задаёт ограничения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 09:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Изопропилrdb_dev, Никто не мешает писать на c++ в процедурном стиле Никто не мешает писать на C, используя принципы ООП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 10:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiНикто не мешает писать на C, используя принципы ООПЭто как? Ну, с инкапсуляцией понятно, а как быть с полиморфизмом, наследованием и виртуальными методами? Писать всё ручками в соответствии с ABI C++? Это шутка такая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 11:07 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereПредполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Кто что думает? Да нет, на С++ надо писать. С вообще устаревший язык, кроме как для написания ядра Linux ни на что уже не нужный. С++ тоже подходит для этой цели, он не используется для ядра только по одной известной всем причине. log_hereПреимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Нет ни того, ни другого преимущества. У С чуть более большая переносимость всвязи с тем, что компилятор проще в разы и что С++ меняется в данный период истории. log_hereПреимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. С++ строже (хотя последние компиляторы С -- это уже далеко не K&R style), и всё же обладает большим спектром инструментальных возможностей, чем С, причём в С во многих его применениях, что я знаю, упорно используют ООП, сделанное, естественно, "на спичках и замазке". Конечно, вопрос выбора языка -- очень сложный, и давать советы я бы не стал, но поскольку всё равно тебе решать, то я бы рекомендовал С++. В крайности ты можешь не использовать ни новые фичи С++11, ни шаблоны, но всё равно будет лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 11:58 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Изопропилrdb_dev, Никто не мешает писать на c++ в процедурном стиле Никто не мешает писать на С в ООП-стиле, но... Всё же на ноги удобнее одевать штаны, а не футболку, а футболку удобнее на торс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivС вообще устаревший язык, кроме как для написания ядра Linux ни на что уже не нужный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devschiНикто не мешает писать на C, используя принципы ООПЭто как? Ну, с инкапсуляцией понятно, а как быть с полиморфизмом, наследованием и виртуальными методами? Писать всё ручками в соответствии с ABI C++? Это шутка такая? Да нет, не шутка, многие пишут. Существует порядка 5-6 способов изображать ООП в языке С. Вон, Иван (iv_an_ru) подтвердит, в их Virtuoso почти все используются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivrdb_devпропущено... Это как? Ну, с инкапсуляцией понятно, а как быть с полиморфизмом, наследованием и виртуальными методами? Писать всё ручками в соответствии с ABI C++? Это шутка такая? Да нет, не шутка, многие пишут. Существует порядка 5-6 способов изображать ООП в языке С. Вон, Иван (iv_an_ru) подтвердит, в их Virtuoso почти все используются... А, так вроде ООП-подходы даже в ядре Linux присутствует в каком-то виде. WIndows же вообще вся на ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:04 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devschiНикто не мешает писать на C, используя принципы ООПа как быть с полиморфизмом, наследованием и виртуальными методами?Ручками пишете таблички виртуальных функций, явно их заполняете, явно прописываете указатели на вирттаблицы в "классы" и явно инициализируете эти указатели в "конструкторах", явно передаёте "this". Всё элементарно, особенно если сравнивать этот гемор не с нынешними плюсами под линуксом, а с полурабочими плюсами 2000-го года где-нибудь под AIX-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:15 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivДа нет, не шутка, многие пишут. Существует порядка 5-6 способов изображать ООП в языке С. Вон, Иван (iv_an_ru) подтвердит, в их Virtuoso почти все используются...Проктостоматология... Можно, конечно, описать структуру базового класса с первым членом в виде указателя на массив указателей к виртуальным методам, каждый из которых будет принимать в первом параметре указатель на структуру, в области видимости структуры хранить enum с порядком виртуальных методов... Но как быть с new/delete, наследованием, приведением указателей? Даже если попытаться максимально повторить весь функционал C++ в своей обертке структур для симуляции классов, всё равно это будет выглядеть также ужасно, как шасси авиалайнера, примотанное к несущему каркасу фюзеляжа скотчем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
можете кинуть в меня камушком, но виртуальные методы - это не капец какая нужная штука, без них можно в большинстве случаев обойтись. Вот инкапсуляция - это бОльшая часть ООПы. А полиморфизм - это когда: - у вас есть набор объектов разных классов - все свалены в одну кучу - и вы понятия не имеете, кто из ни кто, на тот момент когда с ними вдруг понадобилось что-то сделать. ... да это бардак какой-то! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devMasterZivДа нет, не шутка, многие пишут. Существует порядка 5-6 способов изображать ООП в языке С. Вон, Иван (iv_an_ru) подтвердит, в их Virtuoso почти все используются...Проктостоматология... Можно, конечно, описать структуру базового класса с первым членом в виде указателя на массив указателей к виртуальным методам, каждый из которых будет принимать в первом параметре указатель на структуру, в области видимости структуры хранить enum с порядком виртуальных методов... Но как быть с new/delete, наследованием, приведением указателей? Даже если попытаться максимально повторить весь функционал C++ в своей обертке структур для симуляции классов, всё равно это будет выглядеть также ужасно, как шасси авиалайнера, примотанное к несущему каркасу фюзеляжа скотчем. Руками надо делать, а не как детей... И все будет выглядеть читаемо. Весь функционал зачем пытаться повторять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
на мой взгляд в плюсах реально удобные вещи это только автовызовы деструкторов и конструкторов, но они же и основной источник проблем у начинающих а виртуальность и полиморфизм повторяются элементарно, в инете есть варианты автоматизации этого на макросах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglРуками надо делать, а не как детей... И все будет выглядеть читаемо. Весь функционал зачем пытаться повторять? Ну, с другой стороны, руками детей и не сделаешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)на мой взгляд в плюсах реально удобные вещи это только автовызовы деструкторов и конструкторов, они же и основной источник проблем у начинающихну это проблема на неделю-две. Так что не проблема. move-семантика тоже удобная вещь все stl-ные контейнеры и макросы тоже да там много удобного, так-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 12:58 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbможете кинуть в меня камушком, но виртуальные методы - это не капец какая нужная штука, без них можно в большинстве случаев обойтись.Не скажи... Я, к примеру, в некоторых своих библиотеках использую API на виртуальных методах. Очень удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 13:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devCEMbможете кинуть в меня камушком, но виртуальные методы - это не капец какая нужная штука, без них можно в большинстве случаев обойтись.Не скажи... Я, к примеру, в некоторых своих библиотеках использую API на виртуальных методах. Очень удобно. их интерфейсами обычно называют так же элементарно делается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 13:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)их интерфейсами обычно называют так же элементарно делаетсяДа! Вначале, в заголовочном файле описывается интерфейсный класс с pure virtual методами, который, затем, наследуется классом библиотеки, где осуществляется реализация виртуальных методов класса и эта библиотека экспортирует Си функцию, возвращающую указатель на экземпляр класса с реализацией. Приложение инклюдит заголовочный файл и дергает виртуальные методы. Вот и вся технология. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 13:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devНе скажи... Я, к примеру, в некоторых своих библиотеках использую API на виртуальных методах. Очень удобно.я и не говорил, что не удобно. Весь COM на интерфейсах сделан, очень удобно. Но в большинстве случаев полиморфизм можно не использовать. Даже так: лучше не использовать, если можно не использовать. Всё, что может быть сразу посчитано, должно быть сразу посчитано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 13:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbя и не говорил, что не удобно. Весь COM на интерфейсах сделан, очень удобно. Но в большинстве случаев полиморфизм можно не использовать. Даже так: лучше не использовать, если можно не использовать. Всё, что может быть сразу посчитано, должно быть сразу посчитано.COM, кстати, никакого отношения к ООП, по большому счету, не имеет. В COM, это соглашение и при написании COM объектов без труда и лишний костылей можно использовать процедурное программирование. Для интересующихся есть прекрасная книга по основам COM ( Inside COM ) Дейла Роджерсона, которую, также, можно найти в хорошем русском переводе на просторах рунета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devв Си и C++ даже синтаксис условных директив компилятора несколько отличается А можно как-то увидеть чем именно несколько отличается? Чисто для поднятия уровня эрудиции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:04 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ну яrdb_devв Си и C++ даже синтаксис условных директив компилятора несколько отличается А можно как-то увидеть чем именно несколько отличается? Чисто для поднятия уровня эрудиции. :) ну, в ANSI C89 таки нет #if defined ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ну яА можно как-то увидеть чем именно несколько отличается? Чисто для поднятия уровня эрудиции. Всё здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devschiНикто не мешает писать на C, используя принципы ООПЭто как? Ну, с инкапсуляцией понятно, а как быть с полиморфизмом, наследованием и виртуальными методами? Писать всё ручками в соответствии с ABI C++? Это шутка такая? начем с того, что полиморфизм, наследование и виртуальные методы - они в большинстве случаев реально мало нужны, если починить проблему ООП головного мозга и правильно проектировать архитектуру решения. где они еще с натяжкой применимы как must have - это вские виджеты или UI контролы, но и там - все достижимо - см. реализацию GTK+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:10 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchгде они еще с натяжкой применимы как must have - это вские виджеты или UI контролы, но и там - все достижимо - см. реализацию GTK+GTK+, это процедурное API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereПредполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Преимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает? я в бытность купился на то, чтобы писать исключительно на C, а не на C++, ибо так завещал великий Торвальдс, да и изучать гигазы "рулеза" вроде STL/Boost откровенно не хотелось. в принципе о принятом решении я нисколько не жалею, но нужно понимать, что ты будешь вынужден писать свой собственный велосипед как раз на тему того, что уже делает (хоть и плохо) STL и Boost а это плохо, ибо велосипед - его будет знать и развивать ну очень ограниченное сообщество. меня пока сдерживает только перспектива "новой парадигмы" - в собственном "STL" я в принципе ушел от понятия heap (malloc/free прикладному программисту у меня недоступны, все ловко сделано аля Java GC с поколениями и стек-контекстами), и еще пару идей но начинающим подобное строго противопоказано. P.S. А вот что действительно недостает в C - так это параметров по умолчанию, перегруженных функций и возможности явно скрывать поля в структурах, оставляя RTTI о размере объекта в целом. решается это все конечно макросами и прочими _Generic, но какой ценой.... в общем без реально веских на то причин и без 10+ лет опыта подсаживаться на Pure C - не стоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchну япропущено... А можно как-то увидеть чем именно несколько отличается? Чисто для поднятия уровня эрудиции. :) ну, в ANSI C89 таки нет #if defined Пруф, видимо, при передаче в интернет утратился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ну яПруф, видимо, при передаче в интернет утратился?Какой тебе еще пруф? напиши в заголовочном файле какой-нибудь программы на Си #if defined() и попробуй компильнут на "Гнусе". Вот и весь пруф! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devdbpatchгде они еще с натяжкой применимы как must have - это вские виджеты или UI контролы, но и там - все достижимо - см. реализацию GTK+GTK+, это процедурное API. и что с того? внутри лежит именно компонентная ООП модель. восприятие ООП на С начни с простого факта, что функционально нет никакой разницы между Код: plaintext 1. Код: plaintext 1. все остальное это лишь визуально-синтаксический сахарок. при должном навыке на C можно писать точно такой-же, в т.ч. и по компактности в строках код. выглядеть будет непривычно, но это будет точно такой-же по возможностям ООП язык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:25 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devну яПруф, видимо, при передаче в интернет утратился?Какой тебе еще пруф? напиши в заголовочном файле какой-нибудь программы на Си #if defined() и попробуй компильнут на "Гнусе". Вот и весь пруф! Я потом проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devну яПруф, видимо, при передаче в интернет утратился?Какой тебе еще пруф? напиши в заголовочном файле какой-нибудь программы на Си #if defined() и попробуй компильнут на "Гнусе". Вот и весь пруф! Ну зачем же "еще", мне б хоть какой-то увидеть, а то все никак ничего добиться не получается. Вот открыл навскидку что болтается под рукой из гнусного - sha1.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И где тут не работают #if defined() ? Так где пруфчик-то насчет "синтаксис условных директив компилятора" С и С++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devну яПруф, видимо, при передаче в интернет утратился?Какой тебе еще пруф? напиши в заголовочном файле какой-нибудь программы на Си #if defined() и попробуй компильнут на "Гнусе". Вот и весь пруф! ну, справделивости ради - GNU C вполне себе поддерживает #if defined даже в режиме -ansi -pedantic честно говоря уже не помню, на именно каком C компиляторе я на это наступил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchну япропущено... А можно как-то увидеть чем именно несколько отличается? Чисто для поднятия уровня эрудиции. :) ну, в ANSI C89 таки нет #if defined http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchи что с того?Ничего. Просто уточнил. dbpatchвнутри лежит именно компонентная ООП модель.Как это реализовано, для "внешнего наблюдателя" не имеет значения. dbpatchвосприятие ООП на С начни с простого факта, что функционально нет никакой разницы между Код: plaintext 1. Код: plaintext 1. все остальное это лишь визуально-синтаксический сахарок. при должном навыке на C можно писать точно такой-же, в т.ч. и по компактности в строках код. выглядеть будет непривычно, но это будет точно такой-же по возможностям ООП языкЯ в курсе, что вызов метода объекта, это вызов обычной функции с передачей в параметре this указателя на экземпляр класса, который, в большинстве случаев, содержит в качестве первого члена указатель на таблицу виртуальных методов. Собственно, указатель на экземпляр класса можно интерпретировать как указатель на указатель к массиву указателей на функции, каждая из которых в качестве первого параметра принимает указатель на экземпляр класса. Нам-то с тобой понятно, что я написал, а новичок будет долго фтыкать и курить ABI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devdbpatchи что с того?Ничего. Просто уточнил. dbpatchвнутри лежит именно компонентная ООП модель.Как это реализовано, для "внешнего наблюдателя" не имеет значения. dbpatchвосприятие ООП на С начни с простого факта, что функционально нет никакой разницы между Код: plaintext 1. Код: plaintext 1. все остальное это лишь визуально-синтаксический сахарок. при должном навыке на C можно писать точно такой-же, в т.ч. и по компактности в строках код. выглядеть будет непривычно, но это будет точно такой-же по возможностям ООП языкЯ в курсе, что вызов метода объекта, это вызов обычной функции с передачей в параметре this указателя на экземпляр класса, который, в большинстве случаев, содержит в качестве первого члена указатель на таблицу виртуальных методов. Собственно, указатель на экземпляр класса можно интерпретировать как указатель на указатель к массиву указателей на функции, каждая из которых в качестве первого параметра принимает указатель на экземпляр класса. Нам-то с тобой понятно, что я написал, а новичок будет долго фтыкать и курить ABI . не будет, ибо он понятия не имеет, что это такое и зачем это ему нужно. новичок обычно начинает с зачитывания какого Страустрап за 21 день и дальше начинает просто подражать другим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:44 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
[quot dbpatch]rdb_devвосприятие ООП на С начни с простого факта, что функционально нет никакой разницы между Код: plaintext 1. Код: plaintext 1. все остальное это лишь визуально-синтаксический сахарок. при должном навыке на C можно писать точно такой-же, в т.ч. и по компактности в строках код. выглядеть будет непривычно, но это будет точно такой-же по возможностям ООП язык А нельзя ли раскрыть по "все остальное" к примеру про эксепшены и деструкторы, про выход из области видимости и деструкторы. Как это написать на С при должном навыке, покажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 14:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbможете кинуть в меня камушком, но виртуальные методы - это не капец какая нужная штука, без них можно в большинстве случаев обойтись. Вот инкапсуляция - это бОльшая часть ООПы. А полиморфизм - это когда: - у вас есть набор объектов разных классов - все свалены в одну кучу - и вы понятия не имеете, кто из ни кто, на тот момент когда с ними вдруг понадобилось что-то сделать. ... да это бардак какой-то! Угу, бардак. Только иногда неизбежный. Например, ваш экзешник прилинковывает к себе чужие плагины... причём с двунаправленным импортом таблиц функций... причём на операционке, которая не поддерживает двунаправленный импорт (т.е. после работы системного линковщика функции DLL могут быть вызваны из экзешника, но не наоборот). И внезапно двум плагинам хочется использовать функции _друг_друга_, да ещё подгрузить свои карманные DLL-ки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ну яА нельзя ли раскрыть по "все остальное" к примеру про эксепшены и деструкторы, про выход из области видимости и деструкторы. Как это написать на С при должном навыке, покажите? 1) exceptions как концепция - это очень большая ошибка индустрии, ибо это лишь завуалированная форма GOTO, причем за область видимости функции. породила намного, намного больше проблем, чем решила. я вот за многие уже десятки лет так и не понял, на кой хрен они вообще были придуманы. как способ возврата кодов ошибки - возможно, хоть и криво, а так, в большинстве случаев они лишь используются для неперехватываемого проброса наверх для генерации call-stack trace и dump. ну так последнее в C можно делать и обычным способом - backtrace и вперед. в общем на кой нужны эти ваши Exceptions - для меня лично есть большая загадка. а за программировать "логику" на исключениях - и это все признают, нужно руки отбивать. кроме того, есть прицип live-to-die, "падай как можно раньше", см. PHP, Erlang и подобное - там никакие "пробросы и обработка исключений" не нужны, любое необработанное исключение априори приводит к завершению процесса и уведомлению об том клиента 2) деструкторы нужны только для "эстестично глазоприятного" освобождения ресурсов, вроде файловых хендлов, или дерганий free() аналогично про области видимости. в остальном это просто вызовы функций - бери и вызывай их явно, в чем проблема? лично меня подобная проблема (освобождение ресурсов) вообще не парит - я давно пришел к пониманию "контекста" - к примеру времени жизни веб запроса. прикладному программисту вообще не нужно париться про все эти освобождения, у него программа живет пару миллисекунд всего. все вызовы на открытие файлов и аллокации памяти можно "оборачивать" и "коллекционировать", а после завершения запроса / контекста (отдачи результата клиенту) централизованно и неявно, через собственный менеджер ресурса - освобождать, тем самым проблема утечек памяти и невнимательности прикладного кодера уходит как класс, и деструкторы в принципе не нужны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruCEMbможете кинуть в меня камушком, но виртуальные методы - это не капец какая нужная штука, без них можно в большинстве случаев обойтись. Вот инкапсуляция - это бОльшая часть ООПы. А полиморфизм - это когда: - у вас есть набор объектов разных классов - все свалены в одну кучу - и вы понятия не имеете, кто из ни кто, на тот момент когда с ними вдруг понадобилось что-то сделать. ... да это бардак какой-то! Угу, бардак. Только иногда неизбежный. Например, ваш экзешник прилинковывает к себе чужие плагины... причём с двунаправленным импортом таблиц функций... причём на операционке, которая не поддерживает двунаправленный импорт (т.е. после работы системного линковщика функции DLL могут быть вызваны из экзешника, но не наоборот). И внезапно двум плагинам хочется использовать функции _друг_друга_, да ещё подгрузить свои карманные DLL-ки. пример неудачный. ясен пончик, что если ты решился взять в зависимости чужие благоглупости - то ты будешь вынужден брать в арсенал и на обслуживание весь накопленный бардак, соглашения и прочие принципы и правила. мы говорим больше про идеализированного коня в вакууме - пишем с нуля, выбрасываем все ненужное и лишнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ну яНу зачем же "еще", мне б хоть какой-то увидеть, а то все никак ничего добиться не получается. Вот открыл навскидку что болтается под рукой из гнусного - sha1.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И где тут не работают #if defined() ? Так где пруфчик-то насчет "синтаксис условных директив компилятора" С и С++?Какой стандарт Си задал компилятору? С99? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchлично меня подобная проблема (освобождение ресурсов) вообще не парит - я давно пришел к пониманию "контекста" - к примеру времени жизни веб запроса.Десяток взаимодействий с дефицитными "долгоживущими" разделяемыми ресурсами, использующими что-то вроде AddRef() и Release(), которые в силу дефицитности не могут ждать даже до конца вот этого коротенького "контекста" --- и вот тут-то вы и начнёте мечтать о плюсах :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchлично меня подобная проблема (освобождение ресурсов) вообще не парит - я давно пришел к пониманию "контекста" - к примеру времени жизни веб запроса.Десяток взаимодействий с дефицитными "долгоживущими" разделяемыми ресурсами, использующими что-то вроде AddRef() и Release(), которые в силу дефицитности не могут ждать даже до конца вот этого коротенького "контекста" --- и вот тут-то вы и начнёте мечтать о плюсах :) пример сугубо гипотетический, и тем самым неактуальный. из моей практики были примеры "долгоживущих" - в тех же самых контекстах стоит задача интеграции со сторонними вебсервисами и прочими базами данных, условно 100500 клиентских коннекшинов одномоментно делают запросы, а количество соединений к внешней базе данных ограничено (не более 10 за раз, к примеру). и? да никакого и - опять на сцену выходит централизованный менеджер ресурсов, под названием POOLер, все 100500 клиентов сидят в очереди к условно 10 операционистам со своими билетиками электронной очереди, ничего нового, теорию массового обслуживания никто не отменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruУгу, бардак. Только иногда неизбежный. Например, ваш экзешник прилинковывает к себе чужие плагины... причём с двунаправленным импортом таблиц функций... причём на операционке, которая не поддерживает двунаправленный импорт (т.е. после работы системного линковщика функции DLL могут быть вызваны из экзешника, но не наоборот). И внезапно двум плагинам хочется использовать функции _друг_друга_, да ещё подгрузить свои карманные DLL-ки.Для этого, обычно, делают прокси библиотеку сопряжения, в которую "экзешник", при инициализации библиотеки, передаёт указатели на реализованные в нем функции, что могут быть вызваны другими библиотеками через прокси библиотеку. По такому принципу, к примеру, сервер FirebirdSQL позволяет UDF библиотекам выделять память в своей куче для возвращения ему некоторых параметров из функций UDF библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchiv_an_ruпропущено... Угу, бардак. Только иногда неизбежный. Например, ваш экзешник прилинковывает к себе чужие плагины... причём с двунаправленным импортом таблиц функций... причём на операционке, которая не поддерживает двунаправленный импорт (т.е. после работы системного линковщика функции DLL могут быть вызваны из экзешника, но не наоборот). И внезапно двум плагинам хочется использовать функции _друг_друга_, да ещё подгрузить свои карманные DLL-ки. пример неудачный. ясен пончик, что если ты решился взять в зависимости чужие благоглупости - то ты будешь вынужден брать в арсенал и на обслуживание весь накопленный бардак, соглашения и прочие принципы и правила. мы говорим больше про идеализированного коня в вакууме - пишем с нуля, выбрасываем все ненужное и лишнееНаша Виртуоза, как и любая другая толстая СУБД --- это тот самый конь и есть, не только написанный с нуля, но и настолько "в вакууме", что, в принципе, незначительными добавками программа может быть превращена в операционную систему (Достаточно вкорячить немного HAL и бутявку, а остальное и так всё своё, включая раздатчики памяти, сеть и кластерные IPC, планировщик файловой подсистемы и т.п.) И тем не менее, мы с нетерпением ждём подходящего момента для полноценной миграции с голых сей на плюсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruИ тем не менее, мы с нетерпением ждём подходящего момента для полноценной миграции с голых сей на плюсы. вы наверное еще не пробовали почитать/понять написанное из .hpp-ек в современных STL/Boost, совсем нет? оценить надажность/рискованность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch1) exceptions как концепция - это очень большая ошибка индустрии, ибо это лишь завуалированная форма GOTO, причем за область видимости функции. породила намного, намного больше проблем, чем решила. Дурак ты. Если не понимаешь, не неси околесицу. Иди на GO программируй, там тебя ждут, "ошибка индустрии"... Во ВСЕХ современных языках ЕСТЬ обработка исключений. Там, где их не было -- они появляются. Это тебе ни о чём не говорит ? Не, как бы говорит, что все вокруг идиоты, ага... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
[quot ну я]dbpatchпропущено... А нельзя ли раскрыть по "все остальное" к примеру про эксепшены и деструкторы, про выход из области видимости и деструкторы. Как это написать на С при должном навыке, покажите? эксепшены -- longjump, деструкторы -- никак, только руками. про выход из области видимости и деструкторы -- тоже никак, только руками и силой воли. Можно ещё макроязык с компиляцией в С, но зачем, если есть С++ -- не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivДурак ты. Если не понимаешь, не неси околесицу. Иди на GO программируй, там тебя ждут, "ошибка индустрии"... Во ВСЕХ современных языках ЕСТЬ обработка исключений. Там, где их не было -- они появляются. Это тебе ни о чём не говорит ? Не, как бы говорит, что все вокруг идиоты, ага...Воу-воу-воу!... Не надо так резко руль вправо! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_dev Не надо так резко руль вправо! :) Да надо, надо. Идиотизм надо на корню убивать. Если чел не осилил исключения, это совсем не значит, что они не нужны. Вон, БелыйФилин тоже не осилил, но даже он всё же не бухтит, что исключения не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivdbpatch1) exceptions как концепция - это очень большая ошибка индустрии, ибо это лишь завуалированная форма GOTO, причем за область видимости функции. породила намного, намного больше проблем, чем решила. Дурак ты. Если не понимаешь, не неси околесицу. Иди на GO программируй, там тебя ждут, "ошибка индустрии"... Во ВСЕХ современных языках ЕСТЬ обработка исключений. Там, где их не было -- они появляются. Это тебе ни о чём не говорит ? Не, как бы говорит, что все вокруг идиоты, ага... твое утверждение сомнительно, ибо ты похоже даже не смог понять мною сказанное, а из "опровержений" лишь привел "все делают так, а ты что, сильно умнее остальных?" напоминает ту самую историю про клетку обезьян, апельсин и бранспойт, когда все делают вот так, наказывают тех, кто так не делает, но никто не знает, почему они вообще начали делать вот именно так изначально. так что пройдите, уважаемый, в 95%, вы шаблонны, тем неактуальны :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchтвое утверждение сомнительно, ибо ты похоже даже не смог понять мною сказанное, а из "опровержений" лишь привел "все делают так, а ты что, сильно умнее остальных?" Я и не собирался убеждать тебя в чём-то, или опровергать. Не, если ты сам не понимаешь, то бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivrdb_dev Не надо так резко руль вправо! :) Да надо, надо. Идиотизм надо на корню убивать. Если чел не осилил исключения, это совсем не значит, что они не нужны. Вон, БелыйФилин тоже не осилил, но даже он всё же не бухтит, что исключения не нужны. кто сказал, что я не осилил? еще раз, для тех, кто трудно догоняет с первого раза - я нигде не говорил, что придя в сообщество со устоявшимися правилами нужно всех переучивать на какие-то свои правила. если в библиотеке/решении все построено на исключениях, то ты вынужден с ними работать так, как это предписано авторами этого "творения", тщательно соблюдая все Style Guide и не только. я же говорил про ситуацию - ты никому ничем не обязан, стоишь перед новым решением и выбираешь технологический стек. так вот - я продолжаю утверждать, что исключения в принципе - не нужны, ибо изначально концептуально ошибочны. и что вполне можно писать код вообще без них и есть масса примеров успешных проектов на миллионы строк, построенных вообще без них. потому начни убивать что-то в себе, можешь начать прямо сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivdbpatchтвое утверждение сомнительно, ибо ты похоже даже не смог понять мною сказанное, а из "опровержений" лишь привел "все делают так, а ты что, сильно умнее остальных?" Я и не собирался убеждать тебя в чём-то, или опровергать. Не, если ты сам не понимаешь, то бесполезно. да, я не понимаю, на тему чего ты тут развыступался. ценность твоих "мессаджей" стремится к нулю. ты вообще что сказать хочешь? что нужно просто тупо делать как все, как принято? ну ок, тебя услышали, дальше что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchтак вот - я продолжаю утверждать, что исключения в принципе - не нужны, ибо изначально концептуально ошибочны. и что вполне можно писать код вообще без них и есть масса примеров успешных проектов на миллионы строк, построенных вообще без них. Исключения были в технологиях IT с самого начала, вся вычислительная математика, вычислительные машины изначально строились с этой идеей. Ты не можешь так вот прийти через 70 лет в индустрию, и сказать, что "это было ошибкой". Ну, т.е. ты можешь, но просто тебе будут вертеть пальцем у виска в ответ, и правильно будут делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:51 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivИсключения были в технологиях IT с самого начала, вся вычислительная математика, вычислительные машины изначально строились с этой идеей. Ты не можешь так вот прийти через 70 лет в индустрию, и сказать, что "это было ошибкой". Ну, т.е. ты можешь, но просто тебе будут вертеть пальцем у виска в ответ, и правильно будут делать...Ну, изначально, исключение это, всего-лишь, вектор прерывания процессора, а как там дальше - решать разработчику софта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:54 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivdbpatchтак вот - я продолжаю утверждать, что исключения в принципе - не нужны, ибо изначально концептуально ошибочны. и что вполне можно писать код вообще без них и есть масса примеров успешных проектов на миллионы строк, построенных вообще без них. Исключения были в технологиях IT с самого начала, вся вычислительная математика, вычислительные машины изначально строились с этой идеей. Ты не можешь так вот прийти через 70 лет в индустрию, и сказать, что "это было ошибкой". Ну, т.е. ты можешь, но просто тебе будут вертеть пальцем у виска в ответ, и правильно будут делать... т.е. ты хочешь сказать, что Exceptions в ЯП были уже 70 лет назад? прямо в 1947-м году, да? а ты смешной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 15:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devMasterZivИсключения были в технологиях IT с самого начала, вся вычислительная математика, вычислительные машины изначально строились с этой идеей. Ты не можешь так вот прийти через 70 лет в индустрию, и сказать, что "это было ошибкой". Ну, т.е. ты можешь, но просто тебе будут вертеть пальцем у виска в ответ, и правильно будут делать...Ну, изначально, исключение это, всего-лишь, вектор прерывания процессора, а как там дальше - решать разработчику софта. да ладно, забей. обычно программист эволюционирует примерно так 10 лет - изучит Basic/Scratch 15 лет - изучил Pascal, но взрослые сказали, что нужно изучать ООП ибо зарплаты не будет 18 лет - изучил Delphi/Java/JavaScript/PHP/C++, устроился джуниором 25 лет - изучил паттерны, шматтерны, скрам, аджайл и так научился мастерски подражать "взрослым", что меня произвели в "синиоры" 30 лет - после 12 лет ООП понял бессмысленность жизни, прочитал на хабре о том, что 15 лет назад меня возможно несколько обманули, но пока не понял в чем, и по советом "взрослых" начал изучать ФП 35 лет - изучив ФП понял, что меня опять обманули 36 лет - понял, что в индустрии все совсем не так, и нужно возвращаться к ANSI C, т.е. начинать заново изучать то, над чем все смеялись в 15 лет 40 лет - пусть автор виртуозы допишет сам а наш "мастер" видимо безнадежно застрял между 25 и 30 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 16:04 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
[quot MasterZiv]ну япропущено... эксепшены -- longjump, деструкторы -- никак, только руками. про выход из области видимости и деструкторы -- тоже никак, только руками и силой воли. Можно ещё макроязык с компиляцией в С, но зачем, если есть С++ -- не понятно. Ну, лично мне - для эрудиции. Человек же написал что все можно при должном навыке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 16:04 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchт.е. ты хочешь сказать, что Exceptions в ЯП были уже 70 лет назад? прямо в 1947-м году, да? а ты смешной В PL/1 уже были ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchMasterZivпропущено... Исключения были в технологиях IT с самого начала, вся вычислительная математика, вычислительные машины изначально строились с этой идеей. Ты не можешь так вот прийти через 70 лет в индустрию, и сказать, что "это было ошибкой". Ну, т.е. ты можешь, но просто тебе будут вертеть пальцем у виска в ответ, и правильно будут делать... т.е. ты хочешь сказать, что Exceptions в ЯП были уже 70 лет назад? прямо в 1947-м году, да? а ты смешной В ассемблере, в машинных кодах уже были. Об этом уже упомянули в топике. Ну посмейся, я буду только рад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchда ладно, забей. обычно программист эволюционирует примерно так 10 лет - изучит Basic/Scratch 15 лет - изучил Pascal, но взрослые сказали, что нужно изучать ООП ибо зарплаты не будет 18 лет - изучил Delphi/Java/JavaScript/PHP/C++, устроился джуниором 25 лет - изучил паттерны, шматтерны, скрам, аджайл и так научился мастерски подражать "взрослым", что меня произвели в "синиоры" 30 лет - после 12 лет ООП понял бессмысленность жизни, прочитал на хабре о том, что 15 лет назад меня возможно несколько обманули, но пока не понял в чем, и по советом "взрослых" начал изучать ФП 35 лет - изучив ФП понял, что меня опять обманули 36 лет - понял, что в индустрии все совсем не так, и нужно возвращаться к ANSI C, т.е. начинать заново изучать то, над чем все смеялись в 15 лет 40 лет - пусть автор виртуозы допишет сам У меня всё не так Ровно наоборот dbpatchа наш "мастер" видимо безнадежно застрял между 25 и 30 Я прошу мой ник так не склонять, либо целиком, либо уж по имени, к слову "мастерство" он не имеет (почти) никакого отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivЯ прошу мой ник так не склонять, либо целиком, либо уж по имени, к слову "мастерство" он не имеет (почти) никакого отношения. Человек, который считает, что вправе других прямо и неаргументированног называть идиотами (а вот просто так захотелось!) - уже никаких прав иметь не может, кроме права публичной порки. Странно, что ты до сих пор этого не понял. Но ты продолжай, продолжай. И ладно бы ты что по теме сказал ценного, так нет же - залез на березу, покричал, всех позабавил, слез, справился :) А смысл где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivrdb_dev Не надо так резко руль вправо! :) Да надо, надо. Идиотизм надо на корню убивать. Если чел не осилил исключения, это совсем не значит, что они не нужны. Вон, БелыйФилин тоже не осилил, но даже он всё же не бухтит, что исключения не нужны.Я просто не успел к началу этого топика. :) И я не бухчу, а прямо говорю что исключения это зло и дурное изобретение. Оно возвращает нас во времена спагетти-кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
[quot ну я]dbpatchпропущено... А нельзя ли раскрыть по "все остальное" к примеру про эксепшены и деструкторы, про выход из области видимости и деструкторы. Как это написать на С при должном навыке, покажите? https://github.com/psevon/exceptions-and-raii-in-c еще есть boehm GC, alloca, VLA exceptions это и есть сишная setjump в одном из вариантов реализации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlИ я не бухчу, а прямо говорю что исключения это зло и дурное изобретение. то ли дело проверка кодов возврата в каждой строке - никакой лапши ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилWhite OwlИ я не бухчу, а прямо говорю что исключения это зло и дурное изобретение. то ли дело проверка кодов возврата в каждой строке - никакой лапши Никакой. В самом коде достаточно проверить на "ошибка или нету", а потом перепрыгнуть на более вдумчивый разбор ошибки. Зато после каждой строки уже заранее известно в какой именно строке ошибка произошла. Ну вот примерно так я и пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилWhite OwlИ я не бухчу, а прямо говорю что исключения это зло и дурное изобретение. то ли дело проверка кодов возврата в каждой строке - никакой лапши так никто уже не делает. проверка кода возвратов в современном С осуществляется примерно так: Код: plaintext 1. смысл - макрос проверяет всякие errno, делает backtrace() и прочие log_fatal вызовы если говорить про пример выше - то наличие файла нужно проверять отдельно выше, а все остальное в любом случае неожидамое, и падать нужно немедленно. ну или вот так https://github.com/vrogier/ocilib/blob/master/src/ocilib_checks.h примеры чекалок показаны там-же в .c файлах рядом. никакой лапши, все культурно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlИзопропилпропущено... то ли дело проверка кодов возврата в каждой строке - никакой лапши Никакой. В самом коде достаточно проверить на "ошибка или нету", а потом перепрыгнуть на более вдумчивый разбор ошибки. Зато после каждой строки уже заранее известно в какой именно строке ошибка произошла. Ну вот примерно так я и пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. фу, таки говнокод. это все отлично заворачивается в макро и превращается в Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. читабельность повышается в разы - причем и вторую колонку можно решительно сократить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:47 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereПредполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Преимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает? Замечательный критерий выбора ЯП - число строк и "понятность". Предлагаю: Например: f1(ln(число строк кода)) + f2(критерий понятности, от 1 до 10) меньше 1 - C, больше 1 - C++, а если единица - пиши на ассемблере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 17:54 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Addxlog_hereПредполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Преимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает? Замечательный критерий выбора ЯП - число строк и "понятность". Предлагаю: Например: f1(ln(число строк кода)) + f2(критерий понятности, от 1 до 10) меньше 1 - C, больше 1 - C++, а если единица - пиши на ассемблере. Предложение неверное. C это и есть современный кроссплатформенный оптимизирующий "ассемблер". Под конкретный процессор в ассемблерных/машинных кодах уже мало кто что пишет, ибо для всяких извращенств вроде atomic или SSE/AVX понапридумывали интринзиков и built-inов. Только когда последних нет - вот тогда да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 18:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlИзопропилпропущено... то ли дело проверка кодов возврата в каждой строке - никакой лапши Никакой. В самом коде достаточно проверить на "ошибка или нету", а потом перепрыгнуть на более вдумчивый разбор ошибки. Зато после каждой строки уже заранее известно в какой именно строке ошибка произошла. Ну вот примерно так я и пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Я бы посоветовал последовательность retcode = .. ; if (!SQL_SUCCEEDED(..)) print (...) обернуть в что-то типа assert, привычнее выглядит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 18:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchфу, таки говнокод. это все отлично заворачивается в макро и превращается в Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. читабельность повышается в разы - причем и вторую колонку можно решительно сократитьвернёмся к теме топика Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 18:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlИзопропилпропущено... то ли дело проверка кодов возврата в каждой строке - никакой лапши Никакой. В самом коде достаточно проверить на "ошибка или нету", а потом перепрыгнуть на более вдумчивый разбор ошибки. Зато после каждой строки уже заранее известно в какой именно строке ошибка произошла. Ну вот примерно так я и пишу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Кстати, непонятно написано. По логике работы с ODBC, если какой-то из важных вызовов завершился неудачно, в дальнейших вызовах смысла нет. А в приведенном коде первое впечатление, что выполняется вывод ошибки и погнали дальше вызывать. А если print_odbc_error вызывает полный останов, то имя лучше другое придумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 18:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
[quot Siemargl]ну япропущено... https://github.com/psevon/exceptions-and-raii-in-c еще есть boehm GC, alloca, VLA exceptions это и есть сишная setjump в одном из вариантов реализации Сенкс, познавательно. В принципе, там есть что доработать до красивой автоматики, но уровень уже вполне сносный. Интерес представляют пары конструктор-деструктор, чтобы как код дошел до объявленной пары то выполнил конструктор и внес деструктор в финализатор. А если управление не дошло до выполнения конструктора то и деструктор не вызывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchAddxпропущено... Замечательный критерий выбора ЯП - число строк и "понятность". Предлагаю: Например: f1(ln(число строк кода)) + f2(критерий понятности, от 1 до 10) меньше 1 - C, больше 1 - C++, а если единица - пиши на ассемблере. Предложение неверное. C это и есть современный кроссплатформенный оптимизирующий "ассемблер". Под конкретный процессор в ассемблерных/машинных кодах уже мало кто что пишет, ибо для всяких извращенств вроде atomic или SSE/AVX понапридумывали интринзиков и built-inов. Только когда последних нет - вот тогда да. Т.е. других претензий к формуле нет? )) Кроссплатформенного ассемблера не может быть в принципе, и как минимум, ядро компилятора можно написать только на нем. schi По логике работы с ODBC, если какой-то из важных вызовов завершился неудачно, в дальнейших вызовах смысла нет. А в приведенном коде первое впечатление, что выполняется вывод ошибки и погнали дальше вызывать. Абсолютно согласен. В отличии от ситуации с исключениями, где это видно сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
AdxТ.е. других претензий к формуле нет? )) Кроссплатформенного ассемблера не может быть в принципе, и как минимум, ядро компилятора можно написать только на нем. чушь какая-то. прямо дилема курицы и яйца, что появилось первее. это проблема лишь нулевого цикла - т.е. для языка, не знаю, G нужно написать первый компилятор (версия 0.1) на C, а уже потом - отбустрапиться и переписать компилятор на G, перед релизом Т.е. предыдущая (и текущая) версия компилятора G (номер версии >= 1) должна компилировать весь исходный текст компилятора G. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
AdxКроссплатформенного ассемблера не может быть в принципеПрям сейчас в фоновом режиме пописываю фиговинку для _SimpleCortex_, щёлкая мышой по _виндовому_ IDE ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:15 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Addx, нет ничего более понятного, чем ассемблер! Там всё чётко - никаких неопределенностей из-за перегрузок операторов. Есть еще Instruction List.примерно той же степени чёткости. Это не шутка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
egorychdbpatchфу, таки говнокод. это все отлично заворачивается в макро и превращается в Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. читабельность повышается в разы - причем и вторую колонку можно решительно сократитьвернёмся к теме топика Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. у тебя строчек кода больше. и читабельность хромает. вот смотрю я на твой код и начинаю туда-сюда прыгать глазами - может вон та хвунция выздвать ексепшин или нет, а что если, а что не если, а может ли write_to_log че-то бросить или нет. вот такой он ваш C++ (вернее весь ООП) - читаешь код, и никогда не можешь быть уверен, что там ото понаписано и как оно себя поведет. то ли дело C- если написано, что b = a + 1; то ты уверен, что там просто непроверяемое на переполнение сложение, а никак не вызов через перегруженный оператор форматирования диска C, с неожиданным бросанием необрабатываемой исключительной ситуации в виде zero divizor а вот только два дня назад думал - а не начать ли мне писать на C++ ... не, наверное не в этом году :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchegorychпропущено... вернёмся к теме топика Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. у тебя строчек кода больше. и читабельность хромает. вот смотрю я на твой код и начинаю туда-сюда прыгать глазами - может вон та хвунция выздвать ексепшин или нет, а что если, а что не если, а может ли write_to_log че-то бросить или нет. вот такой он ваш C++ (вернее весь ООП) - читаешь код, и никогда не можешь быть уверен, что там ото понаписано и как оно себя поведет. Зачем нужно туда-сюда глазами прыгать?! Мы рассматриваем одинаковый код, нигде там ничего лишнего смотреть не надо. Но вот в строчке: Код: plaintext 1. мне, например, совершенно непонятно сходу, прерывается ли в этом месте выполнение при ошибке, или оно продолжается, каков критерий ошибки и что происходит при ее возникновении. В то же время я четко понимаю, что если в одной из функций возникает исключение определенного типа (а они известны), процесс прерывается, и осуществляется переход к блоку обработки ошибки этого типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Addxdbpatchпропущено... у тебя строчек кода больше. и читабельность хромает. вот смотрю я на твой код и начинаю туда-сюда прыгать глазами - может вон та хвунция выздвать ексепшин или нет, а что если, а что не если, а может ли write_to_log че-то бросить или нет. вот такой он ваш C++ (вернее весь ООП) - читаешь код, и никогда не можешь быть уверен, что там ото понаписано и как оно себя поведет. Зачем нужно туда-сюда глазами прыгать?! Мы рассматриваем одинаковый код, нигде там ничего лишнего смотреть не надо. Но вот в строчке: Код: plaintext 1. мне, например, совершенно непонятно сходу, прерывается ли в этом месте выполнение при ошибке, или оно продолжается, каков критерий ошибки и что происходит при ее возникновении. В то же время я четко понимаю, что если в одной из функций возникает исключение определенного типа (а они известны), процесс прерывается, и осуществляется переход к блоку обработки ошибки этого типа. не надо юлить. если ты один раз понял принцип верификации кодов возврата макросом (проверяется все, что не успех, любой неуспех репортится, и дампится если все совсем плохо, выполненине процесса останавливается, ресурсы чистит менеджер процессов и операционка), то ты довольно быстро начинаешть привыкать к такому подходу - что у тебя или выполняется успешно вызов или вот тут падаем и дальше уже никуда не идем, третьего не дано а в случае исключений мне нужно каждый раз при чтении кода напрягаться - ходить смотреть в свой блок catch, а потом еще ходить смотреть кто меня вызывает, и там тоже смотреть, а что если (или вообще не смотреть - как это обычно и происходит). при этом я никогда не могу быть уверен, что я покрыл все возможные виды Exceptions и новая версия сторонней библиотеки не разорвет мне все в клочья на непойманной ситуации. т.е. область верификации расползается от одной строки кода "тут и сейчас" на неопределенное количество строк кода, которые реально никак не могут быть верифицированы. именно потому писать на C++ промышленно отказоустойчивый код в принципе не есть возможно - именно из-за этих неявных longjmp, к тому же непредсказуемых в новых версиях кстати, в MISRA эти все ваши set/longjmp ЯВНО запрещены. Возможно в MISRA C++ запрещены и исключения, не читал (ибо это бессмыслица полная, читать подобное). Но если в C++ запретить исключения, тогда у тебя автоматом отваливается даже STL, и какой тогда смысл в этом вашем C++ остается? Впрочем, это уже риторический вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 19:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devТам всё чётко - никаких неопределенностей из-за перегрузок операторов. прозрачно далеко не для всех систем команд, особенно RISC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 20:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchименно потому писать на C++ промышленно отказоустойчивый код в принципе не есть возможно - именно из-за этих неявных longjmp, к тому же непредсказуемых в новых версиях кстати, в MISRA эти все ваши set/longjmp ЯВНО запрещены. Возможно в MISRA C++ запрещены и исключения, не читал (ибо это бессмыслица полная, читать подобное) . Но если в C++ запретить исключения, тогда у тебя автоматом отваливается даже STL, и какой тогда смысл в этом вашем C++ остается? Бессмыслица читать MISRA, а чего вы тогда на него ссылаетесь, чтобы быть последовательным и логичным? Кстати, MISRA C++:2008 Guideline s - Pages 186 - 187: http://frey.notk.org/books/MISRA-Cpp-2008.pdf Exception handling — General Rule 15–0–1 (Document) Exceptions shall only be used for error handling. Rule 15–0–2 (Advisory) An exception object should not have pointer type. Rule 15–0–3 (Required) Control shall not be transferred into a try or catch block using a gotoor a switch statement. Throwing an exception Rule 15–1–1 (Required) The assignment-expression of a throw statement shall not itself cause an exception to be thrown. Rule 15–1–2 (Required) NULL shall not be thrown explicitly. Rule 15–1–3 (Required) An empty throw (throw;) shall only be used in the compound-statement of a catch handler. Handling an exception Rule 15–3–1 (Required) Exceptions shall be raised only after start-up and before termination of the program. Rule 15–3–2 (Advisory) There should be at least one exception handler to catch all otherwise unhandled exceptions Rule 15–3–3 (Required) Handlers of a function-try-block implementation of a class constructor or destructor shall not reference non-static members from this class or its bases. Rule 15–3–4 (Required) Each exception explicitly thrown in the code shall have a handler of a compatible type in all call paths that could lead to that point. Rule 15–3–5 (Required) A class type exception shall always be caught by reference.Rule 15–3–6 (Required) Where multiple handlers are provided in a single try-catch statement or function-try-block for a derived class and some or all of its bases, the handlers shall be ordered most-derived to base class. Rule 15–3–7 (Required) Where multiple handlers are provided in a single try-catch statement or function-try-block, any ellipsis (catch-all) handler shall occur last. Exception specifications Rule 15–4–1 (Required) If a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids. Exception handling — Special functions Rule 15–5–1 (Required) A class destructor shall not exit with an exception. Rule 15–5–2 (Required) Where a function’s declaration includes an exception-specification, the function shall only be capable of throwing exceptions of the indicated type(s). Rule 15–5–3 (Required) The terminate() function shall not be called implicitly. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 20:51 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася Уткинdbpatchименно потому писать на C++ промышленно отказоустойчивый код в принципе не есть возможно - именно из-за этих неявных longjmp, к тому же непредсказуемых в новых версиях кстати, в MISRA эти все ваши set/longjmp ЯВНО запрещены. Возможно в MISRA C++ запрещены и исключения, не читал (ибо это бессмыслица полная, читать подобное) . Но если в C++ запретить исключения, тогда у тебя автоматом отваливается даже STL, и какой тогда смысл в этом вашем C++ остается? Бессмыслица читать MISRA, а чего вы тогда на него ссылаетесь, чтобы быть последовательным и логичным? Кстати, MISRA C++:2008 Guideline s - Pages 186 - 187: http://frey.notk.org/books/MISRA-Cpp-2008.pdf Exception handling — General Rule 15–0–1 (Document) Exceptions shall only be used for error handling. Rule 15–0–2 (Advisory) An exception object should not have pointer type. Rule 15–0–3 (Required) Control shall not be transferred into a try or catch block using a gotoor a switch statement. Throwing an exception Rule 15–1–1 (Required) The assignment-expression of a throw statement shall not itself cause an exception to be thrown. Rule 15–1–2 (Required) NULL shall not be thrown explicitly. Rule 15–1–3 (Required) An empty throw (throw;) shall only be used in the compound-statement of a catch handler. Handling an exception Rule 15–3–1 (Required) Exceptions shall be raised only after start-up and before termination of the program. Rule 15–3–2 (Advisory) There should be at least one exception handler to catch all otherwise unhandled exceptions Rule 15–3–3 (Required) Handlers of a function-try-block implementation of a class constructor or destructor shall not reference non-static members from this class or its bases. Rule 15–3–4 (Required) Each exception explicitly thrown in the code shall have a handler of a compatible type in all call paths that could lead to that point. Rule 15–3–5 (Required) A class type exception shall always be caught by reference.Rule 15–3–6 (Required) Where multiple handlers are provided in a single try-catch statement or function-try-block for a derived class and some or all of its bases, the handlers shall be ordered most-derived to base class. Rule 15–3–7 (Required) Where multiple handlers are provided in a single try-catch statement or function-try-block, any ellipsis (catch-all) handler shall occur last. Exception specifications Rule 15–4–1 (Required) If a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids. Exception handling — Special functions Rule 15–5–1 (Required) A class destructor shall not exit with an exception. Rule 15–5–2 (Required) Where a function’s declaration includes an exception-specification, the function shall only be capable of throwing exceptions of the indicated type(s). Rule 15–5–3 (Required) The terminate() function shall not be called implicitly. MISRA есть для C, это тру документ есть и для C++, совсем другой документ, и я сказал - что вот его я его принципиально не читал, ибо это бессмысленно, понятие надежный софт и C++ не совместимо просто по причине фундаментальных компромисов и ограничений, заложенных в язык и среду выполнения (эти ваши new/delete/STL и иже). в той-же MISRA C довольно четко сказано, что вся память должна быть (статически) аллоцирована при старте и при runtime никакие malloc/free не допускаются. а эти ваши STL контейнеры и строки реально работают исключительно на динамической куче, и? т.е. MISRA C++ уже на старте несовместима с принципами, заложенными в MISRA C, и ее можно просто даже не пытаться читать. они конечно пытаются что-то сказать в разделе 6.18.4, но это уже просто несерьезно, какой такой это C++ без new/delete? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 21:07 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchне надо юлить. если ты один раз понял принцип верификации кодов возврата макросом (проверяется все, что не успех, любой неуспех репортится, и дампится если все совсем плохо, выполненине процесса останавливается, ресурсы чистит менеджер процессов и операционка), то ты довольно быстро начинаешть привыкать к такому подходу - что у тебя или выполняется успешно вызов или вот тут падаем и дальше уже никуда не идем, третьего не дано Ну если программе на любой чих позволяется падать, то это серьезное ограничение на решаемый круг задач. Как минимум сразу отпадают интерактивные задачи (GUI и т.п.). А исключения позволяют выбрать на каком уровне абстракции происходит принятие решения о том, насколько важна произошедшая ошибка и что с ней делать. Каждый раз когда в этом форуме начинался срач исключения против кодов, противники исключений приводили примеры где буквально заменялась проверка кодов обработкой исключений в каждой строчке. Естественно в реальном коде никто так не делает. Даже в той же функции редко обрабатываются исключения. Но я верю что именно так многие хейтеры исключений и добивались у себя лапшеобразного кода )) Другое наблюдение: против исключений высказываются в основном С-шники, которые всю жизни писали на С, другими словами ни в одном реальном проекте с использованием исключений не участвовали, или участвовали на уровне джуниора. И вот эти люди считают что они имеют достаточно опыта чтобы понять что исключения не только не нужны, но и вредны )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 21:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchВася Уткинпропущено... Бессмыслица читать MISRA, а чего вы тогда на него ссылаетесь, чтобы быть последовательным и логичным? Кстати, MISRA C++:2008 Guideline s - Pages 186 - 187: пропущено... MISRA есть для C, это тру документ есть и для C++, совсем другой документ, и я сказал - что вот его я его принципиально не читал, ибо это бессмысленно, понятие надежный софт и C++ не совместимо просто по причине фундаментальных компромисов и ограничений, заложенных в язык и среду выполнения (эти ваши new/delete/STL и иже). в той-же MISRA C довольно четко сказано, что вся память должна быть (статически) аллоцирована при старте и при runtime никакие malloc/free не допускаются. а эти ваши STL контейнеры и строки реально работают исключительно на динамической куче, и? т.е. MISRA C++ уже на старте несовместима с принципами, заложенными в MISRA C, и ее можно просто даже не пытаться читать. они конечно пытаются что-то сказать в разделе 6.18.4, но это уже просто несерьезно, какой такой это C++ без new/delete? То что вы говорите - это ваша теория. "Rocket science" считается одной из самых требовательных к надежности отраслей. На практике - одна из топовых аэрокосмических компаний SpaceX использует только C++ в ракете и системах обслуживающих полет . https://www.reddit.com/r/IAmA/comments/1853ap/we_are_spacex_software_engineers_we_launch/c8bpr00/ The rocket is all C++ The rocket and spacecraft are all C++. On the ground, we use National Instruments LabVIEW extensively. И уже в 2016 году она сделала невозможное для других компаний: https://www.commerce.senate.gov/public/_cache/files/8a62dd3f-ead6-42ff-8ac8-0823a346b926/7F1C5970AE952E354D32C19DDC9DDCCB.mr.-tim-hughes-testimony.pdf В полёте и системах, обслуживающих полёт, используется С++ и Linux. В менее критичных системах широко используется Python и другие языки. Ну у меня STL работает без new/delete, на моем кастомном аллокаторе, который использует преалоцированную память. Мало того, даже там, где нет необходимости в MISRA, well-formed C++ никогда явно не использует new/delete, а использует только контейнеры и смарт-поинтеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 21:40 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch, >>у тебя строчек кода больше. и читабельность хромает. однообразные SQL_CALL(SQL... технично замыливают содержательную часть, зато выглядят красиво, да. Выравнивание второго столбца - вообще отличный пример прокрастинации для перфекционистов, бессмысленно потерянное время на расстановку правильного количества пробелов. Но твой вариант, конечно, лучше выглядит, чем исходный от WhiteOwl >>вот смотрю я на твой код и начинаю туда-сюда прыгать глазами ... почитай вот , очень полезная книжка, развлекательная, в целом) >>то ли дело C- если написано, что b = a + 1; а если a и b - структуры, то так и написать нельзя, удобно чё)) >>а вот только два дня назад думал - а не начать ли мне писать на C++ ... не, наверное не в этом году :) да и в следующем не надо, дождить какой-нибудь круглой даты ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 22:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася УткинВ полёте и системах, обслуживающих полёт, используется С++ и Linux. В менее критичных системах широко используется Python и другие языки. Это все слухи. Использовать для управляющей системы Linux, который ни разу не real time - как минимум странно, при том, что есть 100500 реализаций RTOS, в т.ч. очень хороших. В остальном - что именно там используется и как пишется - это еще тот вопрос, без исходников этот спор беспредметен С with Objects (С++ без STL/Boost) это совсем не современный C++ Вася УткинНу у меня STL работает без new/delete, на моем кастомном аллокаторе, который использует преалоцированную память. Мало того, даже там, где нет необходимости в MISRA, well-formed C++ никогда явно не использует new/delete, а использует только контейнеры и смарт-поинтеры. в том то и дело, что понятие well-formed это некие условные соглашения, которые ты даже сам не всегда готов выполнять - нет нет и наваляешь говнокода побыстрому. в этом плане для меня выбор Pure C был как раз этим и продиктован - даже если мне захочется вывалить нечто, то сама среда мне не позволит, плюс статический анализатор еще по голове надает. а перспектива делать парсер еще и для плюсов, чтоб кастомные правила чекать... э нет, пожалуй как нибудь потом. хотя да, стоит признать - современный C слишком убог синтаксически, иногда просто руки опускаются (к примеру вкрутить checked integer arithmetic - вместо +-/* видеть ADD(x, y) - это не всякая психика выдержит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 23:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskydbpatchне надо юлить. если ты один раз понял принцип верификации кодов возврата макросом (проверяется все, что не успех, любой неуспех репортится, и дампится если все совсем плохо, выполненине процесса останавливается, ресурсы чистит менеджер процессов и операционка), то ты довольно быстро начинаешть привыкать к такому подходу - что у тебя или выполняется успешно вызов или вот тут падаем и дальше уже никуда не идем, третьего не дано Ну если программе на любой чих позволяется падать, то это серьезное ограничение на решаемый круг задач. Как минимум сразу отпадают интерактивные задачи (GUI и т.п.). Да, именно так. Но писать GUI на С/C++ - это надо иметь очень серьезные на то причины ("не знаю C#/Java/Delphi/HTML/JavaScript" к ним не относится). Назвать QT/GTK+/wxWidgets универсальным UI решением я бы вот не решился, это ни разу не мейнстрим Anatoly MoskovskyА исключения позволяют выбрать на каком уровне абстракции происходит принятие решения о том, насколько важна произошедшая ошибка и что с ней делать. Каждый раз когда в этом форуме начинался срач исключения против кодов, противники исключений приводили примеры где буквально заменялась проверка кодов обработкой исключений в каждой строчке. Естественно в реальном коде никто так не делает. Даже в той же функции редко обрабатываются исключения. Но я верю что именно так многие хейтеры исключений и добивались у себя лапшеобразного кода )) Еще раз - ясен пончик, что если ты себя затянул в зависимости проекта всякую ерунду, написанную с применением исключений - то ты уже вынужден играть по этим правилам, без исключений (каламбур). Наверное глупо купить BMW X5 и пытаться заливать в него ракетное топливо. Чревато - может и проедет пару километров, но потом или капремонт, или просто взорвется. Anatoly MoskovskyДругое наблюдение: против исключений высказываются в основном С-шники, которые всю жизни писали на С, другими словами ни в одном реальном проекте с использованием исключений не участвовали, или участвовали на уровне джуниора. И вот эти люди считают что они имеют достаточно опыта чтобы понять что исключения не только не нужны, но и вредны )) Вообще мимо. Понимание того, что исключения и надежный код суть не совместимые понятия довольно быстро приходит, если тебе приходится писать системные службы - роботов, которые должны отказоустойчиво и без ежедневной перезагрузки системы работать месяцами. Здорово прочищает мозги. И да, да, да, там live-to-die и process monitor, категорический no-threads и прочие весьма серьезные ограничения (копаем архитектуру Oracle RDBMS), но тем не менее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2017, 23:44 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchПонимание того, что исключения и надежный код суть не совместимые понятия довольно быстро приходит, если тебе приходится писать системные службы - роботов, которые должны отказоустойчиво и без ежедневной перезагрузки системы работать месяцами. Обоснуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 00:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchВася УткинВ полёте и системах, обслуживающих полёт, используется С++ и Linux. В менее критичных системах широко используется Python и другие языки. Это все слухи. Использовать для управляющей системы Linux, который ни разу не real time - как минимум странно, при том, что есть 100500 реализаций RTOS, в т.ч. очень хороших. в том то и дело, что понятие well-formed это некие условные соглашения, которые ты даже сам не всегда готов выполнять - нет нет и наваляешь говнокода побыстрому. в этом плане для меня выбор Pure C был как раз этим и продиктован - даже если мне захочется вывалить нечто, то сама среда мне не позволит, плюс статический анализатор еще по голове надает. Если ты предлагаешь оценивать качество кода по вероятности нет-нет и написать new/delete или malloc/calloc/free, то ты живешь прям в яме с говнокодом А учитывая, что твой выбор этим и был продиктован, то это уже фетишь. Ну и естественно в Space X все врут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 00:39 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
egorychвернёмся к теме топикаДа, в данном случае перевести на исключения было просто. А вот другой кусок из того-же исходника: Код: 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. Обрати внимание что все ODBC вызовы могут возвращать два "хороших" сообщения SQL_SUCCESS и SQL_SUCCESS_WITH_INFO (ну и множество "нехороших" естественно). Как ты собираешься сделать это на исключениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 00:47 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiКстати, непонятно написано. По логике работы с ODBC, если какой-то из важных вызовов завершился неудачно, в дальнейших вызовах смысла нет. А в приведенном коде первое впечатление, что выполняется вывод ошибки и погнали дальше вызывать. А если print_odbc_error вызывает полный останов, то имя лучше другое придумать. Да, у данной функции заголовок такой: Код: plaintext 1. Соответственно если второй параметр FALSE, то ошибка печатается, но выполнение не прерывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 00:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemargldbpatchПонимание того, что исключения и надежный код суть не совместимые понятия довольно быстро приходит, если тебе приходится писать системные службы - роботов, которые должны отказоустойчиво и без ежедневной перезагрузки системы работать месяцами. Обоснуй в случае исключений это вопрос формальной верификации кода на предмет неожиданного поведения. разновидность контрактного программирования.. в случае механизма исключений ты априори не знаешь, какая хрень выстрелит в новой версии сторонней библиотеки или в следующей версии твоего-же говнокода. т.е. лапшекод на исключениях порождает бесконечно сложный граф возможных путей исполнния (code-flow), который верифицировать техническими средствами просто невозможно. особенно радует то, что в самих блоках обработки исключений могут возникать исключения - особо клинический случай - исключения в методах-функциях логгирования (когда даже записать о проблеме посмертный мессадж не получится). в случае же кодов возвратов есть хоть какая-то гарантия соблюдения контрактов, и то - вот только в прошлом году пришлось пободаться и писать обертку, страшно сказать, над write() - эта хрень в новых версиях линукса (и только там) совершенно неожиданно на блокирующихся сокетах возвращала EWOULDBLOCK и нулевой результат, и это оказывается было очень даже нормальное поведение (хоть и недокументированное) пришлось написать workaround (декоратор в "новомодных" понятиях). и таких случаев можно наприводить массу. подобные неверифицируемые хрени приводят к "хрупким" решениям и деградациям проекта. отсуствие сколько-то заметных и устойчивых в runtime демонов, написанных на C++ (сравнимых с apache/nginx/haproxy) - только подтверждает эти наблюдения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 00:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchвот смотрю я на твой код и начинаю туда-сюда прыгать глазами - может вон та хвунция выздвать ексепшин или нет, а что если, а что не если, а может ли write_to_log че-то бросить или нет.Когда пишешь с исключениями - автоматически думаешь: "это функция, значит она может бросить исключение". Никаких вопросов "может или не может бросить" просто не возникает. Другое дело что при этом можно забыть сделать перехват... Тут стоить поклониться в сторону Java и посетовать что в С++ нету требования явно пробрасывать исключения на уровень выше. Это серьезно помогает не терять беглые исключения. С другой стороны, если какая-то функция может теоретически бросить исключение, но ты знаешь что в этом конкретном случае исключения быть не может (или его просто можно проигнорировать безопасно для алгоритма), то в Java это "игнорирование исключения" опять таки надо явно прописывать, а в С++ просто "забываешь" про него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 00:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owl, Твой код нагоняет древнерусскую тоску (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася Уткинdbpatchпропущено... Это все слухи. Использовать для управляющей системы Linux, который ни разу не real time - как минимум странно, при том, что есть 100500 реализаций RTOS, в т.ч. очень хороших. в том то и дело, что понятие well-formed это некие условные соглашения, которые ты даже сам не всегда готов выполнять - нет нет и наваляешь говнокода побыстрому. в этом плане для меня выбор Pure C был как раз этим и продиктован - даже если мне захочется вывалить нечто, то сама среда мне не позволит, плюс статический анализатор еще по голове надает. Если ты предлагаешь оценивать качество кода по вероятности нет-нет и написать new/delete или malloc/calloc/free , то ты живешь прям в яме с говнокодом А учитывая, что твой выбор этим и был продиктован, то это уже фетишь. Ну и естественно в Space X все врут :) чувак, у тебя явные проблемы с формальной логикой. если я не пишу явные формальные правила против говнокода, то я живу в яме с говнокодом? атас, приплыли. если у меня так все базнадежно, то зачем я их пишу? чтоб увидеть 100500 сообщений в статиканализаторе и просто подавить этот warning? не писать new/delete - я говорил вовсе не об этом, это довольно простое правило, которое можно вписать в статический анализатор и он тебя будет каждый раз тыкать в это теплое мягкое. в современном C++ есть штуки куда более страшные, чем new/delete, которые так и тянется рука заюзать, ибо очень дешево же - и случаи бездумных объявлений векторов в куче вместо статических массивов на стеке - это лишь самая вершина айсберга. самая мякотка в перегруженных операторах, вот там полный жескач - их и человек порой не всегда раскурит, а научить статик аналайзер понимать, что это оператор не сложения, а вызов форматирования диска C - это никакие современные AI не могут а написать статик аналайзер на ваши просто адские темплейты с их SFINAE ? да ну... в сад, сад, сад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owldbpatchвот смотрю я на твой код и начинаю туда-сюда прыгать глазами - может вон та хвунция выздвать ексепшин или нет, а что если, а что не если, а может ли write_to_log че-то бросить или нет.Когда пишешь с исключениями - автоматически думаешь: "это функция, значит она может бросить исключение". Никаких вопросов "может или не может бросить" просто не возникает. И что? каждый вызов метода оборачивать в свой собственный блок try {}? да ну да, щас, кто так делает? и да - никто там ни о чем не думает, не надо врать самому себе. все тестируют исключительно "беспроблемное" поведение, никто сейчас не пытается задуматься даже на такие случаи, как out-of-memory или out-of-disk space, зачем? и ладно бы - у всех бы стояли обертки над malloc()/free()/write(), которые бы не бросали в юзера неожиданный Out exception/errno, а просто бы переводили приложение в suspend state пока админ-юзер не прочистит всякое, так нет - почти все просто аварийно и непредсказуемо - и нетестировано (!) фейлятся, с корраптом и потерей данных и прочим подобным разным - никто тестов на аварийное завершение ведь не делает, а зачем? так что не надо ляля, думают они. щазззз... White OwlДругое дело что при этом можно забыть сделать перехват... Тут стоить поклониться в сторону Java и посетовать что в С++ нету требования явно пробрасывать исключения на уровень выше. Ты устарел, эту ерунду уже выбросили из Java, ибо она так там и не заработала. White OwlЭто серьезно помогает не терять беглые исключения. С другой стороны, если какая-то функция может теоретически бросить исключение, но ты знаешь что в этом конкретном случае исключения быть не может (или его просто можно проигнорировать безопасно для алгоритма), то в Java это "игнорирование исключения" опять таки надо явно прописывать, а в С++ просто "забываешь" про него. просто забываешь - может стоит выходу в штопор, перегреву или сваливанию в кювет. в сад. язык, который изначально стимулирует писать только неверифицируемый код (говнокод), и - это какое-то просто издевательство над человечеством ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch, Не вижу разницы между возвратом набора результкодов и выбросом фиксированного набора типов исключений. И то и то надо обрабатывать. Вот только в С++ нет явно прописанного fn() throws AA, BB, XUXU или nothrows - это появилось в более поздних языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Итого, это на верифицирование и надежность не влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargldbpatch, Не вижу разницы между возвратом набора результкодов и выбросом фиксированного набора типов исключений. И то и то надо обрабатывать. См. выше пример вызова макроса VERIFY_OS() - вся обработка сидит вообще в одной строке и только там. для более кустистых случаев - в случае кода возврата обработка просто гарантированно не выходит за пределы вызываемой функции (если конечно правильно писать обработчики), а необработанный ексепшин начинает лететь наверх, и куда и как он там прилетит - а вот полный ХЗ - и что хуже - обычно никто не делает даже простейшее тестирование покрытием кода. говоря проще - меня статический анализатор ткнет носом в то, что я не включил вот такое-то новое значение кода возврата в блоки switch(), иди дописывай, а в случае exception он не имеет такой информации - может это не мой косяк а такой вот хитрый план - бросать это недоразумение наверх, дескать пусть юзер его сам почитает. так понятнее? привинтить статик аналайзер на исключения не есть возможно в принципе SiemarglВот только в С++ нет явно прописанного fn() throws AA, BB, XUXU или nothrows - это появилось в более поздних языках. эту штуку выпилили в Java (судя по постам на хабре), ибо неработоспособно это все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglИтого, это на верифицирование и надежность не влияет. походу у тебя под вечер мысли туго вертятся, раз такие выводы делаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 01:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlКак ты собираешься сделать это на исключениях? если прям совсем в лоб, то как-то так ( тупой способ, я знаю. тут дизайн всего решения неплохо было бы поменять, конечно ) : Код: 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. я надеюсь, ты понимаешь, что исключения не исключают кодов возврата? ( о, я тоже умею каламбурить ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 02:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owlв Java это "игнорирование исключения" опять таки надо явно прописывать, а в С++ просто "забываешь" про него.Вот это очень полезная штука в яве. Я не осилил перечитывать три страницы, но лучше, для структуры кода и читаемости, выкидывать исключения на одном уровне, а ловить на том же или следующем, и если надо, прокидывать (своё, новое) дальше. И в заголовке и теле функции писать, что она (не) выкидывает. С++ не обязует это делать, но позволяет. Тогда не надо будет лазить по всей иерархии классов и искать, какая зараза его бросила. Иначе исключениями код можно запутать гораздо хитрее, чем этими всеми вашими goto-ами. По сути, это те же goto, только в одну сторону, зато скакануть можно как угодно далеко. А СОМ - это просто был пример полиморфизма, который в свою очередь - кусок ООП :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 05:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMb..но лучше, для структуры кода и читаемости, выкидывать исключения на одном уровне, а ловить на том же или следующем, и если надо, прокидывать (своё, новое) дальше. И в заголовке и теле функции писать, что она (не) выкидывает. С++ не обязует это делать, но позволяет. Тогда не надо будет лазить по всей иерархии классов и искать, какая зараза его бросила. ..Именно так. http://en.cppreference.com/w/cpp/language/noexcept http://en.cppreference.com/w/cpp/language/noexcept_spec http://en.cppreference.com/w/cpp/language/except_spec было Статические анализаторы тоже что то умеют контролировать в плане исключений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 09:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
если бы ещё ошибок не было в приведённых примерах с тучей макросов и проверок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 09:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlКогда пишешь с исключениями - автоматически думаешь: "это функция, значит она может бросить исключение". Никаких вопросов "может или не может бросить" просто не возникает.Да. Из-за этого иногда возникает необходимость писать try...finally. White OwlДругое дело что при этом можно забыть сделать перехват...Ну в прикладном коде иногда перехватываешь исключения, про которые точно знаешь. Остальные уходят "наверх". И где-то "совсем сверху", в системном коде, есть место, в котором перехватываются ВСЕ исключения, с целью логирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 10:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch а в случае исключений мне нужно каждый раз при чтении кода напрягаться - ходить смотреть в свой блок catch, а потом еще ходить смотреть кто меня вызывает, и там тоже смотреть, а что если (или вообще не смотреть - как это обычно и происходит). при этом я никогда не могу быть уверен, что я покрыл все возможные виды Exceptions и новая версия сторонней библиотеки не разорвет мне все в клочья на непойманной ситуации. Если ты знаешь, какие исключения вызываются, и как их нужно обрабатывать, то не нужно бегать туда-сюда. Есть стандартный подход - написал код, обработал исключения. Идея с новой версией библиотеки, которая "разорвет в клочья" очень странная. Ты обрабатываешь все исключения, и неизвестный тип/код исключения просто говорит о том, что операция прошла с ошибкой. Аналогично коду возврата - неизвестный код - неизвестная ошибка. dbpatchт.е. область верификации расползается от одной строки кода "тут и сейчас" на неопределенное количество строк кода, которые реально никак не могут быть верифицированы. Как это не могут? try ... код ... catch. Попадание в блок catch - неуспешное завершение. То же само, что и с кодами, только там нужно каждую строчку обернуть в макрос, который делает то же самое, что и блок catch. Если важна для логики программы причина ошибки - обрабатывай типы и коды ошибок, если нет (что обычно о требуется) - обрабатывай единообразно. dbpatchименно потому писать на C++ промышленно отказоустойчивый код в принципе не есть возможно ... но вполне этим занимаются. Просто нужно понимать, где исключения можно использовать, а где нет. В коде, где идут подряд операторы, проверяющие код, пишущие в лог, и осуществляющие возврат - без проблем. Там где нужно обработать код по схеме конечных автоматов - не подходят, впрочем, как и подобные макросы. В общем - Вы не любите кошек? Вы просто не умеете их готовить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 10:04 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
AdxКак это не могут? try ... код ... catch. Попадание в блок catch - неуспешное завершение. То же само, что и с кодами, только там нужно каждую строчку обернуть в макрос, который делает то же самое, что и блок catch. Если важна для логики программы причина ошибки - обрабатывай типы и коды ошибок, если нет (что обычно о требуется) - обрабатывай единообразно. Какие-то вы право странные, прямо. Если в случае VERIFY_OS(fopen()) - я в этом макросе имею строго определенный и документированный блок кодов возврата какой-то строго одной системной функции, и не ожидаю там всякой левой хрени, которая не относится к fopen(), то в случае исключительной ситуации на типовой ООП хрени, особенно на чуть более высоких уровнях - я вообще не уверен в том, кто и что мне может прислать, особенно в новых редакциях кода или библиотек. Это может сделать уже к примеру write() или какой блок логгирования, при том, что я изначально этого эффекта там не ожидал ни разу. О какой блин уверенности тут может идти речь? Мне нужно гарантированно не выпускать исключительные ситуации дальше той функции, где они возникают, но в случае типового ООП подхода (пробрасывай наверх все то, что не смог сам) - это уже не работает, так просто не принято делать, принято все необработанное бросать вышестоящим товарищам, авось они там разберутся. И это и есть концептуальный "сдвиг по фазе". Это все равно что сантехник, который не смог закрутить кран - сбрасывал бы свои проблемы в виде аварийного потока воды на электрика, просто потому что электрик позвал этого сантехника выключить воду. Adxdbpatchименно потому писать на C++ промышленно отказоустойчивый код в принципе не есть возможно ... но вполне этим занимаются. Просто нужно понимать, где исключения можно использовать, а где нет. В коде, где идут подряд операторы, проверяющие код, пишущие в лог, и осуществляющие возврат - без проблем. Там где нужно обработать код по схеме конечных автоматов - не подходят, впрочем, как и подобные макросы. В общем - Вы не любите кошек? Вы просто не умеете их готовить! Ой, я вас умоляю. Нет проблем на написании в лог. Вы попробуйте там создать проблему, нехватку места на диске или памяти, и попробуйте посмотреть к чему это в итоге приведет. И что значит не умеете их готовить? Их вообще никто не умеет готовить, ибо сама концепция исключительных ситуаций - она изначально концептуально неверна. Идея делать longjmp в неопределенные места при необработанных кодах возврата у любого C программиста вызовет лишь покручивание пальцем у виска, но для ООП программиста это полный нормуль, и никто не задумывается, что это же просто невероятная глупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 10:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Алексей КWhite OwlДругое дело что при этом можно забыть сделать перехват...Ну в прикладном коде иногда перехватываешь исключения, про которые точно знаешь. Остальные уходят "наверх". И где-то "совсем сверху", в системном коде, есть место, в котором перехватываются ВСЕ исключения, с целью логирования. в том-то и проблема, что возникшая исключительная (аварийная) ситуация, прямо как сошедший с рельсов поезд - начинает мчаться по блокам кода, дескать давайте, сделайте там очистки ресурсов, закрытие файлов и что там еще нужно сделать. при том что нет никакой гарантии, что вообще что-то сейчас удастся исправить, и что это "исправление" хоть как-то когда-то тестировали. хотя наиболее правильным подходом было бы - обнаружил необрабатываемую ситуацию - ничего не пытайся исправлять, выдай стектрейс, попробуй залогироваться и просто помри прям тут и сейчас всем процессом, даже не пытайся что-то там закрывать и флашить. но подобное сейчас архитектурно невозможно - пока не пройдешься по всему стеку вызовов обработчиков наверх - не поймешь, обработают тебя или нет. и это и есть фундаментальная концептуальная дыра. дырища. в головах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 10:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchхотя наиболее правильным подходом было бы - обнаружил необрабатываемую ситуацию - ничего не пытайся исправлять, выдай стектрейс, попробуй залогироватьсяНу да. dbpatchи просто помри прям тут и сейчас всем процессомТак умирать сразу, или сначала логировать? :-) dbpatchдаже не пытайся что-то там закрывать и флашитьtry...finally можно и не писать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 10:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Алексей К, finally нет в С++. Это так, к слову dbpatch, Ну так никто тебе не мешает залогироваться и свалиться в первом же catch. Проблема в головах, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 11:40 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch ..., но в случае типового ООП подхода (пробрасывай наверх все то, что не смог сам) - это уже не работает, так просто не принято делать, принято все необработанное бросать вышестоящим товарищам, авось они там разберутся. ... Кто Вас заставляет так делать? Перехватите и обработайте все и верните true/false. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 11:54 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вот по поводу STL в RT-системах у меня сомнения есть. Существуют ли метрики, что а) конкретный метод STL исполняется "не более чем", т.е имеет четко прогнозируемый по исходным данным верхний предел времени б) конкретный метод STL потребляет "не более чем" кол-ва стека и динамической памяти ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_here ...большая универсальность (C понимают и некоторые другие языки). Как интересно... Какие такие языки понимают С? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglАлексей К, finally нет в С++. Это так, к словуНу finally вроде как можно имитировать макросами, плюс ещё деструкторы вызываются при выходе из области видимости переменных, не суть. Главное, что никто не заставляет в обязательном порядке этим пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchЧеловек, который считает, что вправе других прямо и неаргументированног называть идиотами (а вот просто так захотелось!) Я тебя не идиотом обозвал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlИзопропилпропущено... то ли дело проверка кодов возврата в каждой строке - никакой лапши Никакой. В самом коде достаточно проверить на "ошибка или нету", а потом перепрыгнуть на более вдумчивый разбор ошибки. Зато после каждой строки уже заранее известно в какой именно строке ошибка произошла. Ну вот примерно так я и пишу: Ну, пиши, пиши. Одно только спрошу: на ноль как делить будем, какой код возврата проверять будем, или может быть аргументы проверять будем ? Как вообще ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch фу, таки говнокод. это все отлично заворачивается в макро и превращается в Код: plaintext 1. 2. 3. читабельность повышается в разы - причем и вторую колонку можно решительно сократить А ты не безнадёжен... Теперь подумай, и ответь себе на вопрос: чем твои макросы лучше исключений. Чем исключения лучше -- я тебе потом расскажу, ну, или прочитай где-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owlа потом перепрыгнуть на более вдумчивый разбор ошибки. каким способом перепрыгивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyДругое наблюдение: против исключений высказываются в основном С-шники, которые всю жизни писали на С, другими словами ни в одном реальном проекте с использованием исключений не участвовали, или участвовали на уровне джуниора. И вот эти люди считают что они имеют достаточно опыта чтобы понять что исключения не только не нужны, но и вредны )) Ну вот именно. Неосилянты как раз и против. Т.е. они против все. Кое-какие осилянты тоже против, типа WO (я не думаю, что он неосилил EH за столько лет стажа в специальности). Я ещё раз повторяю, ислючения были в IT ВСЕГДА, с момента ЗАРОЖДЕНИЯ индустрии. Это те же деления на ноль, потери значимости, обращения по несуществующему или нулевому адресу и т.д. Раньше это называлось системные прерывания. Иногда ещё как-то по-другому, не важно. Теперь просто таких случаев стало больше, появилась возможность ими управлять, появилась возможность их обрабатывать, и они стали определяться не на низшем уровне абстракции, а на более высоких. Суть от этого не меняется -- мы определяем операции, которые в каких-то случаях невозможно выполнить, и продолжать процесс вычисления после них невозможно. Так что в принципе даже обсуждать тут нечего. Исключения были, есть и будут, и вредны они для отрасли или полезны, были ли они ошибкой или не были, -- спорить бессмысленно. Они были, есть и будут, и с ними нужно уметь жить и работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 12:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owl Тут стоить поклониться в сторону Java и посетовать что в С++ нету требования явно пробрасывать исключения на уровень выше. Это серьезно помогает не терять беглые исключения. С другой стороны, если какая-то функция может теоретически бросить исключение, но ты знаешь что в этом конкретном случае исключения быть не может (или его просто можно проигнорировать безопасно для алгоритма), то в Java это "игнорирование исключения" опять таки надо явно прописывать, а в С++ просто "забываешь" про него. Я хочу напомнить, что в Java исключения делятся на два класса -- контролируемые исключения и исключения времени выполнения (неконтролируемые) (может использую немного другие термины), и только контролируемые исключения программист ОБЯЗАН поймать или объявить выбрасываемым. Неконтролируемые исключения также как и в С++ не контролируются, и их нужно обрабатывать и перехватывать. В С++ же просто все исключения неконтролируемые, не обязательны к перехвату или описанию, тут более свободная форма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 13:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchДа, именно так. Но писать GUI на С/C++ - это надо иметь очень серьезные на то причины ("не знаю C#/Java/Delphi/HTML/JavaScript" к ним не относится). Да мы поняли уже. То нельзя, это вредно, на все нужны причины. Да, есть такие люди которые предпочитают ставить себя раком в рамки и писать на С. А есть просто С++, где можно делать все то же самое что и в С, но рамок нет, и ты делаешь такой дизайн приложения который диктуется предметной областью, а не ограничениями синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 14:10 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА есть просто С++, где можно делать все то же самое что и в С, но рамок нет, и ты делаешь такой дизайн приложения который диктуется предметной областью, а не ограничениями синтаксиса. Да все можно, кто спорит? Можно даже web серверы писать на bash, почему и нет? Жизнь она у тебя одна, и ты волен распоряжаться ей как тебе самому угодно. Просто в определенный момент ты доходишь до того момента, когда быть конформистом "будь как все, не спорь, не выделывайся, просто закрывай таски в джире и улыбайся на скрам-стандапе, за тебя уже подумали" тебе откровенно надоедает, и хочется сделать правильно, грамотно и хорошо. А копнув практически в любое фундаментальное место современного IT (даже не в наслоения прикладного кода сверху) - ты видишь, что там лежат кучи, которые там навалены абы как просто по историческим причинам поиска компромисов, и кучи эти не только выглядят не очень, но и работают откровенно плохо. Даже простой пример - типовой PHP веб сервер жужжит ну 50, ну 100 запросов в секунду, хотя какой-то непонятный GWAN может 800к запросов - уже заставляет задуматься, а чем объясняется разница в три порядка, и почему так? И почему не взлетает GWAN в массах в т.ч.? А в остальном ты прав. Предметная область диктует дизайн, блаблабла - это все выглядит привлектельно когда тебе лет так 20 и ты толком ничего не умеешь, но потом это просто надоедает и хочется сотворить что-то действительно значимое. Просто ради фана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 14:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchДаже простой пример - типовой PHP веб сервер жужжит ну 50, ну 100 запросов в секунду, хотя какой-то непонятный GWAN может 800к запросов http://gwan.com/download › Windows Sep 9 2009 G-WAN v1.0.4 – Discontinued. Linux was found to be much faster.И вот так у вас всё - сначала вы строите самих себя, а потом - всех окружающих. Может, всё-таки, надо быть аккуратнее с категоричностью и кванторами всеобщности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 15:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovdbpatchДаже простой пример - типовой PHP веб сервер жужжит ну 50, ну 100 запросов в секунду, хотя какой-то непонятный GWAN может 800к запросов http://gwan.com/download › Windows Sep 9 2009 G-WAN v1.0.4 – Discontinued. Linux was found to be much faster.И вот так у вас всё - сначала вы строите самих себя, а потом - всех окружающих. Может, всё-таки, надо быть аккуратнее с категоричностью и кванторами всеобщности? честно говоря не понял, о чем ты сейчас? автор GWAN отказался от Windows в пользу Linux, и? там не сказано, что проект закрыт вообще. а так - мне он был интересен только тем, что он смог добиться каких-то невероятных rps (которые подтвердились на его бинариках). т.е. просто фактом того, что такое технически возможно. в остальном это closed-source проект, которым занимается похоже только один человек (могу ошибаться), без передачи исходников в public domain переспектив у этого всего нет по определению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 15:55 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
egorychWhite OwlКак ты собираешься сделать это на исключениях? если прям совсем в лоб, то как-то так ( тупой способ, я знаю. тут дизайн всего решения неплохо было бы поменять, конечно ) :Ну так поменяй. Ты же не забыл итоговую цель? Показать что ту-же самую задачу с исключениями решать проще, элегантнее, короче, и тп чем с кодами возврата. Пока это не было продемонстрировано. Я показал кусок реального кода решающего простую задачу. Покажите мне более удобное решение той же задачи в парадигме исключений и я перестану плеваться в их сторону. egorychя надеюсь, ты понимаешь, что исключения не исключают кодов возврата? ( о, я тоже умею каламбурить )Не исключают. Но комбинирование парадигм, это комбинирование, а не превосходство одного подхода над другим. Практически, ты только что признался что для удобства решения задачи, ты вынужден поступиться своей любимой техникой исключений. Ты уже не уверен в ее превосходстве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 17:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivОдно только спрошу: на ноль как делить будем, какой код возврата проверять будем, или может быть аргументы проверять будем ? Как вообще ?Как вообще? Да элементарно! Проверим делитель перед арифметикой и будем иметь возможность либо просто задать результат в одну из констант (ноль или бесконечность, смотря что нужно по логике расчетов) или выругаемся юзеру на экран, мол дай правильное значение для делителя. Все очень просто: я, зная что вот тут могут быть проблемы, изначально пытаюсь их минимизировать. А ты, привыкнув к подходу: "проблема? Потом поймаем", борешься со следствием проблемы. Мы в итоге просто по разному мыслим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 17:58 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchчестно говоря не понял, о чем ты сейчас? автор GWAN отказался от Windows в пользу Linux, и?"Я смог только вот здесь, но всё остальное никому и не нужно".а так - мне он был интересен только тем, что он смог добиться каких-то невероятных rps (которые подтвердились на его бинариках)Помню, в начале нулевых, перец, который был продвинут в программировании под винду, получил "какие-то невероятные rps" используя TDI и прочие низкоуровневые вещи Win API. Только что это доказывает? Что к любому высосанному из пальца утверждению можно подобрать такой же аргумент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 18:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivКое-какие осилянты тоже против, типа WO (я не думаю, что он неосилил EH за столько лет стажа в специальности).Ах! Ну хоть кто-то в меня верит :) MasterZivЯ ещё раз повторяю, ислючения были в IT ВСЕГДА, с момента ЗАРОЖДЕНИЯ индустрии. Это те же деления на ноль, потери значимости, обращения по несуществующему или нулевому адресу и т.д. Раньше это называлось системные прерывания. Иногда ещё как-то по-другому, не важно. Теперь просто таких случаев стало больше, появилась возможность ими управлять, появилась возможность их обрабатывать, и они стали определяться не на низшем уровне абстракции, а на более высоких. Суть от этого не меняется -- мы определяем операции, которые в каких-то случаях невозможно выполнить, и продолжать процесс вычисления после них невозможно.Ты путаешь исключения и исключения . То что ты описал, что было всегда, это аварийные ситуации и они действительно были всегда и будут всегда и их до сих пор сложно ловить на прикладном уровне. Но исключения на которые я плююсь это исключения порождаемые программистом, уже на прикладном уровне. Это действительно два разных типа исключений и они даже синтаксически в С++ обрабатываются по разному, да еще и ОС-зависимо. Да, исключения которые ловятся через __try{}__catch(){} или sigaction() это действительно "исключения которые были всегда". И это действительно настоящие исключения. Но дизайн приложения основанный на throw()+try{}catch(){}... это плохая идея ведущая к нечитаемому и соответственно трудно поддерживаемому коду. MasterZivТак что в принципе даже обсуждать тут нечего. Исключения были, есть и будут, и вредны они для отрасли или полезны, были ли они ошибкой или не были, -- спорить бессмысленно. Они были, есть и будут, и с ними нужно уметь жить и работать.Аварийные ситуации были есть и будут... Но так ли уж надо их еще и вручную создавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 18:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovdbpatchчестно говоря не понял, о чем ты сейчас? автор GWAN отказался от Windows в пользу Linux, и?"Я смог только вот здесь, но всё остальное никому и не нужно".а так - мне он был интересен только тем, что он смог добиться каких-то невероятных rps (которые подтвердились на его бинариках)Помню, в начале нулевых, перец, который был продвинут в программировании под винду, получил "какие-то невероятные rps" используя TDI и прочие низкоуровневые вещи Win API. Только что это доказывает? Что к любому высосанному из пальца утверждению можно подобрать такой же аргумент? я так и не понимаю, что ты пытаешься сказать. пример GWAN я привел как пример критичного восприятия человеком устоявшихся реализаций и подходов. он вполне наглядно показал, что в современном мире не умеют проектировать БЫСТРЫЕ решения, наслаивая все больше и больше луковиц этого вашего bloatware. и что если копнуть - можно добиться качественных показателей (в разы, а то и десятки, сотни раз, а не какие то несчастные +5%) но лично меня и вовсе - интересует не сколько скорость, сколько вопрос надежности и отказоустойчивости сетевых служб-сервисов особенно в unmanaged средах, правила написания оных. собственно больше вопрос из отряда - как писать прикладной код на C (не буду говорить на C++), так, чтоб он мог работать месяцами, без утечек, дыр и зависаний, и так, чтоб не надо было делать review по 5-10 человек на строчку кода каждого нового комитта, и привлекать аутсорсинговую компанию раз в год для тотального аудита. ибо ответа на этот вопрос в публичном доступе нет, а закрытые документы вроде MISRA они покрывают лишь 0.1% проблемных вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 18:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchпример GWAN я привел как пример критичного восприятия человеком устоявшихся реализаций и подходов. он вполне наглядно показал, что в современном мире не умеют проектировать БЫСТРЫЕ решения "Редкая профессия"Опыт общения с западными специалистами по ПО, как достаточно известными и уважаемыми, так и рядовыми программистами, убедил в одной простой вещи: практически никому не интересны те проблемы и трудности, с которыми ты сталкиваешься в процессе реализации того или иного проекта; мало кого интересуют пути и способы их преодоления. Важен и интересен прежде всего результат! Об этом образно сказал нам один коллега, эмигрировавший в Швейцарию лет пятнадцать назад. - Вот ваш "Буран", - сказал он (дело было больше двух лет назад), удобно расположившись в кресле на открытой террасе Политехнического института в Лозанне с видом на Женевское озеро.- Программа вроде бы завершилась единственным полетом в беспилотном режиме. Наверняка в процессе его разработки конструкторы продемонстрировали высокую квалификацию, нашли какие-то интересные нестандартные решения, придумали и отработали технологию, решили уйму проблем и т.д. и т.д. Но... - заключил он с ехидцей в голосе,- не летает! Не делает то, для чего был предназначен! А значит, и говорить о нем бессмысленно. Его нет, и это главное. Поэтому, когда читаешь о д'Артаньяне, вокруг которого одни недоумки, сразу вспоминается классическое "Не верю!". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 20:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вообще то есть два пути написания надежных программ: -берем обычный язык (С, неважно) и накладываем на него кучу правил-ограничений и науськиваем программу-проверялку их выполнения -берем язык, в котором изначально эти ограничения встроены (Java, Rust, D) и боремся с ними в попытке сделать что то полезное =) Похоже, на мой вопрос 20657004 ответа никто не знает.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 20:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereПредполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Преимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает?Это религиозный вопрос. Не разжигай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 21:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglВообще то есть два пути написания надежных программ: -берем обычный язык (С, неважно) и накладываем на него кучу правил-ограничений и науськиваем программу-проверялку их выполнения -берем язык, в котором изначально эти ограничения встроены (Java, Rust, D) и боремся с ними в попытке сделать что то полезное =)Ну да, где-то так. Но ... Если человек сам сознательно наложил на себя кучу ограничений - это одно. А если эти наложения наложили на него другие - это уже ущемление прав и человек будет стремиться сорвать оковы. Чистая психология :) SiemarglПохоже, на мой вопрос 20657004 ответа никто не знает....Почему-же, знаем. Просто он слишком простой. STL была изобретена убежденным апологетом обобщенного программирования и в первой реализации она действительно следовала заявленным O(x) для всех имеющихся там шаблонов. Прошли годы, и спустя многие реализации (и переписывания с нуля) она в основном продолжает следовать заявленным характеристикам. А в частности, в той инсталляции библиотеки которая у тебя есть - ты вряд-ли сможешь найти расхождение с заявленной в документации производительностью. Но в паре-тройке функций может быть и проседание (от ошибок никто не застрахован, в том числе и люди пишущие библиотеки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 21:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Юникс и его потроха написаны на С, работают месяцами, исходники доступны, книгу (очень неплохую) о том, как писать такое, написал Эрик Реймонд, "Искусство программирования для Unix" https://www.ozon.ru/context/detail/id/2317804/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 21:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglВот по поводу STL в RT-системах у меня сомнения есть. Существуют ли метрики, что а) конкретный метод STL исполняется "не более чем", т.е имеет четко прогнозируемый по исходным данным верхний предел времени б) конкретный метод STL потребляет "не более чем" кол-ва стека и динамической памяти ? Суть в том, что всего не учтешь, все равно нужен фидбек от объекта, а там где есть фидбек требования RT избыточны. Вот человек, например, далеко не RTOS. Время реакции произвольное. И тем не менее, люди широко используются во всех сферах жизни и производства. Так что это ваше RT никому вобщем-то не нужно, даже там под что оно специально создавалось. Учите лучше ТАУ )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:19 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky...Суть в том, что всего не учтешь, все равно нужен фидбек от объекта, а там где есть фидбек требования RT избыточны. Вот человек, например, далеко не RTOS. Время реакции произвольное. И тем не менее, люди широко используются во всех сферах жизни и производства. Так что это ваше RT никому вобщем-то не нужно, даже там под что оно специально создавалось.... Ты на машине то ездишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:26 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owl, >>Ну так поменяй. написать быстренько, на форуме, объектную библиотеку для работы с ODBC? мило) >>Показать что ту-же самую задачу с исключениями решать проще, элегантнее, короче, и тп чем с кодами возврата. Пока это не было продемонстрировано. код, очищенный от if (!SQL_SUCCEEDED(retcode)) print_odbc_error(SQL_HANDLE_STMT, TRUE); после каждой второй строчки программы менее элегантен, чем с ними. Ну ок, бывает. Я надеюсь только, что это библиотечный код, и ты его не пишешь для каждого запроса в приложении. >>Практически, ты только что признался что для удобства решения задачи, ты вынужден поступиться своей любимой техникой исключений. Ты уже не уверен в ее превосходстве? не не, догматик у нас тут один - это ты, и вот ещё dbpatch добавился ещё )) меня не пугает ни ООП, ни исключения, ни шаблоны. Даже процедурный код, вроде представленного тобой, не пугает. Более того, я вынужден его использовать, потому что норвежские самоделкины из Qt очень постарались сделать exception safety библиотеку и превратили C++ в C. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiЮникс и его потроха написаны на С, работают месяцами, исходники доступны, книгу (очень неплохую) о том, как писать такое, написал Эрик Реймонд, "Искусство программирования для Unix" https://www.ozon.ru/context/detail/id/2317804/ и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglВот по поводу STL в RT-системах у меня сомнения есть. Существуют ли метрики, что а) конкретный метод STL исполняется "не более чем", т.е имеет четко прогнозируемый по исходным данным верхний предел времени б) конкретный метод STL потребляет "не более чем" кол-ва стека и динамической памяти ? Не уверен, что эти метрики в готовом виде существуют, проще взять и посчитать для конкрекных инстанциаций SSTL-Евских темплетов с конкретным RT-friendly аллокатором (какой-нибудь любимый TLSF и т.п.) и прочими подробностями. Особенно не уверен про время, так как дёрганье из кэша и дёргание из основной памяти без префетча --- запросто почти на два порядка разные времена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
egorychWhite Owl, >>Ну так поменяй. написать быстренько, на форуме, объектную библиотеку для работы с ODBC? мило) ...А разве в MFC нет? Кстати, я тоже не понял, print_odbc_error() прибивает программу или нет. Похоже что да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargl, >>А разве в MFC нет? хз, я им не пользуюсь )) >>Кстати, я тоже не понял, print_odbc_error() прибивает программу или нет. Похоже что да. прибивает, если вторым параметром TRUE написать, WhiteOwl писал это где здесь, затерялось в бурных водах) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2017, 23:51 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglВот по поводу STL в RT-системах у меня сомнения есть. Существуют ли метрики, что а) конкретный метод STL исполняется "не более чем", т.е имеет четко прогнозируемый по исходным данным верхний предел времени б) конкретный метод STL потребляет "не более чем" кол-ва стека и динамической памяти ? Не уверен, что эти метрики в готовом виде существуют, проще взять и посчитать для конкрекных инстанциаций SSTL-Евских темплетов с конкретным RT-friendly аллокатором (какой-нибудь любимый TLSF и т.п.) и прочими подробностями. Особенно не уверен про время, так как дёрганье из кэша и дёргание из основной памяти без префетча --- запросто почти на два порядка разные времена. Смысл не в скорости, а в детерминированности. Пусть даже 1с на 1мил элементов, но гарантированно. Меня больше стек и память волнуют. В скорости большой запас на текущем железе (а реально РТ надо укладываться кроме спец.задач в 50-100мс), а вот если крешнется по памяти, будет опа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 00:03 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglТы на машине то ездишь? Я не отвечаю на наводящие вопросы. Если есть что спросить спрашивайте прямо, без лирических отступлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 00:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, А я не спрашиваю. Я говорю что РТ есть там, где ты не видишь. И не должен видеть ) Так что отрицать его необходимость - глупо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 00:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchно потом это просто надоедает и хочется сотворить что-то действительно значимое. Просто ради фана.Ну так сотвори, что мешает? Судя по всему, ты пока не творил для фана :) Но обязательно сотвори, и ты обнаружишь одну удивительную штуку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 05:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlТы же не забыл итоговую цель? Показать что ту-же самую задачу с исключениями решать проще, элегантнее, короче, и тп чем с кодами возврата. Пока это не было продемонстрировано. не элегантнее, а вообще не невозможно по другому. я же писал, как на ноль делить будем с кодами возврата? как память по невалидому указателю будем читать? как выходы за границы массива контролировать будем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 06:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZivОдно только спрошу: на ноль как делить будем, какой код возврата проверять будем, или может быть аргументы проверять будем ? Как вообще ?Как вообще? Да элементарно! Проверим делитель перед арифметикой и будем иметь возможность либо просто задать результат в одну из констант (ноль или бесконечность, смотря что нужно по логике расчетов) или выругаемся юзеру на экран, мол дай правильное значение для делителя. Все очень просто: я, зная что вот тут могут быть проблемы, изначально пытаюсь их минимизировать. А ты, привыкнув к подходу: "проблема? Потом поймаем", борешься со следствием проблемы. Мы в итоге просто по разному мыслим. ну, кодик напиши с исключениями и с кодами возврата и сравни, чтобы вычислялась какая-то вменяемая реальная формула с делением. я найду пример потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 06:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owl MasterZivТак что в принципе даже обсуждать тут нечего. Исключения были, есть и будут, и вредны они для отрасли или полезны, были ли они ошибкой или не были, -- спорить бессмысленно. Они были, есть и будут, и с ними нужно уметь жить и работать.Аварийные ситуации были есть и будут... Но так ли уж надо их еще и вручную создавать? если вы подумаете, а не будете жить в парадигме, что кто то когда-то ошибся и все пошло не так, то поймёте ви конце концов, что это все одно и то же. Исключение - это и есть аварийная ситуация и способ ее обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 06:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargliv_an_ruпропущено...Не уверен, что эти метрики в готовом виде существуют, проще взять и посчитать для конкрекных инстанциаций SSTL-Евских темплетов с конкретным RT-friendly аллокатором (какой-нибудь любимый TLSF и т.п.) и прочими подробностями. Особенно не уверен про время, так как дёрганье из кэша и дёргание из основной памяти без префетча --- запросто почти на два порядка разные времена. Смысл не в скорости, а в детерминированности. Пусть даже 1с на 1мил элементов, но гарантированно. Меня больше стек и память волнуют. В скорости большой запас на текущем железе (а реально РТ надо укладываться кроме спец.задач в 50-100мс), а вот если крешнется по памяти, будет опа.Ну я потому и пишу TLSF как пример, что с ним хорошо оценивать гарантированные поедания памяти и времена. С другой стороны, на практике интересует оценка поточнее, чем "длина бороды Мафусаила", поэтому смотрят и на средние времена плюс сколько-то сигм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:26 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglпропущено... Смысл не в скорости, а в детерминированности. Пусть даже 1с на 1мил элементов, но гарантированно. Меня больше стек и память волнуют. В скорости большой запас на текущем железе (а реально РТ надо укладываться кроме спец.задач в 50-100мс), а вот если крешнется по памяти, будет опа.Ну я потому и пишу TLSF как пример, что с ним хорошо оценивать гарантированные поедания памяти и времена. С другой стороны, на практике интересует оценка поточнее, чем "длина бороды Мафусаила", поэтому смотрят и на средние времена плюс сколько-то сигм.Это только верх айсберга - позволит использовать malloc в С-RT приложениях, но не в С++. Вопрос - сколько malloc'ов (new) и стека например в std::sort ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Как я посмотрю - здесь каждый первый разрабатывает реалтаймсистемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилКак я посмотрю - здесь каждый первый разрабатывает реалтаймсистемыТак понимаешь, если ресурсов валом, то берется наждачка покрупнее, я например беру С# (да и ту сломал 20592132 ). А когда у тебя какая то серверная хрень с сотнями процессов (для чего и применяют Схх), то она хоть и не РТ, но с ростом все больше и больше начинает по требованиям ее напоминать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
[quot SiemarglТак понимаешь, если ресурсов валом, то берется наждачка покрупнее, я например беру С# (да и ту сломал 20592132 ). А когда у тебя какая то серверная хрень с сотнями процессов (для чего и применяют Схх), то она хоть и не РТ, но с ростом все больше и больше начинает по требованиям ее напоминать...[/quot] В том же C# просадка по ресурсам вполне предсказуема, нормально оценивается. Никакой проблемы писать под C# "серверную хрень с сотнями процессов" нет, просто нужно аккуратнее управлять ресурсами. На том же ASP пишутся большие сайты с немаленькой нагрузкой. Суть реалтайма не в повышенной нагрузке, а в гарантированном времени отклика. Естественно, что это распространяется только на управляющие контуры, а интерфейсную часть можно писать на С, C++, Java, C#, Python - не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglА я не спрашиваю. Я говорю что РТ есть там, где ты не видишь. И не должен видеть ) Так что отрицать его необходимость - глупо. Чего вдруг нельзя отрицать. То что где-то применяется какая-то фича, не значит что в этом была необходимость. Может просто разраб - идиот )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargliv_an_ruпропущено... Ну я потому и пишу TLSF как пример, что с ним хорошо оценивать гарантированные поедания памяти и времена. С другой стороны, на практике интересует оценка поточнее, чем "длина бороды Мафусаила", поэтому смотрят и на средние времена плюс сколько-то сигм.Это только верх айсберга - позволит использовать malloc в С-RT приложениях, но не в С++. Вопрос - сколько malloc'ов (new) и стека например в std::sort ?Кто вам запрещает в плюсах отнаследовать от std:alloc обёртку над TLSF ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglпропущено... Это только верх айсберга - позволит использовать malloc в С-RT приложениях, но не в С++. Вопрос - сколько malloc'ов (new) и стека например в std::sort ?Кто вам запрещает в плюсах отнаследовать от std:alloc обёртку над TLSF ?А дальше что? Мониторить сколь раз вызывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargliv_an_ruпропущено... Кто вам запрещает в плюсах отнаследовать от std:alloc обёртку над TLSF ?А дальше что? Мониторить сколь раз вызывается?Ну, если вы не знаете, утекает у вас память или нет, то мониторить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 14:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbdbpatchно потом это просто надоедает и хочется сотворить что-то действительно значимое. Просто ради фана.Ну так сотвори, что мешает? Судя по всему, ты пока не творил для фана :) Но обязательно сотвори, и ты обнаружишь одну удивительную штуку. какую штуку? что твое творение никому не нужно и не интересно, кроме тебя? я эту стадию прошел, в смысле вышел из этого замкнутого круга. в совсем широкие массы это не идет ибо пока еще инкубатор, есть пара фундаментально пока неразрешимых проблем, а примененные компромисы не убедительны (вопрос про динамически расширяемые строки/буферы - непрерывные массивы байт, в условиях запрета на realloc/malloc/free - в смысле они расширяются через повторный mmap, но для мелких строк это не приемлимо и со стековыми строками тоже вопрос) почему запрет на realloc - потому что старый указатель должен быть валиден, вернее участок памяти под ним должен быть адресуем до общего конца жизненного цикла вызова впрочем, если ты не в теме проблематики то это все лишь белый шум ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglпропущено... А дальше что? Мониторить сколь раз вызывается?Ну, если вы не знаете, утекает у вас память или нет, то мониторить. подобное уже написано до вас :) https://msdn.microsoft.com/en-us/library/x98tx3cf.aspx а если серьезно - то в любом проекте свои обертки над malloc/free - я думал это просто must have уже с третьего дня старта проекта, а оказывается находятся те, кто и вопросы задает, зачем это нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:15 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилКак я посмотрю - здесь каждый первый разрабатывает реалтаймсистемы применять принципы RT можно выборочно. оно знаешь - довольно просто сделать код тормозным - просто пиши себе как обычно это делают и не парься. а вот написать коровую часть хорошо, чтоб потом последователи имели запас прочности - это обязательное правило, если не хочешь, чтоб твой проект поставили на списание/переписывание уже через полгода после релиза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglпропущено... А дальше что? Мониторить сколь раз вызывается?Ну, если вы не знаете, утекает у вас память или нет, то мониторить. Речь не об утечке памяти, ну откуда вы вообще эту тему взяли??? Исходный вопрос 20657004 Речь о гарантии того, что ваше приложение поместится в XXX Кб оперативки и в YYY Кб стека. При любых условиях. И о предварительной оценке XXX/YYY по исходному набору данных, если используется STL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:26 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargliv_an_ruпропущено... Ну, если вы не знаете, утекает у вас память или нет, то мониторить. Речь не об утечке памяти, ну откуда вы вообще эту тему взяли??? Исходный вопрос 20657004 Речь о гарантии того, что ваше приложение поместится в XXX Кб оперативки и в YYY Кб стека. При любых условиях. И о предварительной оценке XXX/YYY по исходному набору данных, если используется STL.Для гарантии не надо мониторить, для гарантии надо считать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
egorychWhite Owl, >>Ну так поменяй. написать быстренько, на форуме, объектную библиотеку для работы с ODBC? мило)Зачем библиотеку??? Для демонстрации решения одной маленькой задачи, ты хочешь писать библиотеку??? И после этого ты еще продолжаешь утверждать что с твоими любимыми исключениями код получается проще и элегантнее?! У тебя совесть есть? egorych Я надеюсь только, что это библиотечный код, и ты его не пишешь для каждого запроса в приложении.Зря надеешься. Это реальный код в прикладной программе. Вызовы к SQL* функциям - это вызовы библиотеки (прямое обращение к ODBC функциям), а как я эти функции вызываю и как с ними работаю - я только что показал. Тебе этот код не нравится? Ну так почему ты не покажешь аналогичный код который тебе нравится? Неужели я слишком многого прошу? Просто покажи свой элегантный код и все. MasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ? Или так-же как egorych сольетесь? Вы же с базами данных работаете ежедневно и наверняка решали проблему пропуска rowcout резалтсетов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 18:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owl, print_odbc_error(SQL_HANDLE_STMT, TRUE); процесс завершает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 18:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилWhite Owl, print_odbc_error(SQL_HANDLE_STMT, TRUE); процесс завершает?Да. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 18:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ? Или так-же как egorych сольетесь? Вы же с базами данных работаете ежедневно и наверняка решали проблему пропуска rowcout резалтсетов? OK, напишу, чуть позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 19:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlMasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ? Прошу. Код: 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. Краткое пояснение. 1) Отделено логирование SQL_SUCCESS_WITH_INFO от прикладного кода, которое там нафиг не нужно. 2) Фатальные ошибки приводят к аварийному завершению функции, а не приложения. И в вызывающей функции принимается решение что делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 20:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlИзопропилWhite Owl, print_odbc_error(SQL_HANDLE_STMT, TRUE); процесс завершает?Да. Код: 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. Дико извиняюсь, а зачем while (TRUE) ? Почему не Код: plaintext 1. 2. ? В свое время очень впечатлил пример рефакторинга кода Рихтера в progstone http://progstone.narod.ru/reciprocality/r0/day2.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 21:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiДико извиняюсь, а зачем while (TRUE) ?Затем, что: Код: sql 1. удобнее, чем: Код: sql 1. 2. 3. Особенно удобнее, если условий выхода - несколько и в разных местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 22:26 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiДико извиняюсь, а зачем while (TRUE) ?Это потому, что в убогих сях, в отличие от правильного muLISPа, нет неявных PROGN-ов и неявных COND-ов, и из-за этого программирование сценариев "сначала частные случаи, потом более общие" требует костылей вроде фиктивного цикла с брейками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 22:45 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglпропущено... Речь не об утечке памяти, ну откуда вы вообще эту тему взяли??? Исходный вопрос 20657004 Речь о гарантии того, что ваше приложение поместится в XXX Кб оперативки и в YYY Кб стека. При любых условиях. И о предварительной оценке XXX/YYY по исходному набору данных, если используется STL.Для гарантии не надо мониторить, для гарантии надо считать.Выдохнул. Еще раз, уже пятый. Спрашиваю. ЕСТЬ СПОСОБ КАК ПОСЧИТАТЬ ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 22:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovschiДико извиняюсь, а зачем while (TRUE) ?Затем, что: Код: sql 1. удобнее, чем: Код: sql 1. 2. 3. Особенно удобнее, если условий выхода - несколько и в разных местах. Фигасе. Хотелось бы услышать, чем, применительно к данному коду, синтаксис Код: plaintext 1. 2. 3. 4. 5. 6. Удобнее, чем Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 23:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruschiДико извиняюсь, а зачем while (TRUE) ?Это потому, что в убогих сях, в отличие от правильного muLISPа, нет неявных PROGN-ов и неявных COND-ов, и из-за этого программирование сценариев "сначала частные случаи, потом более общие" требует костылей вроде фиктивного цикла с брейками. В убогих сях есть синтаксис оператора while, в описании этого синтаксиса не указано, что в скобках после while должно всегда стоять TRUE (Специально открыл K&R) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 23:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiФигасе. Хотелось бы услышать, чем, применительно к данному кодуПерепишите на кошерный, с вашей точки зрения вариант и сравните. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 23:10 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schi:= Злостный офтопик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 23:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyschi:= Злостный офтопик Шпейон спалилсо 0/ Всех с пятницей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 00:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargliv_an_ruпропущено... Для гарантии не надо мониторить, для гарантии надо считать.Выдохнул. Еще раз, уже пятый. Спрашиваю. ЕСТЬ СПОСОБ КАК ПОСЧИТАТЬ ???сначала смотрите оверхеды своего любимого аллокатора в статье про этот аллокатор. Потом складываете все вызовы аллокатора в один столбик, фарш на стеке в другой. В случае Оптерона, если ничего не путаю и если нужен контроль за приближающимся переполнением стека, то столбиков для стека понадобится два --- что растёт снизу вверх и что растёт сверху вниз. Тупо, нудно, лучше привлечь двух стажёров, чтобы каждый независимо от другого разметил комментариями код, строчку за строчкой, а потом meld-ом сравнить их результаты, и увидеть ошибки (ну, часть ошибок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 05:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Ладно. Я понял, что задал слишком сложный вопрос для этого форума и про доказательства алгоритмов никто не помнит. Ушел читать http://www.embedded.com/design/programming-languages-and-tools/4429790/How-to-make-C--more-real-time-friendly ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 10:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiВ убогих сях есть синтаксис оператора while, в описании этого синтаксиса не указано, что в скобках после while должно всегда стоять TRUE (Специально открыл K&R)Я, периодически, использую иную форму: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 10:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devЯ, периодически, использую иную форму:а я стараюсь такие вещи в функцию выносить: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 10:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyschi:= Злостный офтопик "Но что-то его выдавало: то ли буденовка, то ли орден Ленина, то ли парашют, волочащийся за спиной." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 10:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMb, менять простой "jmp near ptr" на "ret" там, где просто не хочется писать goto? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 11:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiBasil A. Sidorovпропущено... Затем, что: Код: sql 1. удобнее, чем: Код: sql 1. 2. 3. Особенно удобнее, если условий выхода - несколько и в разных местах. Фигасе. Хотелось бы услышать, чем, применительно к данному коду, синтаксис Код: plaintext 1. 2. 3. 4. 5. 6. Удобнее, чем Код: plaintext 1. 2. 3. Блин, ну чего ты привязался ? Ну, захотелось ему так, что теперь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 12:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiФигасе. Хотелось бы услышать, чем, применительно к данному коду, синтаксис Код: plaintext 1. 2. 3. 4. 5. 6. Удобнее, чем Код: plaintext 1. 2. 3. Результаты работы второго варианта неидентичен первому. Правильный вариант: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 12:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
rdb_devCEMb, менять простой "jmp near ptr" на "ret" там, где просто не хочется писать goto?вопрос, конечно, философский. Но у тебя там блок обработки. Скорее всего, его можно логически выдернуть из кода. А тогда есть вероятность, что его можно оформить, как отдельную функцию. Ну и понятно, что вероятность второго меньше, чем вероятность первого. Я в функции код выношу, чтобы не городить лишние if-ы и скоупы. Без фанатизма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 12:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbWhite Owlв Java это "игнорирование исключения" опять таки надо явно прописывать, а в С++ просто "забываешь" про него.Вот это очень полезная штука в яве. Я не осилил перечитывать три страницы, но лучше, для структуры кода и читаемости, выкидывать исключения на одном уровне, а ловить на том же или следующем, и если надо, прокидывать (своё, новое) дальше. И в заголовке и теле функции писать, что она (не) выкидывает. С++ не обязует это делать, но позволяет. Тогда не надо будет лазить по всей иерархии классов и искать, какая зараза его бросила. Иначе исключениями код можно запутать гораздо хитрее, чем этими всеми вашими goto-ами. По сути, это те же goto, только в одну сторону, зато скакануть можно как угодно далеко. А СОМ - это просто был пример полиморфизма, который в свою очередь - кусок ООП :) Не совсем так. В java действует соглашение что обработать исключение Можно только в том случае если на текущем уровне мы в состоянии Принять какое то решение. В остальных случаях мы имеем право его Бросить наверх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 20:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglЛадно. Я понял, что задал слишком сложный вопрос для этого форума и про доказательства алгоритмов никто не помнит.Если для вашего алгоритма уже есть даже доказанные оценки, зачем вы его вообще пишете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 21:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruSiemarglЛадно. Я понял, что задал слишком сложный вопрос для этого форума и про доказательства алгоритмов никто не помнит.Если для вашего алгоритма уже есть даже доказанные оценки, зачем вы его вообще пишете?Я понимаю, что не слишком подробно пишу, надеясь на понимание собеседников. Но кажется, ты совсем не понял вопроса. Вопрос был про доказанные оценки для алгоритмов STL. Все, самовыпиливаюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 22:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargliv_an_ruпропущено... Если для вашего алгоритма уже есть даже доказанные оценки, зачем вы его вообще пишете?Я понимаю, что не слишком подробно пишу, надеясь на понимание собеседников. Но кажется, ты совсем не понял вопроса. Вопрос был про доказанные оценки для алгоритмов STL. Все, самовыпиливаюсь...Там и доказывать нечего, абсолютно тупые же контейнеры, всё в Седжевике. Проблема не в стоимости "кирпичиков", а в "бухучёте", чтобы получить стоимость большого нагромождения этих "кирпичиков" в вашей программе. И эта работа абсолютно одинакова хоть для голого си, хоть для плюсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 23:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiВ свое время очень впечатлил пример рефакторинга кода Рихтера в progstone http://progstone.narod.ru/reciprocality/r0/day2.html Мне кажется что глубокие рассуждения о пользе или вреде нулевого факториала ведут нас к базовым аксиомам чисел. (Старик Гёдель ехидно улыбается с портретов.) Как определили функцию так она и "поплыла". Ничего мы фундаментально не улучшим если даже лишим функцию области определения. А если заставим ее быть равной нулю при x=0 то потеряем некую рекурретную индуктивность. Во все формулы надо будет ввести if (...) которых защитит произведение от внезапного обнуления. Кроме того количество перестановок пустого множества предметов дает определенные философские допущения, улучшающие картину мира. Тоесть все вроде-бы логично. У нес есть ОДНА перестановка одного предмета. И ОДНА перестановка пустого множества предметов. Статью целиком не читал. Пробежал по диагонали. Жаль время терять на попытки искать сенсацию где ее нет. Уж лучше копать уфологию там или историю шестой расы. Продуктивнее будет.... мдя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 00:54 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlMasterZiv, Anatoly Moskovsky, а вы? Вы тоже частенько заявляете что код с исключениями проще и лучше. Можете сделать простой и элегантный аналог на исключениях для кода показанного в 20655972 ? Прошу.Ну это уже можно читать... Но "нэ, нэ нравится". Все же ODBC это изначально процедурная библиотека и если следовать показанному подходу, надо будет каждый вызов SQL* функции обернуть в отдельную функцию/метод типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. То есть либо самому писать обертку, либо найти уже написаную кем-то. А еще, в этом коде кучка ошибок :) Он не аналогичен моему... Anatoly MoskovskyКраткое пояснение. 1) Отделено логирование SQL_SUCCESS_WITH_INFO от прикладного кода, которое там нафиг не нужно.Не согласен. В данном конкретном случае это было действительно оправдано. Кусочек кода маленький. Но в большой программе далеко не всегда нужно обращать внимание на SQL_SUCCESS_WITH_INFO. Во многих случаях эту информацию можно смело игнорировать, но если сделать обертку над функцией которая всегда делает отладочню печать - мы рискуем получить излишне перегруженный лог. Именно по этой причине я предпочитаю обращать внимание на SQL_SUCCESS_WITH_INFO только там где это действительно нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 02:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiДико извиняюсь, а зачем while (TRUE) ? Почему не Код: plaintext 1. 2. ?Потому что вызов этой функции уже очень длинный. Чисто для визуальщины - отдельно цикл, отдельно вызов функции, отдельно выход из цикла. Можно конечно написать и так как ты предлагаешь - меньше строк будет, но... Я просто предпочитаю не писать условие которое требует переноса на следующую сторку. Лучше уж завести несколько булевых переменных и вычислять их отдельно от if/while. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 02:19 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonschiВ свое время очень впечатлил пример рефакторинга кода Рихтера в progstone http://progstone.narod.ru/reciprocality/r0/day2.html Мне кажется что глубокие рассуждения о пользе или вреде нулевого факториала ведут нас к базовым аксиомам чисел. (Старик Гёдель ехидно улыбается с портретов.) Как определили функцию так она и "поплыла". Ничего мы фундаментально не улучшим если даже лишим функцию области определения. А если заставим ее быть равной нулю при x=0 то потеряем некую рекурретную индуктивность. Во все формулы надо будет ввести if (...) которых защитит произведение от внезапного обнуления. Кроме того количество перестановок пустого множества предметов дает определенные философские допущения, улучшающие картину мира. Тоесть все вроде-бы логично. У нес есть ОДНА перестановка одного предмета. И ОДНА перестановка пустого множества предметов. Статью целиком не читал. Пробежал по диагонали. Жаль время терять на попытки искать сенсацию где ее нет. Уж лучше копать уфологию там или историю шестой расы. Продуктивнее будет.... мдя. Эту книгу надо целиком читать - полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 09:19 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlschiДико извиняюсь, а зачем while (TRUE) ? Почему не Код: plaintext 1. 2. ?Потому что вызов этой функции уже очень длинный. Чисто для визуальщины - отдельно цикл, отдельно вызов функции, отдельно выход из цикла. Можно конечно написать и так как ты предлагаешь - меньше строк будет, но... Я просто предпочитаю не писать условие которое требует переноса на следующую сторку. Лучше уж завести несколько булевых переменных и вычислять их отдельно от if/while. Длина вызова функции несильно зависит от места расположения вызова. Лично меня всегда напрягают бесконечные циклы там, где без них можно обойтись. Но я никоим образом не навязываюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 09:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owlнадо будет каждый вызов SQL* функции обернуть в отдельную функцию/метод типа: И что, руки отвалятся один раз такие оберки сделать? Да и print_odbc_error, это не обертка что ли? Двойные стандарты? White OwlА еще, в этом коде кучка ошибок :) Он не аналогичен моему... Я не нанимался отлаживать код. Вопрос был как будет выглядеть код на исключениях. Ответ получен. White OwlНо в большой программе далеко не всегда нужно обращать внимание на SQL_SUCCESS_WITH_INFO При необходимости этот вопрос решаются элементарно. Таким образом, код на исключениях выглядит намого проще и понятнее, потому что есть возможность элементарно отделить весь отладочный код от прикладного, и я этим воспользовался в этим примере. На кодах возврата это невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 10:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owlнадо будет каждый вызов SQL* функции обернуть в отдельную функцию/метод типа: И что, руки отвалятся один раз такие оберки сделать? Да и print_odbc_error, это не обертка что ли? Двойные стандарты? White OwlА еще, в этом коде кучка ошибок :) Он не аналогичен моему... Я не нанимался отлаживать код. Вопрос был как будет выглядеть код на исключениях. Ответ получен. White OwlНо в большой программе далеко не всегда нужно обращать внимание на SQL_SUCCESS_WITH_INFO При необходимости этот вопрос решаются элементарно. Таким образом, код на исключениях выглядит намого проще и понятнее, потому что есть возможность элементарно отделить весь отладочный код от прикладного, и я этим воспользовался в этим примере. На кодах возврата это невозможно.По моему грустному опыту, попытки назвать "отладочным" код, остающийся в боевом экзешнике --- это обычно попытки обосновать меньшую тщательность отладки этого "отладочного" кода. А программулине и юзерам потом по барабану, как назывался тот код, который привёл к ошибке --- "отладочный" или ещё как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 10:49 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schimaytonпропущено... Мне кажется что глубокие рассуждения о пользе или вреде нулевого факториала ведут нас к базовым аксиомам чисел. (Старик Гёдель ехидно улыбается с портретов.) Как определили функцию так она и "поплыла". Ничего мы фундаментально не улучшим если даже лишим функцию области определения. А если заставим ее быть равной нулю при x=0 то потеряем некую рекурретную индуктивность. Во все формулы надо будет ввести if (...) которых защитит произведение от внезапного обнуления. Кроме того количество перестановок пустого множества предметов дает определенные философские допущения, улучшающие картину мира. Тоесть все вроде-бы логично. У нес есть ОДНА перестановка одного предмета. И ОДНА перестановка пустого множества предметов. Статью целиком не читал. Пробежал по диагонали. Жаль время терять на попытки искать сенсацию где ее нет. Уж лучше копать уфологию там или историю шестой расы. Продуктивнее будет.... мдя. Эту книгу надо целиком читать - полезно. Сложно вести беседу, основываясь на ссылках на книги. В этом топике есть живые люди. Ораторы. И мне интересно Слышать их живое мнение. Я не буду против вашего резюмирования книги. И я готов его Обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 11:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owlнадо будет каждый вызов SQL* функции обернуть в отдельную функцию/метод типа: И что, руки отвалятся один раз такие оберки сделать? Да и print_odbc_error, это не обертка что ли? Двойные стандарты? White OwlА еще, в этом коде кучка ошибок :) Он не аналогичен моему... Я не нанимался отлаживать код. Вопрос был как будет выглядеть код на исключениях. Ответ получен. White OwlНо в большой программе далеко не всегда нужно обращать внимание на SQL_SUCCESS_WITH_INFO При необходимости этот вопрос решаются элементарно. Таким образом, код на исключениях выглядит намого проще и понятнее, потому что есть возможность элементарно отделить весь отладочный код от прикладного, и я этим воспользовался в этим примере. На кодах возврата это невозможно. господи, ООП головного мозга в терминальной стадии, право. что элементарнее может быть NDEBUG и assert(), какие еще исключения? зачем придумывать на коленке еще одну кривую и косую реализацию деления на прикладной и отладочный код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 17:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruПо моему грустному опыту, попытки назвать "отладочным" код, остающийся в боевом экзешнике --- это обычно попытки обосновать меньшую тщательность отладки этого "отладочного" кода. А программулине и юзерам потом по барабану, как назывался тот код, который привёл к ошибке --- "отладочный" или ещё как. Не надо утрировать. Средства диагностики в runtime (поддержка трассировочных и отладочных режимов) - это большое искусство, которому в школе вообще не учат. Тем более, после "релиза" просто так через gdb уже не походишь, целые куски за счет инлайнинга запросто становятся недоступными для пошаговой трассировки. Собственно когда говорят про необходимость удаления отладочного кода - это сразу выдает в собеседнике формошлепа из какого C++Builder или его аналога, который работает в условиях конечной недоступности среды выполнения, ему на эти инструментарии трассировки глубоко фиолетово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 18:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch, Интересно, что из моего комментария было написано так двусмысленно, что дало вам повод написать этот ответ? Особенно если коммент про код, остающийся в релизном экзешнике, а ответ --- про "говорят про необходимость удаления отладочного кода" (цвет мой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 20:03 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 20:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchчто элементарнее может быть NDEBUG и assert(), какие еще исключения? Ждем теперь реализацию того же кода на ассертах. Ну чисто чтоб поржать над убогими сишниками ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 21:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchiv_an_ruПо моему грустному опыту, попытки назвать "отладочным" код, остающийся в боевом экзешнике --- это обычно попытки обосновать меньшую тщательность отладки этого "отладочного" кода. А программулине и юзерам потом по барабану, как назывался тот код, который привёл к ошибке --- "отладочный" или ещё как. Не надо утрировать. Средства диагностики в runtime (поддержка трассировочных и отладочных режимов) - это большое искусство, которому в школе вообще не учат. Тем более, после "релиза" просто так через gdb уже не походишь, целые куски за счет инлайнинга запросто становятся недоступными для пошаговой трассировки. Собственно когда говорят про необходимость удаления отладочного кода - это сразу выдает в собеседнике формошлепа из какого C++Builder или его аналога, который работает в условиях конечной недоступности среды выполнения, ему на эти инструментарии трассировки глубоко фиолетово. Судя по его тематике, у него просто другой уровень надёжности и отклика, в его случаях он как раз прав - роль отладочного кода играют тесты. Отладочные Non Zerro Cost механизмы в продакшн это обычно ширпотреб, дёшево и сердито - с которым как я понимаю он и не работал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 22:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruAnatoly MoskovskyТаким образом, код на исключениях выглядит намого проще и понятнее, потому что есть возможность элементарно отделить весь отладочный код от прикладного, и я этим воспользовался в этим примере. На кодах возврата это невозможно.По моему грустному опыту, попытки назвать "отладочным" код, остающийся в боевом экзешнике --- это обычно попытки обосновать меньшую тщательность отладки этого "отладочного" кода. А программулине и юзерам потом по барабану, как назывался тот код, который привёл к ошибке --- "отладочный" или ещё как. А как бы вы назвали этот код? И как обычно называете остающийся в боевом экзешнике код, который обрабатывает серьёзные ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 17:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owlнадо будет каждый вызов SQL* функции обернуть в отдельную функцию/метод типа: И что, руки отвалятся один раз такие оберки сделать? Да и print_odbc_error, это не обертка что ли? Двойные стандарты? Не надо путать обертки и вынос повторяющегося кода в функцию. Anatoly MoskovskyWhite OwlА еще, в этом коде кучка ошибок :) Он не аналогичен моему... Я не нанимался отлаживать код. Вопрос был как будет выглядеть код на исключениях. Ответ получен.Да, получен... Где-то так на троечку. Видно что студент что-то знает по теме, но задача решена все-же неправильно. Anatoly MoskovskyWhite OwlНо в большой программе далеко не всегда нужно обращать внимание на SQL_SUCCESS_WITH_INFO При необходимости этот вопрос решаются элементарно.И как именно? Добавлением параметра в обертку? Или выключением-включением verbose флага? Anatoly MoskovskyТаким образом, код на исключениях выглядит намого проще и понятнее, потому что есть возможность элементарно отделить весь отладочный код от прикладного, и я этим воспользовался в этим примере. На кодах возврата это невозможно.Ну с чего вдруг невозможно то??? Продемонстрированное отделение отладочного кода от прикладного основано целиком на обертке функции. Делаем обертку на кодах возврата и получаем точно ту-же функциональность что и "невозможна". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 19:04 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася Уткинiv_an_ruпропущено... По моему грустному опыту, попытки назвать "отладочным" код, остающийся в боевом экзешнике --- это обычно попытки обосновать меньшую тщательность отладки этого "отладочного" кода. А программулине и юзерам потом по барабану, как назывался тот код, который привёл к ошибке --- "отладочный" или ещё как. А как бы вы назвали этот код? И как обычно называете остающийся в боевом экзешнике код, который обрабатывает серьёзные ошибки?Да никак :) Во-первых, серьёзная ошибка обрабатывается директором пользователя, когда он пишет вендору письмо, что не будет продлять лицензию, или непосредственно юзером, который в открытом мэйллисте посылает вендора к митохондриальной праматери. А код в экзешние может обрабатывать особые случаи. Во-вторых, у нас в русском устоялось кривое понимание exception как то "исключение", которое "чрезвычайное" или "диковинное", хотя вообще-то оно просто вариант из "правило-исключение", оно не более, чем "не самая последняя ветка" в дереве правил. Изначальную дею окончательно похоронил уродский синтаксис try-catch, в котором catch почему-то оказался после try, хотя в любой основанной на продукциях / правилах переписывания / name-it-yourself системе исключения из общих правил пишутся, само собой, перед общими правилами, просто потому, что условия для применения исключений проверяются до применения общего правила. В третьих, когда терминология успешно переведена с русского языка на русский, становится нагляднее простая мысль. Код для обнаружения/обработки особых случаев ничем принципиально не отличается от кода, работающего в случае, если ничего особого нет (либо если "особость" ситуации вовремя не обнаружена, и NULL-ёвый указатель на неоткрытый файл ехидно ухмыляется в ожидании fwrite()). И никакого особого названия он поэтому не требует, достаточно сказать, чем этот код занимается. Это может быть код журналирования событий, код монитора, код перераспределения ресурсов на лету, код системы кортроля доступа, код защиты данных от скрытой порчи, код для плавной деградации, код для того, код для сего или код для всего этого разом :) И только "отладочного" кода там нет, потому что он на одну половину обёрнут в #ifdef DEBUG, а на вторую --- в #ifndef NDEBUG, и в любом случае в релизе его вообще нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 19:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Addxlog_hereПредполагается, что строк одинаково или почти одинаково, понятность тоже не отличается. Преимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает? Замечательный критерий выбора ЯП - число строк и "понятность". Предлагаю: Например: f1(ln(число строк кода)) + f2(критерий понятности, от 1 до 10) меньше 1 - C, больше 1 - C++, а если единица - пиши на ассемблере. С предложениями опоздал. Есть в Метриках Холстеда: - Difficulty - Time to understand Кстати сорцы С и С++ с исключениями я-бы предложил прогнать через анализатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 19:58 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlНе надо путать обертки и вынос повторяющегося кода в функцию. Так в данном случае обертка имеет несколько назначений. Одно из них - это устранение дублирования кода. Потому что в оригинальном примере примерно половина кода - это дублирование конструкции Код: plaintext 1. 2. То, что вас это не смущает, и вы копипастите этот паттерн по всему проекту, вместо того чтобы вынести в функцию (тут даже не про исключения речь, а просто об элементарном повторном использовании кода), вполне объясняет ваше непонимание почему код, который, я привел, намного более простой, читаемый и сопровождаемый. Не удивлюсь если вообще большинство кода в ваших проектах - копипаста в индусском стиле. White OwlИ как именно? Добавлением параметра в обертку? Или выключением-включением verbose флага? Вы даже не хотите капельку подумать. Понимаю. Копипаста проще. Скопировал - отредактировал. Нафиг проектировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2017, 21:28 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Предлагаю не скатываться до обидок. Оба подхода имеют право на жизнь - квалификация спорщиков это только подтверждает. Тем не менее, подолью маслица в огонь - на каком фреймворке базируетесь - те методики и стоит применять. А если пишется с нуля - каждый себе господин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 00:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruВася Уткинпропущено... А как бы вы назвали этот код? И как обычно называете остающийся в боевом экзешнике код, который обрабатывает серьёзные ошибки?Да никак :) Во-первых, серьёзная ошибка обрабатывается директором пользователя, когда он пишет вендору письмо, что не будет продлять лицензию, или непосредственно юзером, который в открытом мэйллисте посылает вендора к митохондриальной праматери. А код в экзешние может обрабатывать особые случаи. Во-вторых, у нас в русском устоялось кривое понимание exception как то "исключение", которое "чрезвычайное" или "диковинное", хотя вообще-то оно просто вариант из "правило-исключение", оно не более, чем "не самая последняя ветка" в дереве правил. Изначальную дею окончательно похоронил уродский синтаксис try-catch, в котором catch почему-то оказался после try, хотя в любой основанной на продукциях / правилах переписывания / name-it-yourself системе исключения из общих правил пишутся, само собой, перед общими правилами, просто потому, что условия для применения исключений проверяются до применения общего правила . В третьих, когда терминология успешно переведена с русского языка на русский, становится нагляднее простая мысль. Код для обнаружения/обработки особых случаев ничем принципиально не отличается от кода, работающего в случае, если ничего особого нет (либо если "особость" ситуации вовремя не обнаружена, и NULL-ёвый указатель на неоткрытый файл ехидно ухмыляется в ожидании fwrite()). И никакого особого названия он поэтому не требует, достаточно сказать, чем этот код занимается. Это может быть код журналирования событий, код монитора, код перераспределения ресурсов на лету, код системы кортроля доступа, код защиты данных от скрытой порчи, код для плавной деградации, код для того, код для сего или код для всего этого разом :) И только "отладочного" кода там нет, потому что он на одну половину обёрнут в #ifdef DEBUG, а на вторую --- в #ifndef NDEBUG, и в любом случае в релизе его вообще нет. Ну вот, взяли и назвали часть какого-то кода: "Код для обнаружения/обработки особых случаев", хотя он ничем и не отличается от остального :) В общем-то да, это разные вещи: отладочный код одно, а код, который генерирует внятные сообщения для включения их пользователями в баг-репорты - это другое - логирование ошибок. Кстати, а как-то можно изменить синтаксис try-catch, чтобы программа сначала проверяла исключения из правил, а только потом выполняла правила - содержимое блока try? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 01:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Мне тоже кажется странным сетование Ивана по поводу блока catch? Что за принцип name-it-yourself? Как по его мнению должен выглядеть наш пример с ODBC ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 01:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonЧто за принцип name-it-yourself?Это не принцип, это просто оборот речи, "называйте это так, как вам удобнее, суть все равно не меняется". maytonКак по его мнению должен выглядеть наш пример с ODBC ?По его мнению (или Его высочайшему мнению? :), ODBC --- часть инфраструктуры вокруг SQL и "...PL", правильно? Логично посмотреть, а как примеры вроде вот этого соединения с ODBC оформляются в этих самых "...PL"? А там всё как раз логично, сначала catch-блоки, потом try-код. Код: plsql 1. 2. 3. 4. 5. 6. И только в совсем-совсем убогих и древних начинается кондовый фортрановский бардак: Код: plsql 1. 2. 3. 4. и фортрановость заключается в том, что --- либо для обработчиков не находится никакого места в коде, кроме как в хвосте, что некрасиво, --- либо нужен goto сразу после всех whenever, что ещё менее красиво и требует лишней перфокарты. То есть код структурирован от частных случаев к общим. Сравните с надоевшим всем Код: plaintext 1. 2. 3. 4. 5. Это не значит, что код должен быть структурирован так в абсолютно всех случаях, "главное правило дизайна гласит, что из любого правила дизайна бывают исключения", но обычный программист может всю жизнь проработать, так ни разу и не наткнувшись на необходимость в другой логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 06:25 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася УткинНу вот, взяли и назвали часть какого-то кода: "Код для обнаружения/обработки особых случаев", хотя он ничем и не отличается от остального :)Вы правы, стилистический ляп. Надо было написать "ветка для обнаружения/обработки особых случаев...", тем более что дерево правил уже было помянуто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 06:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskydbpatchчто элементарнее может быть NDEBUG и assert(), какие еще исключения? Ждем теперь реализацию того же кода на ассертах. Ну чисто чтоб поржать над убогими сишниками ))) ты лично можешь начинать смеяться прямо сейчас, не вижу принципиальной разницы, и так и так - это беспричинный смех, признак сам знаешь чего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 15:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatch, Интересно, что из моего комментария было написано так двусмысленно, что дало вам повод написать этот ответ? Особенно если коммент про код, остающийся в релизном экзешнике, а ответ --- про "говорят про необходимость удаления отладочного кода" (цвет мой). авторПо моему грустному опыту, попытки назвать "отладочным" код, не совсем было понятно, оставляете ли вы отладночный код, не оставляете, и с чем вообще был там неуспешный или даже успешный опыт. на собственной практике можно сказать - доля assert() и NDEBUG в любом проекте более 10к строк со временем объективно стремится к нулю - то, что раньше считалось assert()-ом в условиях большого проекта без возможности соблюдения контрактов рано или поздно перекочевывает в верификации ввода (т.е. становится неотключаемым в релизе), а всякие стресс и перф. тесты просто выносятся в отдельные модули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 15:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruЛогично посмотреть, а как примеры вроде вот этого соединения с ODBC оформляются в этих самых "...PL"? А там всё как раз логично сначала catch-блоки, потом try-код. Вот с этого момента - непонятно. Что логично? Сначала catch-блоки? Почему? Где хотя-бы рациональное объяснение? Goto "назад" это логично? Или логично следование традициям pascal-подобным языкам где есть блок "declare" ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 21:25 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, Что-то мне это напомнило ON ENDFILE(SYSIN) GOTO FINISH; :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 22:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytoniv_an_ruЛогично посмотреть, а как примеры вроде вот этого соединения с ODBC оформляются в этих самых "...PL"? А там всё как раз логично сначала catch-блоки, потом try-код. Вот с этого момента - непонятно. Что логично? Сначала catch-блоки? Почему? Где хотя-бы рациональное объяснение? Goto "назад" это логично? Или логично следование традициям pascal-подобным языкам где есть блок "declare" ... ? Там не просто catch-блоки сначала, а предлагается сначала в catch-блоках проверять состояния до того, как эти состояния вычислены в try-блоке. iv_an_ru условия для применения исключений проверяются до применения общего правила . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 23:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Дизайн бай контракт переизобрели? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 23:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytoniv_an_ruЛогично посмотреть, а как примеры вроде вот этого соединения с ODBC оформляются в этих самых "...PL"? А там всё как раз логично сначала catch-блоки, потом try-код. Вот с этого момента - непонятно. Что логично? Сначала catch-блоки? Почему? Где хотя-бы рациональное объяснение? Goto "назад" это логично?Совсем логично было бы написать все обрабочики особых случаев не сверху и не снизу а сбоку, как в SDL/GR. Goto "назад" выглядит плохо, но он выглядит _лучше_, чем goto-невидимка, о существовании которого можно узнать только дочитав до catch-ей в конце. Кроме того, никто не мешает вам написать define continue/exit handler всего на одну строчку выше того места, где вы ожидаете получить особое состояние, так что goto "далеко назад" --- не самая частая вещь. maytonИли логично следование традициям pascal-подобным языкам где есть блок "declare" ... ?П осинтаксису языка, совершенно необязательно писать все define...handler в виде единого блока. Просто "оно само так получается". Наоборот, сишный try-catch вносит ненужное разнообразие. Вот есть у вас функция, которая получает блок данных предположительно соответствующих некоему формату, и пихает их в новый файл. Есть у неё два регулярно встречающихся особых случая. Один --- несоответствие формату, что проверяется вызовом валидатора перед открытием файла, и второй --- errno в файловой операции. Почему ветки кода для них должны быть записаны в разных концах функции? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 07:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rumaytonпропущено... Вот с этого момента - непонятно. Что логично? Сначала catch-блоки? Почему? Где хотя-бы рациональное объяснение? Goto "назад" это логично?С овсем логично было бы написать все обрабочики особых случаев не сверху и не снизу а сбоку, как в SDL/GR. Goto "назад" выглядит плохо, но он выглядит _лучше_, чем goto-невидимка, о существовании которого можно узнать только дочитав до catch-ей в конце. Кроме того, никто не мешает вам написать define continue/exit handler всего на одну строчку выше того места, где вы ожидаете получить особое состояние, так что goto "далеко назад" --- не самая частая вещь. maytonИли логично следование традициям pascal-подобным языкам где есть блок "declare" ... ?П осинтаксису языка, совершенно необязательно писать все define...handler в виде единого блока. Просто "оно само так получается". Наоборот, сишный try-catch вносит ненужное разнообразие. Вот есть у вас функция, которая получает блок данных предположительно соответствующих некоему формату, и пихает их в новый файл. Есть у неё два регулярно встречающихся особых случая. Один --- несоответствие формату, что проверяется вызовом валидатора перед открытием файла, и второй --- errno в файловой операции. Почему ветки кода для них должны быть записаны в разных концах функции? :) Вообще-то совсем логично иметь среду, которая от тебя вообще не требует написания каких-то там обработчиков. От слова совсем. Никаких, нигде. Потому что программист - он оптимист, он думает только о том, как его решение успешно пройдет шаги, а думать на каждом шаге "ой, а что тут может случиться" - слишком утомительно для нашей бренной и короткой жизни. А освобождением ресурсов может заниматься менеджер ресурсов, как самый крайний вариант - операционная система - она освободит и хенлы, и память. И это единственный тру способ (помереть процессу), если, конечно, ты не пишешь GUI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 16:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchИ это единственный тру способ (помереть процессу), если, конечно, ты не пишешь GUI А если в демоне происходит, ну допустим ошибка в одном подкюченных сеансов - это тоже помереть? Вместе с тысячами других сеансов, где не было ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 16:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchПотому что программист - он оптимист, он думает только о том, как его решение успешно пройдет шаги, а думать на каждом шаге "ой, а что тут может случиться" - слишком утомительно для нашей бренной и короткой жизни.Пока в отрасли так много оптимистов, я могу не переживать насчёт будущей зарплаты --- квалифицированные пессимисты всегда будут востребованы :) А исцеляется оптимизм одним простым способом, про который я уже писал. Оптимист АСУчивает газораспределительный пункт, бригада оптимиста укрывается в складках местности, оптимист заходит в будку этого ГРП и с местного пульта всё включает. Ну, если доживёт до конца процесса, то всё включает, а если нет --- уж сколько успеет. Но это только начало лечения. Через два месяца он заезжает к котельной, питающейся через тот ГРП, и говорит машинистам, что если что-то в последнее время шло не так, то это именно из-за него оперативный персонал остался без премии за экономию топлива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 17:40 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskydbpatchИ это единственный тру способ (помереть процессу), если, конечно, ты не пишешь GUI А если в демоне происходит, ну допустим ошибка в одном подкюченных сеансов - это тоже помереть? Вместе с тысячами других сеансов, где не было ошибки? в том-то и дело, что это ок :) полезно иногда смотреть по сторонам, как у других людей сделано. к примеру в Erlang и PHP (внезапно) подобное поведение является by-design. прикладнику не доверяют вообще ничего, и чем быстрее его прикладуха помрет - тем меньше потенциальных дефектов она внесет в окружение, чего-то там пытаясь дергаться в блоках типа catch. а подчистой памяти и прочих хендлов займется кто-то иной (как вариант - вызывающая сторона). т.е. там можно конечно обрабатывать исключения, но в базовой философии - это как раз не нужно делать, live-to-die, умри молодым :) возвращаясь к "нашим баранам" - в Erlang все окружение полностью контролируется средой, dangling pointer не возможны в принципе, 100500 процессов это не тру процессы с точки зрения O/S, а самые обычные корутины и там это реально работает, ибо среда выполнения это все контролирует. в типовом C/С++ приложении ничего такого нет, и да, тебе в виде начального задания придется написать монитор процессов (запускатель, отстреливатель повисших, перезапускатель оных - для бедных - systemd). и ввести правило - один клиент, один процесс. и ввести понятие листенер-пуллер, спецпроцесс, который будет заниматься исключительно вопросом коммуникаций с клиентами и процессами-рабочими (для бедных - haproxy). а в остальном - хоть мы и не ищем легких путей, то в линупсах создание процесса ничем не дороже создания треда - это все делает метод clone(). просто после clone() для треда память остается разделяемой, а для clone() процесса память начинает работать через copy-on-write но в целом - создать процесс в наше время неприлично дешево, так что все нормуль, пилим нетленку дальше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchПотому что программист - он оптимист, он думает только о том, как его решение успешно пройдет шаги, а думать на каждом шаге "ой, а что тут может случиться" - слишком утомительно для нашей бренной и короткой жизни.Пока в отрасли так много оптимистов, я могу не переживать насчёт будущей зарплаты --- квалифицированные пессимисты всегда будут востребованы :) А исцеляется оптимизм одним простым способом, про который я уже писал. Оптимист АСУчивает газораспределительный пункт, бригада оптимиста укрывается в складках местности, оптимист заходит в будку этого ГРП и с местного пульта всё включает. Ну, если доживёт до конца процесса, то всё включает, а если нет --- уж сколько успеет. Но это только начало лечения. Через два месяца он заезжает к котельной, питающейся через тот ГРП, и говорит машинистам, что если что-то в последнее время шло не так, то это именно из-за него оперативный персонал остался без премии за экономию топлива. ой, страшно аж жуть. осталось душещипательную историю про танк, кувалду и медведей дописать, чтоб все прочувствовались. но а по теме что-то будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchAnatoly Moskovskyпропущено... А если в демоне происходит, ну допустим ошибка в одном подкюченных сеансов - это тоже помереть? Вместе с тысячами других сеансов, где не было ошибки? в том-то и дело, что это ок :) полезно иногда смотреть по сторонам, как у других людей сделано. к примеру в Erlang и PHP (внезапно) для вяще сумлящихся - в типовой связке LAMP именно так и сделано - один клиент на один процесс. apache по дефолту делает форк самого себя, плодит рабочие процессы - каждый процесс обрабатывает строго один запрос на раз и отдает результат головному процессу, который никогда не падает, ибо никогда не запускает прикладной код, а лишь управляет рабочими, ну и принимает входящие запросы, открывая и передавая рабочим сокеты. а проблему 100500 клиентов обычно решает рядом стоящий nginx - использовать апач для коммуникации с какой edge мобилкой за 2000 км слишком дорого - апачу проще отдать весь ответ nginx-у, а самому заняться другим клиентом-запросом, чем держать выделенный процесс десятки секунд просто для того, чтоб отдать десяток килобайт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchapache по дефолту делает форк самого себя, плодит рабочие процессы - каждый процесс обрабатывает строго один запрос на разВы бы хоть иногда заглядывали в актуальную документацию на актуальные версии. Просто потому, что в сочетании с вашей категоричностью, ваши устаревшие представления оставляют устрашающее впечатление. P.S. Не спорю, что шкурку с кошки можно обдирать разными способами, но это же не повод идти в крестовый поход за единственно правильную веру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovdbpatchapache по дефолту делает форк самого себя, плодит рабочие процессы - каждый процесс обрабатывает строго один запрос на разВы бы хоть иногда заглядывали в актуальную документацию на актуальные версии. Просто потому, что в сочетании с вашей категоричностью, ваши устаревшие представления оставляют устрашающее впечатление. P.S. Не спорю, что шкурку с кошки можно обдирать разными способами, но это же не повод идти в крестовый поход за единственно правильную веру. ок, и что там изменилось? ps -ef|grep httpd ты уже запустил, или apache рассматриваешь исключительно на своей Windows машине? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchdbpatchпропущено... в том-то и дело, что это ок :) полезно иногда смотреть по сторонам, как у других людей сделано. к примеру в Erlang и PHP (внезапно) для вяще сумлящихся - в типовой связке LAMP именно так и сделано - один клиент на один процесс. apache по дефолту делает форк самого себя, плодит рабочие процессы - каждый процесс обрабатывает строго один запрос на раз и отдает результат головному процессу, который никогда не падает, ибо никогда не запускает прикладной код, а лишь управляет рабочими, ну и принимает входящие запросы, открывая и передавая рабочим сокеты. а проблему 100500 клиентов обычно решает рядом стоящий nginx - использовать апач для коммуникации с какой edge мобилкой за 2000 км слишком дорого - апачу проще отдать весь ответ nginx-у, а самому заняться другим клиентом-запросом, чем держать выделенный процесс десятки секунд просто для того, чтоб отдать десяток килобайтИменно поэтому апач --- это такая единица измерения скорости. Один апач. Один килоапач. А всякие толстые СУБД норовят отвечать веб-клиенту в нитке того же процесса, в котором живут данные и крутятся хранимки. Если ресурсов дофигищща, а скорость не важна, то вопрос "на C или на C++" вообще не стоит. Писать на Java/Perl/PHP... да на чём угодно, где есть подходящие к предметной области библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:44 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchв типовом C/С++ приложении ничего такого нет, и да, тебе в виде начального задания придется написать монитор процессов (запускатель, отстреливатель повисших, перезапускатель оных - для бедных - systemd). Кажется ваша компания обанкротится раньше, чем вы напишете первую полезную строчку кода. Вы как уже, дописали все эти мониторы или вот-вот? dbpatchи ввести правило - один клиент, один процесс. Какой лимит на количество процессов в линуксе, в курсе? Какой оверхед процесса по сравнению с вызовом функции, в курсе? dbpatchа проблему 100500 клиентов обычно решает рядом стоящий nginx А nginx-у извините тоже падать если что? Или его пишем по своим правилам? А монитор процессов, кстати, тоже падает на каждый чих?))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchв том-то и дело, что это ок :) Проблема в том, что это ОК только в 0.01% всех приложений. И человек умеющий только в таком стиле писать программы будет очень долго искать работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:51 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchок, и что там изменилось? ок, согласен, иногда полезно вспомнить давно закрытый вопрос. да, действительно, по дефолту в apache 2.4 стоит выбор event (внезапно), включать prefork нужно вручную. работать с преднастроенными образами - оно да, расслабляет. тем не менее, рассматривать event и worker я бы не стал, эти костыли нужны только если у тебя нет nginx/haproxy, а не иметь их могут себе позволить лишь совсем стартапы, с мини трафиком в сотню запросов за сутки. а вот иметь их для app server, а не статической раздавалки файлов - это уже как минимум странно. впрочем, клиент спишет на провайдера, да? но при наличии nginx использовать apache как CDN.... короче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 18:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskydbpatchв том-то и дело, что это ок :) Проблема в том, что это ОК только в 0.01% всех приложений. И человек умеющий только в таком стиле писать программы будет очень долго искать работу. не все пишут GUI на С++, как ты :) в остальном - извини, но даже LAMP - это никак не 0.01% приложений, так что мимо, все как раз ок. плюс на описанном мной ок принципе, внезапно, работает Oracle, и, ЕМНИП, даже постгрес https://www.postgresql.org/docs/9.1/static/tutorial-arch.html и это тоже как-то вовсе не 0.01%. так что у тебя или проблемы с пониманием сказанного (это ок, если ты совсем начинающий) или с кругозором (это уже не ок) опять же - падать положено именно при отлове необработанного исключения. исключения как разновидность обрабатывамых кодов возврата (когда код возврата не ок это для приложения ожидаемо и очень ок) - это наверное нормально, падать в кору там не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch...костыли нужны только если у тебя нет nginx/haproxy, а не иметь их могут себе позволить лишь совсем стартапы, с мини трафиком в сотню запросов за сутки. http://dbpedia.org/sparql безо всяких проксей обмолачивает по десятку миллионов запросов в сутки ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatch...костыли нужны только если у тебя нет nginx/haproxy, а не иметь их могут себе позволить лишь совсем стартапы, с мини трафиком в сотню запросов за сутки. http://dbpedia.org/sparql безо всяких проксей обмолачивает по десятку миллионов запросов в сутки ;) и что с того? даже IIS такое может. если у тебя приложение стабильно и отлажено годами, то даже схема с multi-thread unmanaged web c++ single-process server будет работать, и даже стабильно, и даже недеями. здесь же вопрос о том, как построить среду, который будет запускать априори unstable решения - прикладной код, который пишет один девелопер, и второй - не факт что хоть когда-нибудь ревьювит, а регрессионных и прочих тестов нет вообще. причем так, чтоб и зависания сами решались, и утечки памяти - тоже сами как-то устранялись и не били OOM killerом по первым попавшимся под руку и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchили apache рассматриваешь исключительно на своей Windows машине?Когда я администрировал "свою windows машину" - она работала. Что характерно - ничуть не хуже линуксов и, что характерно - справлялась больше, чем со ста запросами в сутки. Т.е. ваши оценки они не просто порочны - они качественно порочны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchне все пишут GUI на С++, как ты :) Вы ошиблись. Это другой известный сишник перешел на С++ чтобы писать гуй. Он тут модером подрабатывает )) dbpatchно даже LAMP - это никак не 0.01% приложений, так что мимо Это платформа, на которой приложения пишутся на скриптах, где никто не падает, а нормально показывает ошибки прямо в скрипте (поделки школьников не в счет). Так что да - мимо ))) dbpatchплюс на описанном мной ок принципе, внезапно, работает Oracle, и, ЕМНИП, даже постгрес https://www.postgresql.org/docs/9.1/static/tutorial-arch.html Они создают процесс на клиент, но не падают на чихи, т.к. не достаточно завершить процесс, а надо откатить транзациию. А это не одна строчка кода. Так что это нифига не ваш принцип. А ваш принцип простой: программа должна работать в тепличных условиях, а если условия минимально не те, то это не ваши проблемы. Такой принцип очень удобен для программистов создающих программы которыми никто не пользуется ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:19 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchплюс на описанном мной ок принципе, внезапно, работает Oracle Внезапно Oracle работает по-разному, в зависимости от настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schidbpatchплюс на описанном мной ок принципе, внезапно, работает Oracle Внезапно Oracle работает по-разному, в зависимости от настроек. да нет там никаких таких настроек. опцию многотредовости экспериментально запилили лишь в 12-й версии, именно как опцию, в ближайшие несколько лет это out-of-scope по дефолту там тот-же самый single-thread single-process-per-client-session вариант "сервера" под Windows я рассматривать не буду - у кого это работает, тот молодец, честь, хвала и совесть нашей эпохи, значок ГТО и грамота как передовику производства. сам же я подожду когда они доделают туда работоспособный bash и остальное окружение (подвижки в WSL есть, Clang/C2 в WS это пять, но пока это только эксперименты для гиков) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskydbpatchне все пишут GUI на С++, как ты :) Вы ошиблись. Это другой известный сишник перешел на С++ чтобы писать гуй. Он тут модером подрабатывает )) тебе же хуже, значит ты просто не умеешь писать серверы на C++ Anatoly Moskovskydbpatchно даже LAMP - это никак не 0.01% приложений, так что мимо Это платформа, на которой приложения пишутся на скриптах, где никто не падает, а нормально показывает ошибки прямо в скрипте (поделки школьников не в счет). Так что да - мимо ))) Нет не мимо, в LAMP worker-ы даже если не упадут внезапно, то монитором рано или поздно будут перезапущены. Ибо есть падения, а есть еще и утечки (и памяти, и хендлов). Которые не только школьники оставляют. Так что да, ты опять мимо, изучи уже основы. Anatoly Moskovskydbpatchплюс на описанном мной ок принципе, внезапно, работает Oracle, и, ЕМНИП, даже постгрес https://www.postgresql.org/docs/9.1/static/tutorial-arch.html Они создают процесс на клиент, но не падают на чихи, т.к. не достаточно завершить процесс, а надо откатить транзациию. А это не одна строчка кода. Так что это нифига не ваш принцип. у тебя я смотрю фундаментальная дырища в знаниях. если оракловской процесс упадет по ORA-600, кто за него будет откатывать транзакцию? а если подумать? Anatoly MoskovskyА ваш принцип простой: программа должна работать в тепличных условиях, а если условия минимально не те, то это не ваши проблемы. Такой принцип очень удобен для программистов создающих программы которыми никто не пользуется ))) Ты опять ничего не понял. Ну что за тормоза, соберись уже! Я говорил, который раз, что падать нужно на неожиданном исключении, потому что шанс, что прикладной (а не системный) код сможет нормально восстановиться от неожиданного исключения - минимален, ибо прикладной программист просто не парится написанием и тем более отладкой обработчиков. Он как раз и ожидает вечно тепличных условий - у него других не бывает. Даже QA или тестер для прикладника уже разновидность катастрофы - чуть юзер не ту кнопку нажал, оопс, корка полилась. И они там дружно лишь купируют проблему ненадежного софта, делая подпорки и костыли. Но перед любой новой потенциально нетестирумой проблемой этот ваш try/catch типа код так и остается беззащитен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:44 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskydbpatchв типовом C/С++ приложении ничего такого нет, и да, тебе в виде начального задания придется написать монитор процессов (запускатель, отстреливатель повисших, перезапускатель оных - для бедных - systemd). Кажется ваша компания обанкротится раньше, чем вы напишете первую полезную строчку кода. Вы как уже, дописали все эти мониторы или вот-вот? Да отлично все работает уже четвертый год, спасибо за заботу. Anatoly Moskovskydbpatchи ввести правило - один клиент, один процесс. Какой лимит на количество процессов в линуксе, в курсе? Какой оверхед процесса по сравнению с вызовом функции, в курсе? Ой господи, детский сад, штаны на лямках. Вна уже перестали проходить теорию массового обслуживания? Про очереди совсем не знаем? Или ты всерьез считаешь, что количество кассиров на кассах должно быть равно числу покупателей в торговом зале? Угар. Anatoly Moskovskydbpatchа проблему 100500 клиентов обычно решает рядом стоящий nginx А nginx-у извините тоже падать если что? Или его пишем по своим правилам? А монитор процессов, кстати, тоже падает на каждый чих?))) С какого перепугу? nginx априори стабилен, там нет прикладного кода, все переходы и диаграммы состояний детерменированы, там просто нечему падать, ибо круг его задач (и пространство падений) жестко ограничен. nginx/haproxу это просто дистпетчеры запросов - они держат всю keep-alive поднаготную с клиентами, строят keep-alive (уже свои, не имеющие ничего общего с клиентскими) с apache серверами и занимаются высокоуровневой маршрутизацией запросов. Т.е. 100500 висящих клиентских сессий на nginx спокойно могут обслуживаться всего десятком процессов на apache (читаем про реализацию comet серверов на nginx в т.ч., хотя это отдельно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 19:49 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchи ввести правило - один клиент, один процесс. dbpatchИли ты всерьез считаешь, что количество кассиров на кассах должно быть равно числу покупателей в торговом зале? «Одной из разновидностей шизофренического раздвоения личности выступает агрессивное и истерическое требование чего-либо у самого себя с принципиальным и систематическим отказом себе» Общая психиатрия, М., 1966 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 20:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася Уткинdbpatchи ввести правило - один клиент, один процесс. dbpatchИли ты всерьез считаешь, что количество кассиров на кассах должно быть равно числу покупателей в торговом зале? «Одной из разновидностей шизофренического раздвоения личности выступает агрессивное и истерическое требование чего-либо у самого себя с принципиальным и систематическим отказом себе» Общая психиатрия, М., 1966 себя проверить не пробовал? речь идет не про 100500 клиентов, которые пришли с запросами, а про тех, кого в момент времени обрабатывает процесс-сервер. остальные - стоят в очереди, ждут свободного обработчика. причем за очередь отвечает совсем другой процесс, который не падает. уже в третий раз поясняю - отдельный процесс, висит, занимается общением с клиентами, держит открытые сокеты. никогда не падает. каждый клиентский запрос отправляет любому доступному из 10 заранее созданных процессов обработчиков. если свободных нет - все дружно стоят в очереди, ждут следующего освободившегося обработчика. так работает любая не шизофреническая огранизация - от банков, магазинов до каких ЕРКЦ. и это нормально, число обработчиков должно быть фиксировано, ибо рост числа оных лишь уменьшит общую пропускную способность - они будут мешать друг другу в борьбе за общие ресурсы (в реальной жизни - в борьбе за, к примеру, общий принтер в зале, в виртуальной - за диск, свободную память, процессор, за базу данных, т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 20:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruП осинтаксису языка, совершенно необязательно писать все define...handler в виде единого блока. Просто "оно само так получается". Наоборот, сишный try-catch вносит ненужное разнообразие. Вот есть у вас функция, которая получает блок данных предположительно соответствующих некоему формату, и пихает их в новый файл. Есть у неё два регулярно встречающихся особых случая. Один --- несоответствие формату, что проверяется вызовом валидатора перед открытием файла, и второй --- errno в файловой операции. Почему ветки кода для них должны быть записаны в разных концах функции? :) Иван! Вы - хитрый баламут! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 23:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchAnatoly Moskovskyпропущено... А если в демоне происходит, ну допустим ошибка в одном подкюченных сеансов - это тоже помереть? Вместе с тысячами других сеансов, где не было ошибки? в том-то и дело, что это ок :) полезно иногда смотреть по сторонам, как у других людей сделано. к примеру в Erlang и PHP (внезапно) подобное поведение является by-design. прикладнику не доверяют вообще ничего, и чем быстрее его прикладуха помрет - тем меньше потенциальных дефектов она внесет в окружение, чего-то там пытаясь дергаться в блоках типа catch. а подчистой памяти и прочих хендлов займется кто-то иной (как вариант - вызывающая сторона). т.е. там можно конечно обрабатывать исключения, но в базовой философии - это как раз не нужно делать, live-to-die, умри молодым :) возвращаясь к "нашим баранам" - в Erlang все окружение полностью контролируется средой, dangling pointer не возможны в принципе, 100500 процессов это не тру процессы с точки зрения O/S, а самые обычные корутины и там это реально работает, ибо среда выполнения это все контролирует. Ну... при слове Erlang я напрягся как тигр перед броском. Этот язык или парадигма вызывает у меня смесь удивления и восхищения. Но я прошу заметить что писать Erlang и PHP через запятую не стоит. Слишком велика разница. В тему обработки исключений. Нам не достаточно "пристреливать" процесс в случае краха Http request. В большинстве высокоуровневых языков нам надо принимать решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 23:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ru Код: plsql 1. 2. 3. 4. 5. 6. Кстати по ходу мимо я замечу что в этом фрагменте кода нет иерархии обработчиков исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 23:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchа проблему 100500 клиентов обычно решает рядом стоящий nginx - использовать апач для коммуникации с какой edge мобилкой за 2000 км слишком дорого - апачу проще отдать весь ответ nginx-у, а самому заняться другим клиентом-запросом, чем держать выделенный процесс десятки секунд просто для того, чтоб отдать десяток килобайт Мне как-то пришлось пообщаться с игроделами которые кодят MMORG. (Клиент на Unity, сервер - на Java). Так вот они везде используют netty. Это веб-сервер и сокет сервер, работа которого базируется на том что потоки привязаны не к сокетам а к т.н каналу (channel) сетевого стека. Это мультиплексированный I/O только в концепции java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 23:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchС какого перепугу? nginx априори стабилен, там нет прикладного кода, все переходы и диаграммы состояний детерменированы, там просто нечему падать, ибо круг его задач (и пространство падений) жестко ограничен. Ггггг. Был у меня один знакомый, который утверждал что в его коде нет ошибок, потому что он применяет определенный метод разработки. Естественно там был баг на баге. Чувствую вы братья. По слепоте )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 23:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася Уткинdbpatchи ввести правило - один клиент, один процесс. dbpatchИли ты всерьез считаешь, что количество кассиров на кассах должно быть равно числу покупателей в торговом зале? «Одной из разновидностей шизофренического раздвоения личности выступает агрессивное и истерическое требование чего-либо у самого себя с принципиальным и систематическим отказом себе» Общая психиатрия, М., 1966 Согласен. Болеет или пьет! Требуется доктор Ливси. Кстати у меня год назад вышел конфликт с людьми, утверждающими, что проверка "черного ящика" по методу КА - идеальный метод, исключающий отладку. В итоге я вспомнил начала комбинаторики и показал, что проверка КА есть функция с факториальной зависимостью от числа входных параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 00:49 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytoniv_an_ru Код: plsql 1. 2. 3. 4. 5. 6. Кстати по ходу мимо я замечу что в этом фрагменте кода нет иерархии обработчиков исключений.Ну вот, не дали приврать для красоты :( Вы правы, очень немногие системы не поленятся сами отсортировать хандлеры по иерархии в луче кода. И в чём-то их авторов можно понять. Во-первых, при добавлении сортировки теряется совместимость по ошибкам с системами более ленивых авторов. Во-вторых, синтаксис не запрещает кодеру хранимок написать маразм, с которым просто непонятно, что делать: Код: plsql 1. 2. 3. 4. 5. Обработчик №1 должен быть глубже в стеке, чем обработчик №2, ведь "xxxxx" --- более частный случай, чем "xx*". В то же время Обработчик №2 должен быть глубже в стеке, чем обработчик №1, ведь "xx*" --- более частный случай, чем "*". И нельзя неявно заменить на Код: plsql 1. 2. 3. 4. 5. 6. и отсортировать, потому что для этого надо написать процедуру клонирования кода, а на это никто времени не даст. Тупо скопировать нельзя --- если в обработчике есть метка и goto, то после копирования будет ошибка duplicate label :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 05:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchздесь же вопрос о том, как построить среду, который будет запускать априори unstable решения - прикладной код, который пишет один девелопер, и второй - не факт что хоть когда-нибудь ревьювит, а регрессионных и прочих тестов нет вообще. причем так, чтоб и зависания сами решались, и утечки памяти - тоже сами как-то устранялись и не били OOM killerом по первым попавшимся под руку и т.п.Safe code и GC в богомерзких .Net/Java всех спасут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 10:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Ещё бывают списки исключений, упомяну об этом навсякий. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 10:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskydbpatchС какого перепугу? nginx априори стабилен, там нет прикладного кода, все переходы и диаграммы состояний детерменированы, там просто нечему падать, ибо круг его задач (и пространство падений) жестко ограничен. Ггггг. Был у меня один знакомый, который утверждал что в его коде нет ошибок, потому что он применяет определенный метод разработки. Естественно там был баг на баге. Чувствую вы братья. По слепоте )) любой код имеет те или иные баги и недоработки. в данном контексте (принцип построения отказоустойчивого софта) мы принимаем "контракт" - что этот компонент стабилен, просто потому что мы не вносим туда свой новый чудный нетестированный неотревьювленный прикладной код, который может его поломать разрушив стек вызова или погуляв указателем. это просто отказо-дуркакоустойчивый системный компонент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 12:54 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytondbpatchпропущено... в том-то и дело, что это ок :) полезно иногда смотреть по сторонам, как у других людей сделано. к примеру в Erlang и PHP (внезапно) подобное поведение является by-design. прикладнику не доверяют вообще ничего, и чем быстрее его прикладуха помрет - тем меньше потенциальных дефектов она внесет в окружение, чего-то там пытаясь дергаться в блоках типа catch. а подчистой памяти и прочих хендлов займется кто-то иной (как вариант - вызывающая сторона). т.е. там можно конечно обрабатывать исключения, но в базовой философии - это как раз не нужно делать, live-to-die, умри молодым :) возвращаясь к "нашим баранам" - в Erlang все окружение полностью контролируется средой, dangling pointer не возможны в принципе, 100500 процессов это не тру процессы с точки зрения O/S, а самые обычные корутины и там это реально работает, ибо среда выполнения это все контролирует. Ну... при слове Erlang я напрягся как тигр перед броском. Этот язык или парадигма вызывает у меня смесь удивления и восхищения. Но я прошу заметить что писать Erlang и PHP через запятую не стоит. Слишком велика разница. В тему обработки исключений. Нам не достаточно "пристреливать" процесс в случае краха Http request. В большинстве высокоуровневых языков нам надо принимать решение. Erlang как язык, ИМХО - полная ерунда. Я прочитал книги три по нему, и ни разу не "возбудился". Отсутсвие строк и даже for Там не сам язык интересен, а принципы, заложенные в его базовое окружение/фреймворк/библиотеку. Модель акторов, принцип обработки ошибок в т.ч. Они в книгах описаны общими словами, можно даже не проникаться чудным Prolog образным синтаксисом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 13:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Алексей Кdbpatchздесь же вопрос о том, как построить среду, который будет запускать априори unstable решения - прикладной код, который пишет один девелопер, и второй - не факт что хоть когда-нибудь ревьювит, а регрессионных и прочих тестов нет вообще. причем так, чтоб и зависания сами решались, и утечки памяти - тоже сами как-то устранялись и не били OOM killerом по первым попавшимся под руку и т.п.Safe code и GC в богомерзких .Net/Java всех спасут. Не спасут, увы. Потому что они там безграмотно сделаны - GC он общий на всех, freeze the world и прочие не прикольные штуки в догонку. Проблемы с сотнями гигабайт кучи (слишком долго чистится и т.п.). Причем оптимизационные припарки слабо помогают, сколько парни не тужатся. Тут кстати стоит вспомнить Erlang - вот там GC сделан на удивление правильно - в пределах контекста процесса (читай корутины). Т.е. память чистится не глобально системно, а именно в контексте евойных процессов, читай - запросов клиентов и эдаких укрупненных вызовов процедур. Т.е. переключили выполнение процесса (корутины), и в виде приятного дополнения вызвали подчистку памяти уже остановленного процесса, не останавливая всех остальных. Красота. А Java/.NET - фуфуфу, не респект. ARC (и SmartPointer в т.ч.) - тоже кстати не айс (промахи в кеши и в целом натужное рандомизированное хождение по объектам, хотя можно было бы "чистить" память одним махом - просто сбрасывая HWM в ноль в локальной куче завершившейся корутины/процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 13:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchJava/.NET - фуфуфу, не респект.Java много лет была сначала совсем фуфуфу, потом просто фуфуфу, а потом Solr наглядно продемонстрировал, что и на Яве уже можно писать очень быстрые и масштабируемые вещи, было бы умение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 13:26 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchJava/.NET - фуфуфу, не респект.Java много лет была сначала совсем фуфуфу, потом просто фуфуфу, а потом Solr наглядно продемонстрировал, что и на Яве уже можно писать очень быстрые и масштабируемые вещи, было бы умение. чуваки с одноклассников тоже продемонстрировали https://habrahabr.ru/company/odnoklassniki/blog/139185/ как говорится - с чего начали, туда и пришли. не убедительно. Java относительно хороша в классе веб приложений, прямо под них и заточена - относительно небольшой жизненный цикл веб реквеста позволяет быстренько нааллоцировать немного из кучи, и в конце так-же быстро прибить выделенное, пока оно не перекочевало в "долгую" кучу. собственно в таких классах приложений она и применяется в 95% случаев. а все попытки сделать на Java долгоиграющие базы данных закономерно закончились пшиком или около того. но вообще это офтопик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 13:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Развели флудильню... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 15:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchJava/.NET - фуфуфу, не респект.Java много лет была сначала совсем фуфуфу, потом просто фуфуфу, а потом Solr наглядно продемонстрировал, что и на Яве уже можно писать очень быстрые и масштабируемые вещи, было бы умение. Ну, там же теперь Гай Стил заправляет, так что делает из говна конфетку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 17:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchJava относительно хороша в классе веб приложений, прямо под них и заточена - Ну не надо, а? Заточена она под программирование утюгов и сковородок. Для Web-приложений она -- не, ну применяется наверное иногда, но всё меньше и меньше. Она для WEB-приложений малоудобна. Для возможности разработки бизнес -приложений (т.н. бэкендов) на Java было сделано много усилий, и в этой нише она пока ещё вроде бы держится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 17:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivdbpatchJava относительно хороша в классе веб приложений, прямо под них и заточена - Ну не надо, а? Заточена она под программирование утюгов и сковородок. Для Web-приложений она -- не, ну применяется наверное иногда, но всё меньше и меньше. Она для WEB-приложений малоудобна. Для возможности разработки бизнес -приложений (т.н. бэкендов) на Java было сделано много усилий, и в этой нише она пока ещё вроде бы держится. я не имел в виду апплеты. а "бэкэнды" они в большинстве случаев веб ориентированные, в конечном итоге, так что не надо. если вон глянуть все актуальные (развивающиеся в последнее время библиотеки) для Java - то там web торчит практически повсеместно (от Spring и далее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 17:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchJava относительно хороша в классе веб приложений, прямо под них и заточена - относительно небольшой жизненный цикл веб реквеста позволяет быстренько нааллоцировать немного из кучи, и в конце так-же быстро прибить выделенное, пока оно не перекочевало в "долгую" кучу. собственно в таких классах приложений она и применяется в 95% случаев. а все попытки сделать на Java долгоиграющие базы данных закономерно закончились пшиком или около того. Cassandra - достаточно долгоиграющая. И непонятно что там и где закончилось "пшиком". И где есть манифест или нота о том что дескыть "пшик" объявлен. Ох вы и плут, коллега... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2017, 20:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivЗаточена она под программирование утюгов и сковородок. Для Web-приложений она -- не, ну применяется наверное иногда, но всё меньше и меньше. Она для WEB-приложений малоудобна.а что сейчас лучше для веб-приложений? Я новичок во всех этих веб-технологиях, но если на сервера приложений обычно деплоят war/ear-ники, то как дело обстоит с веб-приложениями, сделанными на других средствах? Btw, http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - рейтинг языков Go пора учить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 05:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytondbpatchJava относительно хороша в классе веб приложений, прямо под них и заточена - относительно небольшой жизненный цикл веб реквеста позволяет быстренько нааллоцировать немного из кучи, и в конце так-же быстро прибить выделенное, пока оно не перекочевало в "долгую" кучу. собственно в таких классах приложений она и применяется в 95% случаев. а все попытки сделать на Java долгоиграющие базы данных закономерно закончились пшиком или около того. Cassandra - достаточно долгоиграющая. И непонятно что там и где закончилось "пшиком". И где есть манифест или нота о том что дескыть "пшик" объявлен. Ох вы и плут, коллега... а есть ещё? кстати там как раз используются все нативные штучки работы с памятью , и стоило тогда использовать язык с GC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 08:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Кстати очень хорошо что был упомянут golang. Если мы обсуждали недостатки программирования try-catch то мы должны были выставить в сравнение Метод который принят в этом языке. Иван! Где вы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 08:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКстати очень хорошо что был упомянут golang. Если мы обсуждали недостатки программирования try-catch то мы должны были выставить в сравнение Метод который принят в этом языке. Иван! Где вы!Когда я смотрел на только-только свежеопубликованный go, в нём try-catch вообще не было. Ну, тоже метод :) Как там сейчас, через 10 лет --- не знаю, не смотрел, ибо что мне писать на платформе со stop-the-world GC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 08:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКстати очень хорошо что был упомянут golang. Если мы обсуждали недостатки программирования try-catch то мы должны были выставить в сравнение Метод который принят в этом языке. Иван! Где вы! ИМХО ужасно , нафиг такую муть и призывы Ивана по возврату к бейсику не особо поддерживаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 08:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruибо что мне писать на платформе со stop-the-world GC? А кто-нибудь смотрел устройство явовского GC? У меня подозрения, что он это минимум примитивный memory management + логика для определения моментов, когда/где/сколько чистить. И дальше мои подозрения: это никак не может быть быстрее, чем просто memory management. Т.о. можно как-то за счёт "опта" выгадать в быстродействии? Ну и, не знаю, гипотетическая логика этого GC как-то напрягает: допустим, у меня исполняется критический код, а ему вдруг вздумалось почистить память... или это всё мелочи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rumaytonКстати очень хорошо что был упомянут golang. Если мы обсуждали недостатки программирования try-catch то мы должны были выставить в сравнение Метод который принят в этом языке. Иван! Где вы!Когда я смотрел на только-только свежеопубликованный go, в нём try-catch вообще не было. Ну, тоже метод :) Как там сейчас, через 10 лет --- не знаю, не смотрел, ибо что мне писать на платформе со stop-the-world GC? Мне кажется вы - гиперболизируете проблему stop-the-world. На чем вы кст. разрабатываете? На QNX? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Кстати по поводу детерминизма отклика обычного memory management. Представил себе казуальное С-приложение которое активно работает со строками разной длины (JSON?,XML?). И после некоторых эпох malloc/free структура памяти должна представлять собой "решето". И после затребования malloc чуть больше чем доступный непрерывный кусок мы незбежно должны войти в операцию дефрагментации. Разумеется это не идет в сравнение в stop-the-world управляемой вселенной .Net/Golang/Java но у меня возникают вопросы. Это реалтайм? А как много времени мы можем просидеть в этой секции? Какие регуляторные механизмы или хинты у нас есть в наличии? Разумеется я не предлагаю писать свои аллокаторы. Это вывело-бы спор о пользе и вреде GC на новый уровень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbiv_an_ruибо что мне писать на платформе со stop-the-world GC? А кто-нибудь смотрел устройство явовского GC? У меня подозрения, что он это минимум примитивный memory management + логика для определения моментов, когда/где/сколько чистить. Этих GC было много. Думаю что если нас интересует It-история или археология то мы должны начать с LISP. Ваши подозрения по поводу "сколько чистить" - не совсем корректны. Для Java чистится полностью все (в eden-space). То что имеет рефералов - просто переносится в другие spaces. Кстати это ставит вопрос о свободном пространстве на совершенно новый уровень. Для Java вообще нет понятия доступное или свободное пространство как таковое. Есть minimal footprint приложения которое вышло в стационарный режим и есть некие рабочие тренды плавающей части памяти (на графике они всегда видны как характерная "пила"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 09:39 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonТо что имеет рефералов - просто переносится в другие spacesэто ещё больше накладных расходов, получается. maytonРазумеется я не предлагаю писать свои аллокаторы.Если бы это дало прирост, то почему бы и нет? Другое дело, что в 99% случаев разработка своего аллокатора не нужна, потому что всё решается правильной организацией данных и продуманной работой с памятью в приложении. Да и объекты, которые связаны с работой с памятью (контейнеры) сейчас могут настраиваться и устраивать свой внутренний микро-мемори-менеджмент (например, сколько выделять памяти при исчерпании выделенных ресурсов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 10:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Основная проблема GC это асинхронность уборки. А в джаве еще к тому же и отсутсвие деструкторов (по выходу из области видимости). Это усложняет дизайн кода. А скорость GC там приемлемая для большинства задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 11:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКстати по поводу детерминизма отклика обычного memory management.Обычно он в диапазоне от "плохо" до "ужасно" :) Как по временам отклика, так и по фрагментации. Зато в хорошем случае он раздаёт почти всю память. Хочется детерминизм --- жертвуйте отношением "полезно" выделенной памяти к числу страниц, отожраных процессом и средним временем отклика, используя что-то вроде TLSF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 12:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА в джаве еще к тому же и отсутсвие деструкторов (по выходу из области видимости). В C# та же проблема, там порешали интерфейсом IDisposable и оператором using() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 13:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbmaytonТо что имеет рефералов - просто переносится в другие spacesэто ещё больше накладных расходов, получается. maytonРазумеется я не предлагаю писать свои аллокаторы.Если бы это дало прирост, то почему бы и нет? Другое дело, что в 99% случаев разработка своего аллокатора не нужна, потому что всё решается правильной организацией данных и продуманной работой с памятью в приложении. Да и объекты, которые связаны с работой с памятью (контейнеры) сейчас могут настраиваться и устраивать свой внутренний микро-мемори-менеджмент (например, сколько выделять памяти при исчерпании выделенных ресурсов) Нет. Работа java gc базируется на предположении что 99% аллокаций в eden space не переживут первую эпоху. Они будут удалены. Оставшийся процент выживших копируются в survival. Поскольку очистка eden это лёгкая Операция. По сути это обрушение счётчика. То мы считаем что здесь мы выиграли и дефрагментация eden нам не нужна. Разумеется это справедливо для стационарного режима приложения. Не для старта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 13:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TAnatoly MoskovskyА в джаве еще к тому же и отсутсвие деструкторов (по выходу из области видимости). В C# та же проблема, там порешали интерфейсом IDisposable и оператором using() если бы эти приблуды ещё память освобождали.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 13:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima Tпропущено... В C# та же проблема, там порешали интерфейсом IDisposable и оператором using() если бы эти приблуды ещё память освобождали....Экий вы еретик. Вам мало того, что там чего-то внутри происходит, вам ещё и конечный результат подавай? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 13:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Мне кажется в спорах о m.management можно выделить две крайности. Два антогонизма. 1. Мемори leaks вызванные ошибкай разработчика при обработке исключения или просто ошибкой. 2. Накладные расходы на управляемую кучу в виде стоп-вселенная и потребления мегафлопов. Оба тезиса имеют место. Но многие ораторы не ищут компромисса между 1 и 2 а просто доказывают Правильность линии свой партии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 13:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonCEMbпропущено... это ещё больше накладных расходов, получается. пропущено... Если бы это дало прирост, то почему бы и нет? Другое дело, что в 99% случаев разработка своего аллокатора не нужна, потому что всё решается правильной организацией данных и продуманной работой с памятью в приложении. Да и объекты, которые связаны с работой с памятью (контейнеры) сейчас могут настраиваться и устраивать свой внутренний микро-мемори-менеджмент (например, сколько выделять памяти при исчерпании выделенных ресурсов) Нет. Работа java gc базируется на предположении что 99% аллокаций в eden space не переживут первую эпоху. Они будут удалены. Оставшийся процент выживших копируются в survival. Поскольку очистка eden это лёгкая Операция. По сути это обрушение счётчика. То мы считаем что здесь мы выиграли и дефрагментация eden нам не нужна. Разумеется это справедливо для стационарного режима приложения. Не для старта. это называется TLAB https://shipilev.net/jvm-anatomy-park/4-tlab-allocation/ именно заточка под классическое web приложение (сервлет) - тред получил запрос, нааллоцировал себе в TLAB, ответ отдал, все в TLAB прибил. а вот GUI для приложения это уже не работает, и именно поэтому все эти ваши Java IDE отличаются абсолютно непредсказуемыми тормозами. при этом отдельный ржач - в продакшине есть даже методика, когда выключают принудительно очистку old-generation, дескать дешевле просто на выходных приложение рестартовать и заново загрузить кеши из базы данных. вполне себе подход, чо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 13:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchпри этом отдельный ржач - в продакшине есть даже методика, когда выключают принудительно очистку old-generation, дескать дешевле просто на выходных приложение рестартовать и заново загрузить кеши из базы данных. вполне себе подход, чо Вы наверное не в курсе. Вы просто не разрабатывали подобные приложения. Например ПО обработки equities, options имеет ярко выраженный сутошный лайф-цикл. Биржа открывается в определённое время суток. А потом закрывается. На момент закрытия приложение никому не нужно. И его можно ребутнуть. Какую из этого можно получить пользу? Я думаю - очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 21:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima Tпропущено... В C# та же проблема, там порешали интерфейсом IDisposable и оператором using() если бы эти приблуды ещё память освобождали.... То что написан Анатолий - требует уточнения. Формально Java language позволяет создать класс с деструктором. Однако вам будет нелегко придумать и обосновать полезный use-case где этот деструктор будет действительно необходим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 21:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonФормально Java language позволяет создать класс с деструктором. Мы здесь про деструкторы, а не про финалайзеры. maytonОднако вам будет нелегко придумать и обосновать полезный use-case где этот деструктор будет действительно необходим. Например, немедленное освобождение кратковременно используемых ограниченных ресурсов (всякие мьютексы, сокеты и тп, особенно в сочетании с JNI). Хотя по мне так сначала придется придумать и обосновать полезный use-case для использования джавы ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 23:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonФормально Java language позволяет создать класс с деструктором. Мы здесь про деструкторы, а не про финалайзеры. Вроде не пятница еще а вброс уже сделан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2017, 23:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonОба тезиса имеют место. Но многие ораторы не ищут компромисса между 1 и 2 а просто доказывают Правильность линии свой партии.Умные указатели разве не приводят к этому компромиссу? 1. Мы почти исключили вероятность ошибок, приводящих к ML 2. Мы можем не заниматься самостоятельной очисткой памяти, за нас это делают деструкторы. Но при этом мы сами может делать это в любой момент. Причём в плюсах этот механизм в разы гибче, чем в GC-языках. пятница наступила ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 07:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyМы здесь про деструкторы, а не про финалайзеры. В синтаксис C# замечательные грабли для новичков встроили: Код: c# 1. 2. 3. Выглядит как деструктор, но как деструктор не вызывается, потому что финализер. Кроме того MS в документации это деструктором называет . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:10 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Какие у вас претензии к финалайзеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima T, "Новички" описание языка читать пробовали? К с++ тоже относится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКакие у вас претензии к финалайзеру? Пользы от него ноль. Какие претензии могут быть к бесполезному? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonКакие у вас претензии к финалайзеру? Пользы от него ноль. Какие претензии могут быть к бесполезному? Ты можешь на C# написать пример как-бы ты хотел использовать финалайзер по "полезному" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
По поводу QNX. Иван решил отмолчаться. Ну ОК. Из топиков по сабж я могу вспомнить только мой спор с неким Petrav на тему ПО и самолетов. А также с Базистом по поводу создания СУБД с нулевым откликом. Вообще у меня сложилось стойкое впечатление что в форуме мало людей которые по существу могут пояснить, а зачем им собственно вообще нужен реал-тайм. Обычно в 99% бизнес задач такой вопрос вообще не стоит. Этот аспект может быть описан так называемых NFR (Non functional requirements) где-то одим из подпунктов. Там может быть что flow, заявки на покупку или продажу акций должен быть отработан не более чем за 300 мс. Но это будет требование только для нашей системы. Не для внешних микросервисов. Они могут лагать как им удобно. По поводу UI для систем с MM (managed memory). Для UI приложений написанных на Java, есть коробочная рекомендация - включать +UseConcMarkSweepGC. Навскиду не помню но кажется эта опция включена во все дефолтные конфигурации пусковых скриптиков bash для продуктов комании Jetbrains. Этого достаточно чтобы комфортно работать и не видеть т.н. stop-the-world о которых так много говорят в топике. P.S. Я прошу прощения что пишу только по Java. C .Net я давно не работал и не в курсе как там и чего. Если кто в теме - то дополните. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 08:49 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytoniv_an_ruпропущено... Когда я смотрел на только-только свежеопубликованный go, в нём try-catch вообще не было. Ну, тоже метод :) Как там сейчас, через 10 лет --- не знаю, не смотрел, ибо что мне писать на платформе со stop-the-world GC? Мне кажется вы - гиперболизируете проблему stop-the-world. На чем вы кст. разрабатываете? На QNX?На POSIX :) У нас одно время выходило примерно 40 релизов одной версии --- под разные платформы. Сейчас, слава Торвальдсу, почти все эти HP/UXы, AIX-ы и т.п. сошли с дистанции, зоопарк поменьше стал. С другой стороны, если учесть, что у нас своё --- управление памятью --- управление сокетами --- кластерный IPC --- диспетчеризация доступа к дискам ... и даже, к примеру, поддержка нитей на том железе, где OS их не имеет, а при этом нам надо не "настоящий" реал-тайм, а interactive/near-interactive, то QNX нам вовсе не обязателен. Один ньюанс. Статистику по нашим процессам top запросто показывает с суффиксом не "m", и не "g", а "t". Ни один GC не будет вести себя прилично, если в колонках VIRT и RES маячат суффиксы "t" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonВообще у меня сложилось стойкое впечатление что в форуме мало людей которые по существу могут пояснить, а зачем им собственно вообще нужен реал-тайм. Обычно в 99% бизнес задач такой вопрос вообще не стоит.Так уж устроена жизнь, что большинство подсистем либо одновременно детерминированы и по времени, и по памяти, либо одновременно недетерминированы. Скажем, очень нечасто увидишь софтинку, которая за предопределённое время на одном и том же объёме данных отожрёт непредсказуемо большой объём памяти, но при этом работает стабильно :) Поэтому "покупая" ради отсутствия деградации по памяти детерминизм по этой самой памяти, детерминизм по времени получаешь в подарок. Скажем, по временным характеристикам нас вполне устраивает и обычный линуксовый аллокатор, но нас не устраивает его фрагментация памяти на больших аптаймах, поэтому мы используем свой карманный TLSF. Если при этом у нас и время стабильнее, это "приятный необязательный пустячок", не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonDima Tпропущено... Пользы от него ноль. Какие претензии могут быть к бесполезному? Ты можешь на C# написать пример как-бы ты хотел использовать финалайзер по "полезному" ? Как полноценный деструктор. Например закрыть открытые ресурсы ОС (файлы, мутексы и т.д.). Деструктор С++ полезен потому что однозначно определен момент его запуска, а финализер гарантирует только "когда-нибудь точно сработаю" и это делает его бесполезным. Как уже выше написал 20679521 в C# для эмуляции деструктора изобрели интерфейс IDisposable и оператор using(). Для большинства случаев этого достаточно. Спорить тут особо не о чем. Финализер вместо деструктора это побочный эффект сборки мусора, т.к. в коде никак не контролируется выход объектов за область видимости, т.е. не отслеживается момент когда объект стал мусором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruС другой стороны, если учесть, что у нас своё --- управление памятью --- управление сокетами --- кластерный IPC --- диспетчеризация доступа к дискам ... и даже, к примеру, поддержка нитей на том железе, где OS их не имеет, а при этом нам надо не "настоящий" реал-тайм, а interactive/near-interactive, то QNX нам вовсе не обязателен.... то вам уже можно просто сделать свою операционку и не заморачиваться с другими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
CEMbiv_an_ruС другой стороны, если учесть, что у нас своё --- управление памятью --- управление сокетами --- кластерный IPC --- диспетчеризация доступа к дискам ... и даже, к примеру, поддержка нитей на том железе, где OS их не имеет, а при этом нам надо не "настоящий" реал-тайм, а interactive/near-interactive, то QNX нам вовсе не обязателен.... то вам уже можно просто сделать свою операционку и не заморачиваться с другими.Для операционки надо добавить бутявку, HAL + драйверы, консоль и кучу мелкой пофигени, вроде таблиц маршрутизации или часовых поясов. Лучше уж заморачиваться с одной готовой операционкой, чем с уймой этих мелочей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:45 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima T, Так в c# с областью видимости — напряжёнка — нету её ( разве что оптимизатор может узреть) Не надо механически привычки с с++ переносить на шарп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 09:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилТак в c# с областью видимости — напряжёнка — нету её ( разве что оптимизатор может узреть) Область видимости объекта - это места в коде где может встречаться его имя. Если областей видимости нет это значит что в шарпе можно снаружи функций обращаться к ее локальным переменным, и много других приколов. Лучше перефразируйте что вы хотели сказать, а то пока получается какая-то бессмыслица )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 12:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytondbpatchпри этом отдельный ржач - в продакшине есть даже методика, когда выключают принудительно очистку old-generation, дескать дешевле просто на выходных приложение рестартовать и заново загрузить кеши из базы данных. вполне себе подход, чо Вы наверное не в курсе. Вы просто не разрабатывали подобные приложения. Например ПО обработки equities, options имеет ярко выраженный сутошный лайф-цикл. Биржа открывается в определённое время суток. А потом закрывается. На момент закрытия приложение никому не нужно. И его можно ребутнуть. Какую из этого можно получить пользу? Я думаю - очевидно. тебе-то из подвала оно конечно виднее. из суточных лайф циклов - про good till cancel/day ты тоже уже в курсе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЕсли областей видимости нет это значит что в шарпе можно снаружи функций обращаться к ее локальным переменным, и много других приколов. можно. Через замыкания, например( которые не требуют явной спецификации) попавши в замыкание, локальная (с лексической точки зрения ) становится глобальной и живёт своей жизнью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonПо поводу QNX. Иван решил отмолчаться. Ну ОК. Из топиков по сабж я могу вспомнить только мой спор с неким Petrav на тему ПО и самолетов. А также с Базистом по поводу создания СУБД с нулевым откликом. Вообще у меня сложилось стойкое впечатление что в форуме мало людей которые по существу могут пояснить, а зачем им собственно вообще нужен реал-тайм. Обычно в 99% бизнес задач такой вопрос вообще не стоит. Этот аспект может быть описан так называемых NFR (Non functional requirements) где-то одим из подпунктов. Там может быть что flow, заявки на покупку или продажу акций должен быть отработан не более чем за 300 мс. Но это будет требование только для нашей системы. Не для внешних микросервисов. Они могут лагать как им удобно. Жесткий риалтайм в большинстве случаев это действительно не обязательное требование даже если его явно выдвигают. Тут больше из отряда обеспечения запаса прочности. Я в бытность потратил месяца два, чтоб обеспечить гарантированные 30к записей в секунду в default СУБД в продакшине. Заказчик так захотел. А на реальных продакшинах у него практически никогда не было больше 2к. В среднем. А вот в пике - доходило до 20к. А подобное разгильдяйское отношение к времени отклика оно куммулятивное - тут ты не обеспечил, там не обеспечил, а в результате хрясь, в определенной ситуации у тебя и до time-out дошло, клиент потерял деньги, и тому подобное. Потому если есть возможность выбрать третьесторонний базовый компонент с минимальным временем отклика - то почему и нет? Своих лагов мы всегда допишем сверху сами, зачем-же прям на старте брать чужие оные? maytonПо поводу UI для систем с MM (managed memory). Для UI приложений написанных на Java, есть коробочная рекомендация - включать +UseConcMarkSweepGC. Навскиду не помню но кажется эта опция включена во все дефолтные конфигурации пусковых скриптиков bash для продуктов комании Jetbrains. Этого достаточно чтобы комфортно работать и не видеть т.н. stop-the-world о которых так много говорят в топике. P.S. Я прошу прощения что пишу только по Java. C .Net я давно не работал и не в курсе как там и чего. Если кто в теме - то дополните. Да, продукты Jetbrains выглядят "повеселее" в плане отзывчивости и незалипаемости. Хотя у них проблемы спонтанных тормозов все равно остаются, хотя как говорят наши джависты - это уже проблема не самой JVM, а уже непосредственно кода IDE. Тем не менее, сравнение с Visual Studio или Delphi IDE они до сих пор не выдерживают. Но, как говорят джависты - привыкнуть можно. Угум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:37 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилЧерез замыкания, например( которые не требуют явной спецификации) попавши в замыкание, локальная (с лексической точки зрения ) становится глобальной и живёт своей жизнью Вы путаете область видимости и время жизни. Замыкание находися внутри функции, поэтому оно может ссылаться на ее переменные. А время жизни захваченных переменных продлевается естественно. Ну и не становится в шарпе (и нигде) захваченная переменная глобальной, ее область видимости - замыкание ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 13:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА время жизни захваченных переменных продлевается естественно. но эта "локальная" переменная - уже не может жить на стеке. ничего я не путаю. лексическая область видимости - локальная, время жизни - может превышать время жизни активации. хорошая такая "локальная переменная." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 14:28 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Ставлю вопрос о переносе топика в Программирование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 17:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Изопропилно эта "локальная" переменная - уже не может жить на стеке. Физически она находится в замыкании. А само замыкание может храниться в локальной переменной, т.е. на стеке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 18:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyИзопропилно эта "локальная" переменная - уже не может жить на стеке. Физически она находится в замыкании. А само замыкание может храниться в локальной переменной, т.е. на стеке хранение объектов на стеке - это "фича" C++, мало кто еще так делает. обычно на стеке хранятся лишь ordinals - int, pointer. в этом ключе реализация замыкания довольно проста - ordinals просто копируются по значению, а объекты - т.к. все равно в куче, мы копируем лишь указатель-ссылку на них тут другое интереснее - переменные могут и на стеке не храниться, а прямо в регистрах исполняться, в т.ч. параметры функций. недавно люди из мира Java получили разрыв шаблона, когда узнали, что первые параметры функции передаются не через стек, а через регистры, но, как оказалось, в их мире не все так радужно впрочем, какая разница откуда копировать... Модератор: Тема перенесена из форума "C++". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 19:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchТем не менее, сравнение с Visual Studio или Delphi IDE они до сих пор не выдерживают. Но, как говорят джависты - привыкнуть можно. Угум. Я не думаю что продукт из семейства Delphi IDE можно ставить в сравнение. Он очень нишевый и опции autocompletition там будут определены только в узком сегменте языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 21:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchДа, продукты Jetbrains выглядят "повеселее" в плане отзывчивости и незалипаемости. Хотя у них проблемы спонтанных тормозов все равно остаются, хотя как говорят наши джависты - это уже проблема не самой JVM, а уже непосредственно кода IDE. Да. Спонтанные тормоза могут быть. Но я здесь откомментарю. Я часто из за плеча замечал как мои коллеги инсталлируют среды разработки. Красивый и красочные мастер установки предлагает тонну всяких фич типа там фреймворки и языки. Коллеги не глядя тынцают "выбрать все". А потом гневно отшвыривают от себя клавиатуру и бубнят дескыть чего это "оно" затупило? Вобщем-то каждый случай надо разбирать отдельно. Может быть даже и активность антивируса создала траблы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 21:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruОдин ньюанс. Статистику по нашим процессам top запросто показывает с суффиксом не "m", и не "g", а "t". Ни один GC не будет вести себя прилично, если в колонках VIRT и RES маячат суффиксы "t" Я понял. Спасибо Иван. Я думаю что как раз тот самый компромисс о котором я говорил - это MM + неуправляемая куча. И экспертный вопрос - какому приложению и в какой пропорции сколько отдать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 21:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TAnatoly MoskovskyА в джаве еще к тому же и отсутсвие деструкторов (по выходу из области видимости). В C# та же проблема, там порешали интерфейсом IDisposable и оператором using() КМК в Java есть шаблон try-finally или try-with-resources который создан для отбивания подобных ситуаций. Я имею в виду немедленное освобождение native ресурсов ОС таких как файлы, сокеты, мьютексы используя кастомный API. Но опять-же ... если вы играете в парадигме языка то вам нет острой необходимости это использовать. Стандартные либы покрывают 99.9% кейсов. Что у вас там? Я навскидку могу вспомнить разве что интерфейс RS-232 который действительно не суппортился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 21:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruТак уж устроена жизнь, что большинство подсистем либо одновременно детерминированы и по времени, и по памяти, либо одновременно недетерминированы. Скажем, очень нечасто увидишь софтинку, которая за предопределённое время на одном и том же объёме данных отожрёт непредсказуемо большой объём памяти, но при этом работает стабильно :) Поэтому "покупая" ради отсутствия деградации по памяти детерминизм по этой самой памяти, детерминизм по времени получаешь в подарок. Скажем, по временным характеристикам нас вполне устраивает и обычный линуксовый аллокатор, но нас не устраивает его фрагментация памяти на больших аптаймах, поэтому мы используем свой карманный TLSF. Если при этом у нас и время стабильнее, это "приятный необязательный пустячок", не более. Я еще не читал про этот TLSF. На все не хватает времени. Но скачал в ебук. Надеюсь что если не в рамках этого топика то в других мы дойдем до обсуждения. Но сходу спрошу. Если этот продукт такой замечательный и при этом поддерживает интерфейс аллокатора то почему его не сделали дефолтным для Linux/FreeBSD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 22:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima Tmaytonпропущено... Ты можешь на C# написать пример как-бы ты хотел использовать финалайзер по "полезному" ? Как полноценный деструктор. Например закрыть открытые ресурсы ОС (файлы, мутексы и т.д.). Деструктор С++ полезен потому что однозначно определен момент его запуска, а финализер гарантирует только "когда-нибудь точно сработаю" и это делает его бесполезным. Как уже выше написал 20679521 в C# для эмуляции деструктора изобрели интерфейс IDisposable и оператор using(). Для большинства случаев этого достаточно. Спорить тут особо не о чем. Финализер вместо деструктора это побочный эффект сборки мусора, т.к. в коде никак не контролируется выход объектов за область видимости, т.е. не отслеживается момент когда объект стал мусором. Дима. Еще добавлю. КМК именно буферизация (или отложенная деаллокация) дает преимущества. Это как в БД и файловых системах. Если ты делаешь батчинг с умным предвариельным анализм батча - то можешь здорово сэкономить на всем объеме операций. И поэтому КМК сиюминутное пожелание срочно отработать "деструктор" приводит к ненужной суетливой активности и потере общего КПД. И еще раз. Я ратую за компромисс а не за "священную войну против GC и MM". Ну ты как? ОК? Не ОК? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 22:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchAnatoly Moskovskyпропущено... Физически она находится в замыкании. А само замыкание может храниться в локальной переменной, т.е. на стеке хранение объектов на стеке - это "фича" C++, мало кто еще так делает. обычно на стеке хранятся лишь ordinals - int, pointer. в этом ключе реализация замыкания довольно проста - ordinals просто копируются по значению, а объекты - т.к. все равно в куче, мы копируем лишь указатель-ссылку на них Я прошу прощения. Я уже достаточно зафлудил топик. Но кину еще 5 копеек. Один чел мне рассказывал про Rust. В Rust используется интересная модель уборки мусора основанная на анализе переменых на стеке и на формальном доказательстве в фазе компиляции того что наши ссылки не задействованы и в последующей деаллокацией. Я пока за этот факт ничего не знаю т.к. с растом не знаком и ожидаю что кто-то подтвердит или даст пруфы или краткую резюмирующую инфу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 22:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Чё-то здесь про QNX говорили. Он дорого стоит - поэтому "распил" называется. А про количество строк - ху кновс. В Ассемблере всё с новой строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 22:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonЯ еще не читал про этот TLSF. На все не хватает времени. Но скачал в ебук. Надеюсь что если не в рамках этого топика то в других мы дойдем до обсуждения. Но сходу спрошу. Если этот продукт такой замечательный и при этом поддерживает интерфейс аллокатора то почему его не сделали дефолтным для Linux/FreeBSD?TLSF в среднем медленнее Дугласа Ли раза в два. Да, в очень редком плохом случае Дуглас Ли протормозит в _сто_ раз дольше TLSF, но это не каждый день случается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2017, 23:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rumaytonЯ еще не читал про этот TLSF. На все не хватает времени. Но скачал в ебук. Надеюсь что если не в рамках этого топика то в других мы дойдем до обсуждения. Но сходу спрошу. Если этот продукт такой замечательный и при этом поддерживает интерфейс аллокатора то почему его не сделали дефолтным для Linux/FreeBSD?TLSF в среднем медленнее Дугласа Ли раза в два. Да, в очень редком плохом случае Дуглас Ли протормозит в _сто_ раз дольше TLSF, но это не каждый день случается. Получил разрыв шаблона. Douglas «Doug» S. Lea это известная личность среди создателей Пакета java.concurrency. Но вы очевидно имели в виду другое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 13:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
А все ОК. Разобрался. А то по ссылкам уже каких-то баскетболистов нагуглил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 19:55 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonДима. Еще добавлю. КМК именно буферизация (или отложенная деаллокация) дает преимущества. Это как в БД и файловых системах. Если ты делаешь батчинг с умным предвариельным анализм батча - то можешь здорово сэкономить на всем объеме операций. И поэтому КМК сиюминутное пожелание срочно отработать "деструктор" приводит к ненужной суетливой активности и потере общего КПД. И еще раз. Я ратую за компромисс а не за "священную войну против GC и MM". Ну ты как? ОК? Не ОК? Деструктор и освобождение памяти это разные вещи. Деструктор это логика уровня приложения. Сообщение объекту что он больше не используется сразу как он стал ненужным. Я об этом. Что там реально с памятью происходит - не важно. Пример с БД неудачен, т.к. РСУБД и ООП никак не пересекаются. Но в РСУБД есть аналог деструктора - триггер. В общем деструктор нужная штука и там где его нет изобретают всякие костыли для его эмуляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 20:45 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TПример с БД неудачен, т.к. РСУБД и ООП никак не пересекаются. Но в РСУБД есть аналог деструктора - триггер. Я другое имел в виду. Если рассматривать MM как структуру данных то и "чистку" неиспользуемых объектов в памяти лучше делать не "штучно" а массово. Это повышает общий КПД алгоритма хотя и вводит некую задержку в освобождение памяти. Но кому нужен жесткий синхронизм? Тебе нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 22:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TВ общем деструктор нужная штука и там где его нет изобретают всякие костыли для его эмуляции. По поводу костылей для языков с GC. Костыль номер раз. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И костыль номер два - это try-with-resources о котором я говорил. Его легко нагуглить. Там будет и перегруженный метод ::close(). Это и есть как-бе деструктор. Насколько это костыльно по 10 балльной шкале? Я не знаю. Я думаю что не очень. Т.к. сам юзкейс очень специфичен. Ситуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки. Их можно посчитать по пальцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 22:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonСитуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки разве это не типовая ситуация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 23:07 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton, завтра обязательно будет "лучше", чем было вчера. try-with-resources появился спустя 15 лет после старта дохлой java-идеи, когда в нее вдыхалась уже третья жизнь, потенциал которой будут выбирать еще лет пять-семь вперед, благодаря впрыснутой в машину invokedynamic ( говорят, к java-11, наконец, пересмотрят генерики, и сделают их почти такими же "плохими", как в c++ (генерирующими на этапе компиляции версию класса для использующего типа, (а сначала-то появились в генерации 2.5 "хорошие" - с затиранием фактического типа)). Само по себе это имеет мало отношения к вопросу о том, что лучше - языковую или системную поддержку для работы с динамической памятью. Это вопрос математики. Даг Ли явил в malloc имени себя любимого нечто, что спустя 15-20 лет было переосмыслено как потенциальная возможность математической гарантии управления памятью. К тому моменту, когда математика окончательно сойдется, ява перестанет быть java-ой, так как потребность иметь поддержку управления памятью, отличную от предоставляемой операционной системой просто отпадет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2017, 23:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилmaytonСитуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки разве это не типовая ситуация? Это не типовая ситуацию для языков с GC. Другими словами - вы хотите чтобы объект, который покинул scope - немедленно (физически) был удален из eden/surv/oldgen. И вы его факт удаления тут-же зафиксировали в memree(..). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 08:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonЭто не типовая ситуацию для языков с GC. Другими словами - вы хотите чтобы объект, который покинул scope - немедленно (физически) был удален из eden/surv/oldgen. И вы его факт удаления тут-же зафиксировали в memree(..).Это неправильная посылка. Финализатор позволяет сделать "изощрённое освобождение памяти", но заменой деструктора он всё равно не станет. Деструктор требуется тогда, когда необходимо явно управлять временем жизни любых ресурсов, кроме памяти JVM. Тривиальный пример - сокеты IP-стека. Там, где "плюсовики" один раз напишут деструктор и дальше будут управлять временем жизни объекта "расставляя фигурные скобочки", "кофеманам" придётся явно прописывать try/finally. С моей кочки зрения это не минус и не плюс: try/catch всё равно необходимы, а необходимость прописывать finally устраняет синтаксический сахар try-with-resource. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 09:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonЯ другое имел в виду. Если рассматривать MM как структуру данных то и "чистку" неиспользуемых объектов в памяти лучше делать не "штучно" а массово. Точно так же можно массово освобождать память в С++. Пропиши свой delete, где запоминай указатели на освобождаемую память, а затем массово их удали в нужный тебе момент. Уже писал: деструктор - это логика уровня приложения. Способ управления памятью тут ни при чем. maytonИ костыль номер два - это try-with-resources о котором я говорил. Его легко нагуглить. Там будет и перегруженный метод ::close(). Это и есть как-бе деструктор. Почитал про try-with-resources, это тоже самое что using() в C#. maytonНасколько это костыльно по 10 балльной шкале? Я не знаю. Я думаю что не очень. Не особо костыльно. Чуть больше кода. maytonТ.к. сам юзкейс очень специфичен. Ситуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки. Их можно посчитать по пальцам. От задач зависит. Мне часто надо. А может я просто привык что есть дестуктор, поэтому с ним мне удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 10:39 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TТочно так же можно массово освобождать память в С++. Пропиши свой delete, где запоминай указатели на освобождаемую память, а затем массово их удали в нужный тебе момент. Уже писал: деструктор - это логика уровня приложения. Способ управления памятью тут ни при чем. Убедил. Согласен что деструктор - это логика управления приложением. А свой delete прописывать не хочу. Ну... по крайней мере это не будет кастомизацией приложения. Как платформа или язык - да. Как приложение - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 11:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonМне кажется в спорах о m.management можно выделить две крайности. Два антогонизма. 1. Мемори leaks вызванные ошибкай разработчика при обработке исключения или просто ошибкой. 2. Накладные расходы на управляемую кучу в виде стоп-вселенная и потребления мегафлопов. Оба тезиса имеют место. Но многие ораторы не ищут компромисса между 1 и 2 а просто доказывают Правильность линии свой партии. Не вижу смысла рассматривать какую либо [не]оптимальность ГЦ при потреблении Явой памяти в обычном случае в >3.5 раза больше. ИзопропилAnatoly MoskovskyА время жизни захваченных переменных продлевается естественно. но эта "локальная" переменная - уже не может жить на стеке. ничего я не путаю. лексическая область видимости - локальная, время жизни - может превышать время жизни активации. хорошая такая "локальная переменная." Лямбда в c# превращается в целый независимый класс и живет в хипе. ShSergeЧё-то здесь про QNX говорили. Он дорого стоит - поэтому "распил" называется. А про количество строк - ху кновс. В Ассемблере всё с новой строки. VxWorks стоила (сравнивал давно) столько же. Конкурируй. Хотя есть и подешевле варианты RT-систем, RTOS-32 например. Но Майтон верно написал - не всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 19:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglЛямбда в c# превращается в целый независимый класс и живет в хипе. Хм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 23:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton, trust me, i'm an engineer =) на хабре пробегала статья с кодом из il-dasm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 23:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
(разводя руками) Зачем нам Хабр? Давайте щас соберем код. И дизассемблернём. P.S. В статьи на Хабре я охотно верю. Но эволюция версий ПО мать ее так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2017, 23:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonХм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод. Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 00:55 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonХм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод. Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние.предлагаю не травмировать обитателя упрощенного форума ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 01:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
оффтопик авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С. Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 03:47 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonХм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод. Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние. Приведите пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 08:15 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
azsxоффтопик авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С. Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С? Например: Ада, Модула . Стоит ещё учитывать для чего используется система - степень требуемой надёжности. "С" это ширпотреб, его никто в здравом уме не рассматривает как основу систем реального времени с гарантиями качества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 08:25 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)azsxоффтопик пропущено... Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С? Например: Ада, Модула . Стоит ещё учитывать для чего используется система - степень требуемой надёжности. "С" это ширпотреб, его никто в здравом уме не рассматривает как основу систем реального времени с гарантиями качества. Не затруднит развить вашу глубокую мысль ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 09:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiНе затруднит развить вашу глубокую мысль ? а что в ней непонятного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 09:27 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
azsxоффтопик авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С. Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С? Алгоритмы заказчика на https://en.wikipedia.org/wiki/IEC_61131 К языкам относится часть 3 Но вот сама ОС контроллеров, скорее всего на С. По крайней мере, внешние интерфейсы для расширения низкоуровневой функциональности я видел только Сишные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 09:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemargl, я не силён в нерусском и мой вопрос скорее для повышения общего уровня образованности. Я нашёл по вашей ссылке такую цитату: авторIEC 61131-3 currently defines five programming languages for programmable control systems: function block diagram (FBD), ladder diagram (LD), structured text (ST; similar to the Pascal programming language), instruction list (IL; similar to assembly language), and sequential function chart (SFC).[12] These techniques emphasize logical organization of operations.[11] Из неё я делаю вывод, что при программировании программируемого логического контролёра (plc) в том числе используют язык, похожий на паскаль. В то же время мне всегда казалось, что операционные системы реального времени (real time os) -- это windows nt, qnx и прочие.То есть это полноценные ос, просто умеют прерывания делать жёсткие в определённые моменты времени. То есть Ваша ссылка не подходит, она не для этого. Я совсем не прав? В чём мои ошибки? зы Меня просто также удивило, что критичные к времени приложения пишут не на С, я ответа не знаю, хочу спросить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 09:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Мне показалось что камент Руслана скорее философский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 09:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
azsx, Есть две большие области применения RT - embedded и PLC В первой применяются ОС более-менее общего назначения, как ты написал. На самом деле там может быть и не RT-ос, а простенькая прошивка (например как в ардуино) или даже клон DOS или простого (не РТ) Линуха. Но обычно поддержка RT есть. Во второй - только hard-RT, свои закрытые ОС, и тот стандарт, что я указал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 10:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
azsxМеня просто также удивило, что критичные к времени приложения пишут не на С, я ответа не знаю, хочу спросить. критичные к времени и надёжности приложения пишут не на С всякие контроллёры на ардуино это ширпотреб, от которых ничего критичного не зависит более того там все гарантии нулевые представили, например, как боинг запустить с такими гарантиями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 10:47 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)azsxМеня просто также удивило, что критичные к времени приложения пишут не на С, я ответа не знаю, хочу спросить. критичные к времени и надёжности приложения пишут не на С...а на single-assignment C ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 11:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rukealon(Ruslan)пропущено... критичные к времени и надёжности приложения пишут не на С...а на single-assignment C ;) собственно это уже и не С Профессор из Цюриха не просто так свой хлеб ест, большинство его работ засекречено - ибо, военная тайна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 11:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Жаль что это не даёт пищу для продолжения дискуссии. Сложно обсуждать секретные разработки здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 13:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)iv_an_ruпропущено... ...а на single-assignment C ;) собственно это уже и не С Профессор из Цюриха не просто так свой хлеб ест, большинство его работ засекречено - ибо, военная тайна.Профессор из Цюриха тащит к себе аспирантов со всего глобуса, и юзает их как рабочих лошадок. Какая, к чорту, военная тайна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 13:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruПрофессор из Цюриха тащит к себе аспирантов со всего глобуса, и юзает их как рабочих лошадок. Какая, к чорту, военная тайна? везде зовут, гранды дают, по твоему учёных "в тёмную" использовать нельзя? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 15:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)iv_an_ruПрофессор из Цюриха тащит к себе аспирантов со всего глобуса, и юзает их как рабочих лошадок. Какая, к чорту, военная тайна? везде зовут, гранды дают, по твоему учёных "в тёмную" использовать нельзя? :-)Я как-то не готов на полном серьёзе спорить о том, что и как происходит в науке, с человеком, который не может написать такое денежное и нежно любимое слово, как "грант". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 16:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, бывает - мне можно, это не мой родной как написал mayton сложно обсуждать секретные разработки, но вот ни за что я не поверю, что он написал ЯП для военных и успокоился. Отвлечённая наука либо нищая, либо пашет на прикладников и самые "жирные" из них в любой стране, это военные. Вам как жителю одного из наукоградов об этом должно быть очень хорошо известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 17:22 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
azsxоффтопик авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С. Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С? На CUDA C++ , если полу-автопилот автомобиля считать системой реального времени: https://teslamotorsclub.com/tmc/threads/inside-the-nvidia-px2-board-on-my-hw2-ap2-0-model-s-with-pics.91076/#post-2113392 Гарантий времени выполнения CUDA C++ дает в разы больше, а производительности на порядки больше, чем любое другое оборудование с любыми другими языками. И Hi-end mGPU, и Middle-end GPU в разы быстрее, чем VHDL на топовых FPGA с neuFlow или ASIC с neuIBM или TrueNorth для топовых задач компьютерного зрения: обнаружения объектов и семантической сегментации - на этих задачах FPGA и ASIC дают чуть больше гарантий - работают детерминировано гарантированно медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 18:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly Moskovskyпропущено... Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние. Приведите пример Код: plaintext 1. 2. 3. 4. 5. 6. Siemarglпредлагаю не травмировать обитателя упрощенного форума Нечего легкотравмируемым тут шастать )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 20:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskymaytonпропущено... Приведите пример Код: plaintext 1. 2. 3. 4. 5. 6. Siemarglпредлагаю не травмировать обитателя упрощенного форума Нечего легкотравмируемым тут шастать )) Анатолий. То что вы написали не является лямбдой в общем понимании. Вы создали забавный синтаксический "гомункул". Но я акцентирую внимание Вас, и всех присутствующих на том что мы в топике говорили о надёжности ПО. А надежность - это некая общая составляющая всех-всех частей языка. Это гарантии того что поведение ПО будет таким как ожидает его разработчик. И не только он а и пользователь этого кода. Очень жаль что господа из "комитета" и также "бородатый человек в кедах" не думают о надежности. А решают свою мелкие коньюнктурные хотелки. Я не очень верю истории о Цюрихском профессоре. Но я хочу акцентировать еще раз внимание на том что нам (разработчикам) в первую очередь важно написать ПО работающее корректно. Без ошибок. Это необходимая составляющая. Перформанс и краткость это уже второе... третье... и так далее. Но ПО работающее некорректно или непредсказуемо - это репутационные потери. И потери заказов. Не забывайте об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 21:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton, Непонятна реакция. Код совершенно корректный - см примеры тут для С++ Выше по теме утверждалось, что ФП приводит к более безопасному и предсказуемому коду. Я правда, без доказательств в это совсем не верю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 22:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ФП - это принципы. В первую очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 23:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton...Но я хочу акцентировать еще раз внимание на том что нам (разработчикам) в первую очередь важно написать ПО работающее корректно. Без ошибок. Это необходимая составляющая. Перформанс и краткость это уже второе... третье... и так далее. Но ПО работающее некорректно или непредсказуемо - это репутационные потери. И потери заказов. Не забывайте об этом.К сожалению, практика показывает, что "бац бац и в продакшн" вполне жизнеспособная модель. Именно благодаря ей С и появился, и собственно по ней же и развивался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 23:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonНо я хочу акцентировать еще раз внимание на том что нам (разработчикам) в первую очередь важно написать ПО работающее корректно. Без ошибок. Это необходимая составляющая. Перформанс и краткость это уже второе... третье... и так далее. Но ПО работающее некорректно или непредсказуемо - это репутационные потери. И потери заказов. Не забывайте об этом. Надо помнить, что многие системы на основе Decision support system, Machine learning, Computer Vision, ... всегда имеют среднюю ошибку зависящую от производительности . Всегда можно предложить более сложную/многомерную задачу, с более точным результатом, и с большим временем выполнения. - Спрыгиваем с CUDA C++ на любой из C/Java/C#... - это в 100 раз больше ошибок Computer Vision = в 100 раз больше жертв автокатастроф при использовании существующих автопилотов: https://geektimes.ru/post/277970/ - Спрыгиваем с C++ на Java/C#... это в разы больше ошибок в аналитических системах расчета риска выдачи кредитов BigData / Machine learning = в разы больше невозвратных кредитов, больше банкротов физических лиц и разрушенных семей http://www.lextrait.com/Vincent/implementations.html Все это важнее, чем ваша репутация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2017, 23:28 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonТо что вы написали не является лямбдой в общем понимании. Вы создали забавный синтаксический "гомункул". Нет. Вы ошибаетесь. Это лямбда в самом математическом смысле. Хотя я допускаю, что вы просто не поняли что там написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 00:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вася УткинНадо помнить, что многие системы на основе Decision support system, Machine learning, Computer Vision, ... всегда имеют среднюю ошибку зависящую от производительности . Всегда можно предложить более сложную/многомерную задачу, с более точным результатом, и с большим временем выполнения. Согласен. Но возможно вашу систему, принимающую решения можно реализовать на аналоговой технике а ошибку принятия решения мы вообще вынесем за рамки технического задания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 00:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonВася УткинНадо помнить, что многие системы на основе Decision support system, Machine learning, Computer Vision, ... всегда имеют среднюю ошибку зависящую от производительности . Всегда можно предложить более сложную/многомерную задачу, с более точным результатом, и с большим временем выполнения. Согласен. Но возможно вашу систему, принимающую решения можно реализовать на аналоговой технике а ошибку принятия решения мы вообще вынесем за рамки технического задания . Т.е. реализовать аналоговую систему, чтобы принимать решения не в 100 раз, а в 1000000 раз хуже, и при этом тех-заданием не контролировать даже это ужасное качество решений, а дать возможность сделать ещё хуже - строго гарантировано никчемную систему работающую без программных ошибок? Невозможно и нельзя, а обычно, наоборот, тех, кто предлагает такие решения - выносят за рамки проекта, а точнее не вносят в него :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 00:51 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonТо что вы написали не является лямбдой в общем понимании. Вы создали забавный синтаксический "гомункул". Нет. Вы ошибаетесь. Это лямбда в самом математическом смысле. Хотя я допускаю, что вы просто не поняли что там написано.В математическом смысле, лямбда-исчисление это синтаксис описывающий манипулирование лямбда-терминами. То что введено в С++, это всего-лишь попытка добавить "анонимную форму". Но лямбды там нету даже близко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 00:58 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlТо что введено в С++, это всего-лишь попытка добавить "анонимную форму". Но лямбды там нету даже близко.Лямбда там есть, нету стандартных операторов над лямбдами. Нельзя, скажем, имея лямбды f1, f2 и f3 неким выражением из стандартных операторов изготовить лямбду с логикой "если f1, то f2, иначе f3". Ну и синтаксис прмерно такой же извращённый, как у декларации массива функций, возвращающих мембер-указатели на методы класса от константных ссылок на описываемый здесь массив функций... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruWhite OwlТо что введено в С++, это всего-лишь попытка добавить "анонимную форму". Но лямбды там нету даже близко.Лямбда там есть, нету стандартных операторов над лямбдами. Нельзя, скажем, имея лямбды f1, f2 и f3 неким выражением из стандартных операторов изготовить лямбду с логикой "если f1, то f2, иначе f3". Ну и синтаксис прмерно такой же извращённый, как у декларации массива функций, возвращающих мембер-указатели на методы класса от константных ссылок на описываемый здесь массив функций... :) Да. В ФП это называется получение "остаточной процедуры". И да. Синтаксис тяжелый для прочтения глазами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 09:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)mayton...Но я хочу акцентировать еще раз внимание на том что нам (разработчикам) в первую очередь важно написать ПО работающее корректно. Без ошибок. Это необходимая составляющая. Перформанс и краткость это уже второе... третье... и так далее. Но ПО работающее некорректно или непредсказуемо - это репутационные потери. И потери заказов. Не забывайте об этом.К сожалению, практика показывает, что "бац бац и в продакшн" вполне жизнеспособная модель. Именно благодаря ей С и появился, и собственно по ней же и развивался. Чем дальше в лес, тем толще партизаны. У тебя хоть один аргумент есть, кроме феерических заявлений ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 10:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonДа. В ФП это называется получение "остаточной процедуры". Может у вас и каррирование тоже нарушает принципы ФП ) А претензии к синтаксису какое отношение имеют к обсуждаемой теме? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlAnatoly MoskovskyВ математическом смысле, лямбда-исчисление это синтаксис описывающий манипулирование лямбда-терминами. То что введено в С++, это всего-лишь попытка добавить "анонимную форму". Но лямбды там нету даже близко. Ну так напишите, чего из настоящих лямбд не хватает в С++-ных лямбдах. А то создается впечатление что вы с лямбдами в С++ знакомы также как с исключениями, на уровне слышал звон да не знаю где он ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:13 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruЛямбда там есть, нету стандартных операторов над лямбдами. Нельзя, скажем, имея лямбды f1, f2 и f3 неким выражением из стандартных операторов изготовить лямбду с логикой "если f1, то f2, иначе f3". Че-то свидетели разошлись в показаниях. То есть, лямбда, то ее нет. Так скоро может выясниться что и операторы стандартные есть )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:21 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schikealon(Ruslan)пропущено... К сожалению, практика показывает, что "бац бац и в продакшн" вполне жизнеспособная модель. Именно благодаря ей С и появился, и собственно по ней же и развивался. Чем дальше в лес, тем толще партизаны. У тебя хоть один аргумент есть, кроме феерических заявлений ? посмотри вокруг, вспомни детские болезни, почитай как он создавался и менялся с самого начала язык, созданный как костылёк, на краткосрочную задачу PS: считаешь что это не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 12:55 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)schiпропущено... Чем дальше в лес, тем толще партизаны. У тебя хоть один аргумент есть, кроме феерических заявлений ? посмотри вокруг, вспомни детские болезни, почитай как он создавался и менялся с самого начала язык, созданный как костылёк, на краткосрочную задачу PS: считаешь что это не так? Я, с твоего позволения, Таненбаума процитирую, с мнением которого я согласен, так как имел дело с обоими описываемыми языками: "Полезно взглянуть на два языка программирования - PL/1 и C. Язык PL/1 был разработан корпорацией IBM в 60-ые годы, так как поддерживать одновременно FORTRAN и COBOL и слушать при этом ворчание ученых о том, что Algol лучше, чем FORTRAN и COBOL, вместе взятые, было невыносимо. Поэтому был создан комитет для создания нового языка, удовлетворяющего запросам всех программистов: PL/1. Этот язык обладал некоторыми чертами языка FORTRAN, некоторыми особенностями языка COBOL и некоторыми свойствами языка Algol. Проект потерпел неудачу, потому что ему недоставало единой концепции. Проект представлял собой лишь набор свойств, конфликтующих друг с другом, к тому же язык PL/1 был слишком громоздким и неуклюжим, чтобы программы на нем можно было эффективно компилировать. Теперь взглянем на язык С. Он был спроектирован всего одним человеком (Деннисом Ритчи) для единственной цели (системного программирования). Успех его был колоссален, и это не в последнюю очередь объяснялось тем, что Ритчи знал, чего хотел и чего не хотел. В результате спустя десятилетия после своего появления этот язык все еще широко распространен. Наличе четкого представления о своих целях является решающим." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 13:54 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schi, насчёт "неудачи" PL/1 - это скорее неудача платформы 360/370/.... а на чём там ещё писать было? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 14:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Читал статью Дмитрия Донского (один из авторов шахматной программы "Каисса"). Его коллега в беседе о достоинствах и недостатках PL/I сказал, что писать на этом языке легко и приятно, если понимаешь, в какие машинные команды будут транслированы инструкции языка. Донской согласился, но не стал относить это свойство к достоинствам языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 16:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Изопропилschi, насчёт "неудачи" PL/1 - это скорее неудача платформы 360/370/.... а на чём там ещё писать было? Там можно было писать дофига на чем. Даже на Паскале и внезапно на С ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiИзопропилschi, насчёт "неудачи" PL/1 - это скорее неудача платформы 360/370/.... а на чём там ещё писать было? Там можно было писать дофига на чем. Даже на Паскале и внезапно на С я не о студентах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:47 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schiТеперь взглянем на язык С. Он был спроектирован всего одним человеком (Деннисом Ритчи) для единственной цели (системного программирования). Успех его был колоссален, и это не в последнюю очередь объяснялось тем, что Ритчи знал, чего хотел и чего не хотел. В результате спустя десятилетия после своего появления этот язык все еще широко распространен. Наличе четкого представления о своих целях является решающим." Ога...., проектировал он..., видел цель..., лепил всё подряд лишь бы закрыть дыры в архитектуре. Чистый "бац-бац и в продакшн" То что он написал и то, что получилось в итоге - совершенно разные языки. Я реализовывал спецификацию препроцессора - чудовищное издевательство над логикой. Например, препроцессор Fasm-а в этом плане куда логичнее, стройнее и гибче при меньших трудозатратах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:51 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite Owlпропущено... В математическом смысле, лямбда-исчисление это синтаксис описывающий манипулирование лямбда-терминами. То что введено в С++, это всего-лишь попытка добавить "анонимную форму". Но лямбды там нету даже близко. Ну так напишите, чего из настоящих лямбд не хватает в С++-ных лямбдах. А то создается впечатление что вы с лямбдами в С++ знакомы также как с исключениями, на уровне слышал звон да не знаю где он )))Анатолий, давайте не будем опускаться до наездов. В С++-ных лямбдах, мне не хватает самих лямбд. Еще раз повторю: лямбда исчисление это синтаксис. Не больше и не меньше. Это даже не принцип обработки данных, это все-лишь принцип описания обработки данных. Функционально, если ты хочешь использовать каррирования, альфа-бета-эта-редукцию и разные другие страшные слова, то их можно использовать на любом языке в котором есть понятие функции. Даже на столь не любимом вами Си, даже на FoxPro, sh, javascript и <подставь язык по вкусу>. На любом! Но если ты хочешь писать на лямбдах, то и пиши на них: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 17:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)schiТеперь взглянем на язык С. Он был спроектирован всего одним человеком (Деннисом Ритчи) для единственной цели (системного программирования). Успех его был колоссален, и это не в последнюю очередь объяснялось тем, что Ритчи знал, чего хотел и чего не хотел. В результате спустя десятилетия после своего появления этот язык все еще широко распространен. Наличе четкого представления о своих целях является решающим." Ога...., проектировал он..., видел цель..., лепил всё подряд лишь бы закрыть дыры в архитектуре. Чистый "бац-бац и в продакшн" То что он написал и то, что получилось в итоге - совершенно разные языки. Я реализовывал спецификацию препроцессора - чудовищное издевательство над логикой. Например, препроцессор Fasm-а в этом плане куда логичнее, стройнее и гибче при меньших трудозатратах. Извините, профессор, а где можно с вашими трудами ознакомиться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 18:25 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
schi, извиняй, парсерами и лексерами я занимаюсь чисто с коммерческой точки зрения PS: я не профессор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 18:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White Owl, Мы тут всё-таки больше экспериментальные программисты, чем теоретические, поэтому яЯ бы предложил называть лямбдами те лямбды, которые есть в обычных лиспах, но не те, которые есть в мю-лиспе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 19:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlЕще раз повторю: лямбда исчисление это синтаксис. Не больше и не меньше. Это даже не принцип обработки данных, это все-лишь принцип описания обработки данных. Функционально, если ты хочешь использовать каррирования, альфа-бета-эта-редукцию и разные другие страшные слова, то их можно использовать на любом языке в котором есть понятие функции. Даже на столь не любимом вами Си, даже на FoxPro, sh, javascript и <подставь язык по вкусу>. На любом! Нет. Важна суть. Синтаксис вообще не важен. Только для каких-нибудь нудных профессоров теоретиков. В лямбдах с практической точки зрения важны лишь возможность хранить функцию в виде значения и возможность захвата свободных переменных из внешнего контекста. Во многих перечисленных языках второй возможности встроенной в язык нет. Поэтому там лямбды возможны, но только при огромном объеме ручной работы по дублированию реализации лямбд по всему коду (я помню, вас это не смущает, но тех кто платит деньги обычно это смущает). А в С++ поддержка лямбд встроена. И кстати ничем от той же хаскелевской не отличается, кроме того что умеет больше чем лямбды, потому что в отличие от хаскеля, С++ применяется не только для сферических коней в вакууме ))) White OwlНо если ты хочешь писать на лямбдах, то и пиши на них: Если бы программирование равнялось математике, то не было бы языков программирования. Но программирование это нечто другое, поэтому математика и ее синтаксис там не работает. Но это не значит что некоторые принципы оттуда нельзя применять. Но для этого разумеется желательно обладать некоторой широтой взглядов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 19:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИМХО: лямбды это гениальное изобретение. Гениальность в том что вместо придумывания осмысленного имени функции/метода ты просто пишешь код, а имя придумывает компилятор. Главное что не надо придумывать имя, что занимает 90% времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 20:45 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Деннис Ритчи просто писал высокоуровневый ассемблер для PDP-11 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 20:53 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dima TИМХО: лямбды это гениальное изобретение. Гениальность в том что вместо придумывания осмысленного имени функции/метода ты просто пишешь код, а имя придумывает компилятор. Главное что не надо придумывать имя, что занимает 90% времени.Зря ты так думаешь. Было бы мат.образование, понимал бы, что в такой записи как мат.доказательства, программы стали бы нечитабельными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 20:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlЕще раз повторю: лямбда исчисление это синтаксис. Не больше и не меньше. Это даже не принцип обработки данных, это все-лишь принцип описания обработки данных. Функционально, если ты хочешь использовать каррирования, альфа-бета-эта-редукцию и разные другие страшные слова, то их можно использовать на любом языке в котором есть понятие функции. Даже на столь не любимом вами Си, даже на FoxPro, sh, javascript и <подставь язык по вкусу>. На любом! Нет. Важна суть. Синтаксис вообще не важен. Только для каких-нибудь нудных профессоров теоретиков. В лямбдах с практической точки зрения важны лишь возможность хранить функцию в виде значения и возможность захвата свободных переменных из внешнего контекста.Что это за бред???? Как может быть не важен синтаксис, в синтаксической системе??? О какой сути вы говорите???? Anatoly MoskovskyНо для этого разумеется желательно обладать некоторой широтой взглядов Анатолий, вы меня очень сильно разочаровываете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 21:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruWhite Owl, Мы тут всё-таки больше экспериментальные программисты, чем теоретические, поэтому яЯ бы предложил называть лямбдами те лямбды, которые есть в обычных лиспах, но не те, которые есть в мю-лиспе :)Я бы не относил реализованное в лиспе к лямбдам, его возможности гораздо шире, чем возможности лямбда-исчислений (я имею ввиду возможность символьных вычислений). Anatoly MoskovskyВ лямбдах с практической точки зрения важны лишь возможность хранить функцию в виде значения и возможность захвата свободных переменных из внешнего контекста.имхо "чистая ленивость", например, совсем не помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 21:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
White OwlЧто это за бред???? Как может быть не важен синтаксис, в синтаксической системе??? О какой сути вы говорите???? Бред - это предлагать писать программы в математической нотации. Все остальное по сравнению - образец здравомыслия. White OwlАнатолий, вы меня очень сильно разочаровываете. Я расстроился ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 21:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)имхо "чистая ленивость", например, совсем не помешает. А она есть (причем была задолго до лямбд) Используйте паттерн Future<type>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglDima TИМХО: лямбды это гениальное изобретение. Гениальность в том что вместо придумывания осмысленного имени функции/метода ты просто пишешь код, а имя придумывает компилятор. Главное что не надо придумывать имя, что занимает 90% времени.Зря ты так думаешь. Было бы мат.образование, понимал бы, что в такой записи как мат.доказательства, программы стали бы нечитабельными. ИМХО если не злоупотреблять, то читабельность наоборот повышается, т.к. вместо вызова одноразового метода ты вписываешь его код в место вызова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Тут само по себе синтаксическое "сахарение" кода как в С++ не так важно. Велика-ли невидаль - вписать тело по месту вызова. Это-ж не есть главное. Будет ли call-by-refefence? Мы сможем уйти от расчета вложенных аргументов если в этом нет необходимости? Мы сможет получать остаточные процедуры? Не важно как называет этот сахар старина Бьярне. А важно другое. Соответствует ли это современным критериям ФП или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonНе важно как называет этот сахар старина Бьярне. А важно другое. Соответствует ли это современным критериям ФП или нет. Соответствует. Просто есть люди, которые против того чтобы называть машину такси, если на ней нет шашечек ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Если вы заметили... я обсуждаю только предмет дискуссии а не персоналии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 22:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonТут само по себе синтаксическое "сахарение" кода как в С++ не так важно. Важно, в С++ не знаю, я про в C#. Например ConcurrentDictionary.GetOrAdd(TKey, Func<TKey, TValue>) туда передается код, который создаст новый элемент, если не найдено значение TKey, но если найдено, то никакой код не отработает, т.е. все оптимально, не надо никаких Value по умолчанию передавать, т.е. создавать ненужные объекты, проверок не надо есть или нет TKey, надо просто передать код который создаст объект если это надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 23:17 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonЕсли вы заметили... я обсуждаю только предмет дискуссии а не персоналии. Да и предмет тоже как-то не очень.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 23:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskykealon(Ruslan)имхо "чистая ленивость", например, совсем не помешает. А она есть (причем была задолго до лямбд) Используйте паттерн Future<type>. это ожидание асинхронной операции, а не "чистая ленивость" - её можно сделать только на уровне языка, как тернарный оператор, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 09:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)это ожидание асинхронной операции, а не "чистая ленивость" - её можно сделать только на уровне языка, как тернарный оператор, например. C++ позволяет реализовать это на уровне библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 11:47 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Библиотечные возможности это кмк другой уровень. Не уровень языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 13:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonБиблиотечные возможности это кмк другой уровень. Не уровень языка. Не в С++, где есть шаблоны и перегрузка операторов. И лямбды конечно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 14:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonНе важно как называет этот сахар старина Бьярне. А важно другое. Соответствует ли это современным критериям ФП или нет.Было бы странно, если бы макроассемблер процессоров общего назначения, коим является C++, являлся полноценным функциональным языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 16:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonБиблиотечные возможности это кмк другой уровень. Не уровень языка. Не в С++, где есть шаблоны и перегрузка операторов. И лямбды конечно ))) ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбирать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 18:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбирать Нет. Если немного подумать и разработать нотацию в пределах синтаксиса С++. Например см. https://bartoszmilewski.com/2014/04/21/getting-lazy-with-c/ https://github.com/jscheiny/Streams ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 21:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Как-то вы все усложнили... редукция.. немцы какие-то.. конгрессы. Eсть пример. На гипотетическом языке X. Фрагмент. Код: php 1. 2. Если этот язык - классический императивный (С/C++/Delphi/Java) то расчет выражения в скобках будет начат с вычисления метода ::toJSonString(). После этого отрабатывает метод trace который проверяет что он в режиме INFO и соотв ничего логать не надо, но объем работ по ненужной сериализации состояния объекта уже выполнен. В языке функциональном расчет метода ::toJsonString() не будет выполнен в силу ленивости вычислений и возврата по ссылке результата. Согласитесь, ценное приобретение. Оптимизация из коробки. Как эту ленивость можно реализовать для императивного (последовательного) языка список которых я привел выше? P.S. Ссылки, которые привел Анатолий я еще не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Anatoly Moskovskyпропущено... Не в С++, где есть шаблоны и перегрузка операторов. И лямбды конечно ))) ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбиратьПример, в данном случае, а зачем она тут нужна? Я могу представить себе пользу футурей в абстрактных примерах, но в реальных задачах.... Нужен пример, и тогда посмотреть (я тут видел хаскель изнутри, когда читал спецку с--) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКак-то вы все усложнили... редукция.. немцы какие-то.. конгрессы. Eсть пример. На гипотетическом языке X. Фрагмент. Код: php 1. 2. Если этот язык - классический императивный (С/C++/Delphi/Java) то расчет выражения в скобках будет начат с вычисления метода ::toJSonString(). После этого отрабатывает метод trace который проверяет что он в режиме INFO и соотв ничего логать не надо, но объем работ по ненужной сериализации состояния объекта уже выполнен. В языке функциональном расчет метода ::toJsonString() не будет выполнен в силу ленивости вычислений и возврата по ссылке результата. Согласитесь, ценное приобретение. Оптимизация из коробки. Как эту ленивость можно реализовать для императивного (последовательного) языка список которых я привел выше? P.S. Ссылки, которые привел Анатолий я еще не читал.Бред. Будет так. IF logger.level > INFO THEN STRING += obj.toJsonString(); END; фсе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:09 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКак эту ленивость можно реализовать для императивного (последовательного) языка список которых я привел выше? Как-то вы все усложнили. (C) В данном конкретном примере ленивость вообще не нужна. Логирование по уровням без вычисления делается на макросах (внутри макроса проверяется уровень и все остальное передается в логгер). Как это удобно делать для языков где нет макросов мне пофиг, я их не использую и других всегда отговариваю )) Но кое какие идеи могу подкинуть. Например в логгер передавать не значение а лямбду. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Собственно, вывод пока вы пишете на простом языке - вы однозначно понимаете, во что в итоге ваши инструкции разворачиваются. Иначе, вы пляшете с бубном, пытаясь угадать. (пляски начинаются конечно только когда наступила ЗИМА) Пруф выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Бред. Будет так. IF logger.level > INFO THEN STRING += obj.toJsonString(); END; фсе Этот код у вас будет где? В API логгера? Или в вашем прикладном коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton, ну посмотри в исходники логгера, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:34 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemarglmayton, ну посмотри в исходники логгера, да Зям. Я тебя не узнаю. Ну что за брюзжание? Куда мне посмотреть? Я привел обычный (энтерпрайзный) паттерн. Логгирование с уровнями. Ты предложил обернуть это проверкой. Я говорю - не вариант. Это конечно вариант но не вариант. Ибо осточертело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:40 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton, да оно внутри обернуто. я и говорю - не веришь, так сам посмотри ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:48 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
И как это влияет на сериализацию obj? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 22:55 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 23:15 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
блн, след.сообщение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 23:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Ну ладно. Не хочешь - как хочешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 23:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Код: sql 1. Спасибо Анатолий. Я это проверию на 2-3 ЯП. А потом попробую придумать найти более комплексный пример lazy-comp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 23:20 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonНет. Работа java gc базируется на предположении что 99% аллокаций в eden space не переживут первую эпоху. Они будут удалены. Оставшийся процент выживших копируются в survival. Поскольку очистка eden это лёгкая Операция. По сути это обрушение счётчика. То мы считаем что здесь мы выиграли и дефрагментация eden нам не нужна. Сам себя откомментарю. 1) Я вспомнил где я это читал. Это гипотеза имеет вполне себе конкретное название. Я цитирую документацию C4: The Continuously Concurrent Compacting CollectorGenerational collectors are basedon the Weak generational hypothesis [18] i.e. most objects die young. 2) Я написал "обрушение" счетчка. Ох уж этот Android с его авто-заменой. Разумеется я имел в виду "обнуление". Я хотел-было внутренне возмутиться и пофиксить опечатку .. но пускай будет так. Термин обрушение мне уже нравится и я оставлю его как метафору которая описывает процесс очистки Эдемского сада (Eden space). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2017, 23:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglЯ могу представить себе пользу футурей в абстрактных примерах, но в реальных задачах....Асинхронный I/O. Task / JQueryPromise и т. п. часто использовать удобнее чем "голые" лямбды с замыканиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 05:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglЯ могу представить себе пользу футурей в абстрактных примерах, но в реальных задачах...Симуляторы со взаимодействием, к примеру. Есть у вас большая сетка, бОльшая часть её узлов может считаться тупыми циклами, глядя только на ячейки с "соседними" номерами. Небольшая часть узлов зависит от ячеек, которые в пространстве являются "соседними", а вот в нумерации --- нет. К примеру, конец балки, описываемой ячейками с 0 по 100000 лежит на середине балки из ячеек 500000--600000, стык у нас "общего" вида. Это статически предопределённая неоднородность, её можно заранее учесть при построении плана вычислений. Но есть другая беда --- ваша четырёхугольная конструкция стоит на четырёх неидеальных опорах. Вернее, сначала её вес приходится на случайно оказавшуюся более высокой диагональ, плюс дисбаланс приходится на третью опору, а четвёртый угол висит в воздухе. Потом в зависимости от нагрузки и деформаций либо четвёртый угол просто ляжет на опору, либо "табуретка качнётся", либо всё останется, как было. Вкорячивать в каждый шаг вычислений "если табуретка качнётся, то", и все другие особые случаи --- убить производительность. Куда практичнее, скажем, попросить модель каждые десять тысяч шагов копировать себя в футурь-бэкап. Если задним числом ничего интересного не обнаружилось, то бэкап выбрасывается. Если обнаружилось, что среди этих 10000 шагов должен был произойти особый случай, то запускаем бэкап, попросив его делать свои бэкапы каждые 100 шагов, а потом медленно и печально прошагать нужный бэкап по отдельным шагам, вовремя отработать особый случай, и с этого момента вернуться к оптимистичному прогону по 10000 шагов от бэкапа до бэкапа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 05:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly Moskovsky Код: sql 1. Спасибо Анатолий. Я это проверию на 2-3 ЯП. А потом попробую придумать найти более комплексный пример lazy-comp.Можно посмотреть на KnockoutJS: Computed Observables и How dependency tracking works . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 07:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Siemarglkealon(Ruslan)пропущено... ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбиратьПример, в данном случае, а зачем она тут нужна? Я могу представить себе пользу футурей в абстрактных примерах, но в реальных задачах.... Нужен пример, и тогда посмотреть (я тут видел хаскель изнутри, когда читал спецку с--) у меня был опыт написания вычислений для обработки массивов (инженерные расчёты у нефтяников) обычная задача: на входе есть 10 и больше именованных массивов - части может не быть, части данных может в них не быть, на выходе должно получиться тоже какие-то массивы которые можно посчитать. В идеале ещё должна быть возможно посчитать только часть выходных в общем виде расчёт можно описать вот так: Код: python 1. 2. 3. 4. 5. 6. 7. в нём есть зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов. через год, сотня инженеров базовый код превращают в нечитаемую портянку на 10-ки тыщ строк в кучах модификаций (копипаст и правка - они так привыкли) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 09:29 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов.Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 09:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
По поводу макросов в logger. Не вариант. Т.к есть требование от заказчика. Уровни логгирования должны быть управляемые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 10:11 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonПо поводу макросов в logger. Не вариант. Т.к есть требование от заказчика. Уровни логгирования должны быть управляемые.Ну и пусть себе управляются переменной или переменными. В чём вопрос-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 11:18 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rukealon(Ruslan)зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов.Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :) ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 11:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)iv_an_ruпропущено... Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :) ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился...Эксель? 8:O ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 12:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rukealon(Ruslan)пропущено... ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился...Эксель? 8:O нет, эксель конечно мощная программка, но такие объёмы и интерактивность не тянет, конкурирующий аналог . Собственно под него это решение тоже пойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 12:39 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)у меня был опыт написания вычислений для обработки массивов (инженерные расчёты у нефтяников) обычная задача: на входе есть 10 и больше именованных массивов - части может не быть, части данных может в них не быть, на выходе должно получиться тоже какие-то массивы которые можно посчитать. В идеале ещё должна быть возможно посчитать только часть выходных в общем виде расчёт можно описать вот так: Код: python 1. 2. 3. 4. 5. 6. 7. в нём есть зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов. через год, сотня инженеров базовый код превращают в нечитаемую портянку на 10-ки тыщ строк в кучах модификаций (копипаст и правка - они так привыкли) kealon(Ruslan)iv_an_ruпропущено... Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :) ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился Здесь типичный пример over-engineering (в обоих предложенных решениях). Если минуточку подумать, то что такое значение в функциональном языке и почему оно вычилсяется лениво? Потому что значений там нет, а все значения это функции вычисляющие эти значения. Поэтому не надо придумывать никакой препроцессор или вообще другой язык. Надо просто буквально заменить значения на лямбды их вычисляющие. Это автоматически построит зависимости средствами языка. А для редукции применяется например мемоизация и COW. Ну и для неквалифицированных сотрудников написать пару макросов разворачивающих код вот в это все. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 12:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНадо просто буквально заменить значения на лямбды их вычисляющие....если компилятор не сдохнет, и если вы вытерпите весь сопутсвующий оверхед времени исполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 13:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Хотя конечно в связи с тем что в С++ лямбд нет, то такой код невозможен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 13:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ru.если компилятор не сдохнет, и если вы вытерпите весь сопутсвующий оверхед времени исполнения. Чего вдруг и то и другое? Лямбды это обычные функции с т.з. компилятора. Они не вносят дополнительного оверхеда по скорости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 13:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyiv_an_ru.если компилятор не сдохнет, и если вы вытерпите весь сопутсвующий оверхед времени исполнения. Чего вдруг и то и другое? Лямбды это обычные функции с т.з. компилятора. Они не вносят дополнительного оверхеда по скорости.Как только компилятор не сможет заинлайнить какую-нибудь лямбду, у вас будет лишний вызов функции, с расходом регистров и ломкой конвейеров. Самое то, что нужно для длинного числогрызного цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 13:43 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruКак только компилятор не сможет заинлайнить какую-нибудь лямбду, у вас будет лишний вызов функции, с расходом регистров и ломкой конвейеров. Самое то, что нужно для длинного числогрызного цикла. Нет. Потому вызовов там от силы несколько десятков. Никакой инлайн там не нужен. Это подтверждается тем что интерпретатор не тормозил ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 13:57 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyiv_an_ruКак только компилятор не сможет заинлайнить какую-нибудь лямбду, у вас будет лишний вызов функции, с расходом регистров и ломкой конвейеров. Самое то, что нужно для длинного числогрызного цикла. Нет. Потому вызовов там от силы несколько десятков. Никакой инлайн там не нужен. Это подтверждается тем что интерпретатор не тормозил )))Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:01 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyХотя конечно в связи с тем что в С++ лямбд нет, то такой код невозможен Я акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом свойств (чистота и частичная вычислимость) а в c++ это поскипали. А эти свойства были для чего-то нужны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:02 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruAnatoly Moskovskyпропущено... Нет. Потому вызовов там от силы несколько десятков. Никакой инлайн там не нужен. Это подтверждается тем что интерпретатор не тормозил )))Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;) Коллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly MoskovskyХотя конечно в связи с тем что в С++ лямбд нет, то такой код невозможен Я акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом свойств (чистота и частичная вычислимость) а в c++ это поскипали. А эти свойства были для чего-то нужны...Чистота нужна для mix(), для автоматического параллелизма, и для прочего автоматического вкорячивания троек Хоара. В макроассемблере это всё как-то странно выглядело бы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:06 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytoniv_an_ruпропущено... Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;) Коллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing....Перефразируя старую молитву, Боже, дай мне сил заинлайнить то, что можно заинлайнить, дай мне терпения заоткладывать то, что нельхзя заинлайнить, и дай мне мудрости, чтоб отличить первое от второго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:08 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonКоллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing.... Они ортогональны. Если лямбды все находятся в одной функции, то они могут быть заинлайнены. Просто в большинстве случаев это ни на что не влияет. Поскольку если речь про отложенные вычисления, значит то что могло быть заинлайнено настолько тяжелое что не имеет значения как его вызвать. iv_an_ruЧистота нужна для mix(), для автоматического параллелизма, и для прочего автоматического вкорячивания троек Хоара. В макроассемблере это всё как-то странно выглядело бы :) В моем примере вполне можно в макрос впихнуть параллельное выполнение не меняя юзерского кода. Просто как я уже говорил выше, нужно приоткрыть глаза и увидеть очевидное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonЯ акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом свойств (чистота и частичная вычислимость) а в c++ это поскипали. Поскипали только то, что реализуется средствами языка. Посмотрите http://www.boost.org/doc/libs/1_64_0/libs/phoenix/doc/html/phoenix/starter_kit.html Там все это есть. Другое дело что в императивных языках почти все можно написать без всей этой математической суеты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 14:32 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytoniv_an_ruпропущено... Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;) Коллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing.... одно другому не мешает, ленивый код полностью раскладывается в равноценный императивный - другое дело, что его гораздо больше выходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 17:30 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonЯ акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом свойств (чистота и частичная вычислимость) а в c++ это поскипали. Поскипали только то, что реализуется средствами языка. Посмотрите http://www.boost.org/doc/libs/1_64_0/libs/phoenix/doc/html/phoenix/starter_kit.html Там все это есть. Другое дело что в императивных языках почти все можно написать без всей этой математической суеты. можно, но вот заметил что обычный инженерный состав декларативное описание понимает гораздо лучше императивного По коду, интерпретатор был написан на питоне (строчек 200+), так же как и исходный код. Работать он стал быстрее почти в два раза по сравнению с исходным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 17:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Anatoly Moskovskyпропущено... Поскипали только то, что реализуется средствами языка. Посмотрите http://www.boost.org/doc/libs/1_64_0/libs/phoenix/doc/html/phoenix/starter_kit.html Там все это есть. Другое дело что в императивных языках почти все можно написать без всей этой математической суеты. можно, но вот заметил что обычный инженерный состав декларативное описание понимает гораздо лучше императивного По коду, интерпретатор был написан на питоне (строчек 200+), так же как и исходный код. Работать он стал быстрее почти в два раза по сравнению с исходным.Помнится, на таких задачах питон проигрывал ровно в 100 раз сишному коду. Кстати, недавно опубликовали, как ускорили ПХП7 тоже в два раза относительно прежних версий. Теперь всего в 50 раз медленнее. Не шутка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2017, 23:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
SiemarglПомнится, на таких задачах питон проигрывал ровно в 100 раз сишному коду. Кстати, недавно опубликовали, как ускорили ПХП7 тоже в два раза относительно прежних версий. Теперь всего в 50 раз медленнее. Не шутка.Он всему проигрывает, вот только выбор не на моей стороне был, мне лишь пришлось с этой прогой жить. Причём, больше всего тормозит в ней не расчёт, а пересылка данных приложение<-> питон и постоянные апдейты гуи, на каждый чих в данных, которые они так и не пофиксили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2017, 00:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Нахлынули воспоминания. Наши эксперименты с рендерингом 3Д-графики на С++/Python/PyPy 18150763 Уж 2 года прошло. Мдя. Здесь Змей проиграл С++ где-то 1000-кратно. Видимо динамическая типизация сожгла все полезные мегафлопы. Пай-пай (PyPy) чуть лучше. Где-то в 30 раз отстал от С++. Но все равно в хвосте от трендовых Go/C# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 23:40 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
mayton, там не только динамическая типизация, там ещё и "динамические переменные" (чтение\запись по имени из\в словарь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 07:00 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)azsxМеня просто также удивило, что критичные к времени приложения пишут не на С, я ответа не знаю, хочу спросить. критичные к времени и надёжности приложения пишут не на С всякие контроллёры на ардуино это ширпотреб, от которых ничего критичного не зависит более того там все гарантии нулевые представили, например, как боинг запустить с такими гарантиями? пишут как раз и на C в т.ч. (и сейчас даже в основном). из специализированных языков для авионики вымерли практически все (что не удивительно), кроме SPARK (ADA). ПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиков на C можно писать надежный код, тем более есть всякие статические чекеры, которые проверяют код на соотвествие MISRA (Coverity, ИМНИП, такое может) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 14:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchkealon(Ruslan)пропущено... критичные к времени и надёжности приложения пишут не на С всякие контроллёры на ардуино это ширпотреб, от которых ничего критичного не зависит более того там все гарантии нулевые представили, например, как боинг запустить с такими гарантиями? пишут как раз и на C в т.ч. (и сейчас даже в основном). из специализированных языков для авионики вымерли практически все (что не удивительно), кроме SPARK (ADA). ПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиков на C можно писать надежный код, тем более есть всякие статические чекеры, которые проверяют код на соотвествие MISRA (Coverity, ИМНИП, такое может) главное в этом "пытаются" пока это всё проекты в глубокой бетте, кроме того, си тоже на месте не стоит, но это уже не тот си - Иван уже про один вариант говорил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 14:36 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиков Как имеющего отношение к обучению сотрудников, понимаю, что никто не хочет возится с обучением сотрудников. Если с этим заморочится то у предприятия будут любые специалисты, какие ему надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 14:41 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
netfrogdbpatchПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиков Как имеющего отношение к обучению сотрудников, понимаю, что никто не хочет возится с обучением сотрудников. Если с этим заморочится то у предприятия будут любые специалисты, какие ему надо. это противоречит современным подходам рынка труда - никто не учит кого-то, все берут уже готовых синиьоров-помидоров с годами экспририенса. для того, чтоб стать экспертом в чем-то (не важно в чем), нужно примерно 5 лет, никак не меньше. т.е. получается нужно взять экспертов в Java или C/C++, потом им платить пять лет условно среднюю ЗП для США (плюс 2.75x - налоги, офис, соцобеспечение), т.е. грубо говоря - примерно $2M на человека (за пять лет), чтоб он в итоге сказал - "я устал, мне не интересна эта ваша ADA, я ухожу?", даже не написав ни одной строчки боевого кода? а брать в авионику джуниоров.... ну вы поняли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 15:39 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиковВ топку Аду. Бедная экосистема деляет программирование на языке ненадёжным просто в силу невозможности ни людей найти, ни тем более популярные библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 16:46 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatch, iv_an_ru Господа, что у нас, что в америке, да и в любой нормальной стране на оборонку "делают" людей под себя, интуристов туда не берут, у них контракты на "много лет", со всеми полагающимися военным плюшками и кнутами. И сойти вот так просто - не получится. Н-р, в штатах надо быть полным сноуденом, что-бы слить такое место работы. iv_an_rudbpatchПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиковВ топку Аду. Бедная экосистема деляет программирование на языке ненадёжным просто в силу невозможности ни людей найти, ни тем более популярные библиотеки.Фантазировать на чём писать удел коммерческих писателей, военные будут писать на том, что в приказе укажут. Отсутствие библиотек ни разу не аргумент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 17:23 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Ехидно напомню, что сам C++ появился в AT&T, которая была увязана с правительством похлеще любого оборонского заказчика. И что интересно, у нашего директора, на тот момент недавнего иммигранта из Англии, а вообще-то стопроцентного кенийца, кабинет был по соседству с кабинетом Страуструпа, то есть в самом логове --- и ничего. Это в эксплуатации всё мрачно с допусками и т.п., а в разработке всё же попроще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 18:50 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_ru, ну что сказать, прямо по Гансу Христиану так же можно добавить и интернет, и РБД - тоже из оборонки вышли, подкинули "маленько" на "авось что выйдет" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 23:52 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Вся вычислительная техника начиная с работ Тьюринга пахала на военку. И давайте покончим с этим. Нудно ведь, капец! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 23:56 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
maytonВся вычислительная техника начиная с работ Тьюринга пахала на военку. И давайте покончим с этим. Нудно ведь, капец! Любое надёжное ПО будет выглядеть нудным как и процесс его написания Херак-херак и в продакшн - куда веселее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 08:03 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилmaytonВся вычислительная техника начиная с работ Тьюринга пахала на военку. И давайте покончим с этим. Нудно ведь, капец! Любое надёжное ПО будет выглядеть нудным как и процесс его написания Херак-херак и в продакшн - куда веселееЛюбой серьёзный проект естественным образом разбивается на три этапа --- самый трудный, самый длинный и самый нудный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 08:38 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchПО для F35 правда пытаются писать на C++, мотивируя тем, что на рынке невозможно найти ADA разработчиковВ топку Аду. Бедная экосистема деляет программирование на языке ненадёжным просто в силу невозможности ни людей найти, ни тем более популярные библиотеки. ты однако странный. какие еще в .....у популярные библиотеки? в авионике, как и в любой realtime отрасли вроде АСУТП (или как он там по подному называется, промышленная автоматика?) там вообще все свое узкоспециализированное, там эти ваши бусты нужны как зайцу стоп сигнал. и дело не в каком-то там синтаксисе языка, дело в наличии опыта работы именно в данной отрасли, понимании и умении подходов(паттернах), и предмета (физики процессов). как-то глупо прийти к суровым мужикам, которые делают управление атомными электростанциями, и начать им втюхивать вчера прочитанное откровение про какой очердной MVС/MVVM или блин про Promises на лямбда трахимонадах - тебя, мягко говоря, не поймут. P.S. В то, что ADA как язык убога - согласен на все 146%, я в бытность ее всю просмотрел - не возбудила ни разу, по библиотекам SPARK же сильно мало информации в публичном доступе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 13:12 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchiv_an_ruпропущено... В топку Аду. Бедная экосистема деляет программирование на языке ненадёжным просто в силу невозможности ни людей найти, ни тем более популярные библиотеки. ты однако странный. какие еще в .....у популярные библиотеки?Инструментальные, само собой. Чтобы покрыть тестами не просто хорошо, а хорошо с гарантией, чтобы уложиться во временные лимиты не просто с запасом, а с подтверждённым статанализом запасом, чтобы не изобретать свои тройки Хоара и инварианты циклов на каждую сортировку пузырьком и набивать их с опечатками, а использовать готовые. Ещё важнее --- чтобы можно было добавить инварианты времени существования объекта и т.д. Ничего из этого в конечном итоге не попадёт на борт, но без этого на борт могут попасть дополнительные ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 14:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Можно написать код на высокоуровневом средстве а потом перегнать в С. Затем в программу для Я думаю, по скорости оно будет не хуже написанного вручную. Неправильно написанный код на ассемблере может легко подсадить систему.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 14:33 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchпропущено... ты однако странный. какие еще в .....у популярные библиотеки?Инструментальные, само собой. Чтобы покрыть тестами не просто хорошо, а хорошо с гарантией, чтобы уложиться во временные лимиты не просто с запасом, а с подтверждённым статанализом запасом, чтобы не изобретать свои тройки Хоара и инварианты циклов на каждую сортировку пузырьком и набивать их с опечатками, а использовать готовые. Ещё важнее --- чтобы можно было добавить инварианты времени существования объекта и т.д. Ничего из этого в конечном итоге не попадёт на борт, но без этого на борт могут попасть дополнительные ошибки. все это в SPARK/ADA есть. http://www.adacore.com/sparkpro/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 14:59 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchiv_an_ruпропущено... Инструментальные, само собой. Чтобы покрыть тестами не просто хорошо, а хорошо с гарантией, чтобы уложиться во временные лимиты не просто с запасом, а с подтверждённым статанализом запасом, чтобы не изобретать свои тройки Хоара и инварианты циклов на каждую сортировку пузырьком и набивать их с опечатками, а использовать готовые. Ещё важнее --- чтобы можно было добавить инварианты времени существования объекта и т.д. Ничего из этого в конечном итоге не попадёт на борт, но без этого на борт могут попасть дополнительные ошибки. все это в SPARK/ADA есть. http://www.adacore.com/sparkpro/ "Всего" быть не может, потому что хорошему пруверу для хороших результатов надо скормить не только аннотированную программу, а ещё и аксиоматику предметной области, иначе найдётся мало чего интереснее неинициализированных переменных. А во-вторых, кроме статического анализа есть ещё куча технологий, которые ничего не дадут в плане бумаг для соответствия стандартам, но баги ловят ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:05 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchпропущено... все это в SPARK/ADA есть. http://www.adacore.com/sparkpro/ "Всего" быть не может, потому что хорошему пруверу для хороших результатов надо скормить не только аннотированную программу, а ещё и аксиоматику предметной области , иначе найдётся мало чего интереснее неинициализированных переменных. А во-вторых, кроме статического анализа есть ещё куча технологий, которые ничего не дадут в плане бумаг для соответствия стандартам, но баги ловят ;) ой да ладно, и что такое для этого есть в C++ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 16:24 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
dbpatchiv_an_ruпропущено... "Всего" быть не может, потому что хорошему пруверу для хороших результатов надо скормить не только аннотированную программу, а ещё и аксиоматику предметной области , иначе найдётся мало чего интереснее неинициализированных переменных. А во-вторых, кроме статического анализа есть ещё куча технологий, которые ничего не дадут в плане бумаг для соответствия стандартам, но баги ловят ;) ой да ладно, и что такое для этого есть в C++ ?Если сейчас влезу-таки в пермский ПД-35, то расскажу подробно. Просто я знаю людей, которые умеют в целях наживы разрабатывать эти аксиоматики, но не знаю, кто как дальше их использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 17:16 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
ИзопропилmaytonВся вычислительная техника начиная с работ Тьюринга пахала на военку. И давайте покончим с этим. Нудно ведь, капец! Любое надёжное ПО будет выглядеть нудным как и процесс его написания Херак-херак и в продакшн - куда веселее Да я не про разработку ПО. А про нудность наших "военных" кодеров... От их пафоса уже некуда бежать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2017, 22:35 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
iv_an_rudbpatchпропущено... ой да ладно, и что такое для этого есть в C++ ?Если сейчас влезу-таки в пермский ПД-35, то расскажу подробно. Просто я знаю людей, которые умеют в целях наживы разрабатывать эти аксиоматики, но не знаю, кто как дальше их использует. господи, да кому это интересно? есть какая-то проприетарная самописка в прериях замкадья, и что? к чему это вообще было упомянуто? подобные вариации экспертных систем можно исполнить на чем угодно, да хоть на QBasic, это в принципе не интересно в аспекте обсуждения применимости языков и сред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2017, 12:31 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
вот очень хорошо написано by Allen Holub: (коротко: C++ для больших ООП-проектов, где требуется сопровождение (без хорошего ООП сопровождение = АД)) автор 90.1. Если проект не ориетирован на объекты, то используйте С. Позвольте мне начать, сказав, что нет абсолютно ничего дурного в хорошо выполненном структурном проектировании. Как то так получилось, что я предпочитаю объектно-ориентированный (ОО) подход, ибо мне кажется, что я мыслю ОО способом, но было бы самонадеянным назвать ОО проектирование "лучшим". Я верю, что ОО подход дает вам легче сопровождаемый код, если программа большая. Выгода менее явна в случае программ меньшего размера, потому что объектная ориентация обычно добавляет сложность на уровне приложения. (Главная выгода ОО заключается в лучшем сопровождении за счет абстракции данных, а не сокращения сложности). С++ особенно не выносит небрежного проектирования. Мой опыт говорит, что программы на С++, которые не придерживаются объектно-ориентированного подхода, почти несопровождаемы, соединяя все худшие свойства структурного и объектно-ориентированного проектов и не давая каких-либо выгод как от того, так и от другого. Со мной не проходит такой аргумент, что можно использовать С++ как "улучшенный" С. Для того, чтобы это было правдой, этот язык слишком сложный - кривая обучения слишком крутая. Если вы не используете преимущества объектно-ориентированных свойств этого языка, то в его использовании мало смысла. Некорректное использование объектно-ориентированных свойств лишь увеличит число проблем. С++ - язык трудный как для изучения, так и для использования. При написании программ на С++ столько тонкостей, что даже опытные программисты временами их забывают. Кроме того, даже простой поиск достаточного количества программистов на С++, чтобы писать, и значительно меньшего, чтобы сопровождать ваш код - трудный процесс. Вы вводите себя в заблуждение, если верите, что С++ может быть использован безыскусно. Слишком просто для неопытного программиста сделать что-нибудь неправильно и даже не знать об этом, способствуя бесполезным затратам времени на выслеживание ошибки, которая и так хорошо видна. Многие ошибки такого типа даже проникают необнаруженными через этап тестирования и попадают в конечный продукт, делая сопровождение сомнительным предприятием. Зачем же вообще использовать С++? Ответ состоит в том, что должным образом использованный С++ дает вам значительные выгоды в сопровождении. Вы можете делать значительные изменения в поведении программы (типа перевода всей программы с английского языка на японский или переноса в другую операционную среду) при помощи незначительных изменений в исходном коде, ограниченных малым уголком этого кода. Подобные изменения в структурной системе обычно потребуют модификации поистине каждой функции в программе. ВЕРЕВКА ДОСТАТОЧНОЙ ДЛИНЫ, ЧТОБЫ ВЫСТРЕЛИТЬ СЕБЕ В НОГУ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2018, 15:28 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
log_hereПреимущества на C: думаю, скорость и большая универсальность (C понимают и некоторые другие языки). Преимущества на C++: больше всяких новинок (начиная с C++11), больше манёвров для изменений. Кто что думает? Я возможно уже писал... Я думаю, ты просто не разбираешься в программировании на этих двух родственных языках... У С++ большая строгость и большая выразительность (это значит, возможность написать больше меньшим кол-вом строк кода). У чистого С нет сейчас никаких преимуществ перед С++, при условии что на целевой платформе есть компиляторы обоих языков. Так что однозначно лучше писать код на С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 14:14 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
MasterZivУ С++ большая строгость и большая выразительность (это значит, возможность написать больше меньшим кол-вом строк кода). Что достигается заметанием тонн говнотемплейтов с глаз долой в стандартную библиотеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2018, 13:42 |
|
||
|
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Наличие стандартизованных говнотемплейтов --- уже плюс, само по себе. А то наблюдал недавно у клиента самописные хэш-таблицы, в которых всё было замечательно, только в одном месте был пропущен '&', из-за чего все вносимые ключи получали один и тот же хэш. Оно, в принципе, даже работало, только "чуть-чуть" медленнее, чем ожидал автор :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2018, 23:54 |
|
||
|
|

start [/forum/moderation_log.php?user_name=db2%D1%82%D0%B5%D1%81%D1%82]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
485ms |
get tp. blocked users: |
2ms |
| others: | 440ms |
| total: | 1165ms |

| 0 / 0 |
