Сообщение Re[13]: Оставаться в С++ или уходить? от 30.09.2019 11:03
Изменено 30.09.2019 11:05 lpd
Re[13]: Оставаться в С++ или уходить?
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Здравствуйте, lpd, Вы писали:
SVZ>Во-первых, из бэкенда С++ никто не вытеснял. Бэкенд — он разный бывает.
Разный бэкенд? Ну может <10% на C++, больше не видел.
SVZ>Есть большая ниша, где код педалить надо побыстрее, рабочая сила нужна подешевше, условия меняются, деплоить надо поскорее... а время отклика упирается во время чтения данных из СУБД.
SVZ>Там рулят ява с шарпом.
Ну о том и речь. А С++ сейчас в основном только в десктоп-софте, иначе никаких гигагерцев не хватит.
lpd>>Никто не хочет в большой программе при добавлении каждого нового указателя думать, а не получится ли кольцевая сылка. Зачем это?
SVZ>Тут ключевое: "никто не хочет думать"
При правильно выбранной архитектуре думать не надо, делаешь по образу и подобию.
Для "правильности" архитектуры критериев много. Ты зачем-то добавляешь требования умных указателей(отсутствие круговых ссылок), хотя оно вполне может противоречить более важным критериям архитектуры.
lpd>>Я не особенно опытный архитектор, но как-то писал сервер для мобильных клиентов на С++, и круговые ссылки там были(умные указатели, естественно, не использовал).
SVZ>Круговые ссылки ессно нужны, иначе как ты получишь доступ от дочернего объекта к родителю.
SVZ>Но они не должны влиять на время жизни объектов.
Не понял. С умными указателями зависимость между круговыми ссылками и временем жизни объектов прямая. А ссылается на В, В обратно ссылается на А. У обоих счетчик ссылок будет =1, если не использовать weak_ptr. Я что-то упустил?
lpd>>Язык должен позволять выразить любую архитектуру, причем простым и удобным образом. А не требовать от разработчиков соблюдать какие-то искуственные правила, усложняя их жизнь разнообразием видов weak/shared/unique поинтеров.
SVZ>Ну вообще-то не должен.
Тут мы приходим к объективным требованиям и предпочтениям. Сложности в софте обычно достаточно и без умных указателей, поэтому лишняя головная боль не нужна.
SVZ>В каждом языке есть свои плюсы и минусы. Универсального всемогутора не получится. D был неплохой кандидат, но чегой-то не взлетает.
Не все, а бэкенд и десктоп можно было бы писать на одном и том же — не вижу сложностей кроме легаси.
SVZ>В Яве мне нравилась иммутабельность объектов и атомарность присваивания ссылок. Для многопоточного кода — просто супер.
SVZ>Но зато хрен ты сделаешь cache-friendly данные. Для Явы/шарпа это будет жутким извратом, зато на С/С++ получается естественным образом.
Яву лично я не люблю даже не из-за скорости, а из-за самого наличия JVM и промежуточного представления кода. Но это вопрос вкуса.
А размещение данных в памяти считаю элементарной необходимой для любого языка общего назначения вещью, которую в яве и c# убрали без серьезных причин, обосновывая байт-код ненужной на практике портабельностью.
SVZ>Здравствуйте, lpd, Вы писали:
SVZ>Во-первых, из бэкенда С++ никто не вытеснял. Бэкенд — он разный бывает.
Разный бэкенд? Ну может <10% на C++, больше не видел.
SVZ>Есть большая ниша, где код педалить надо побыстрее, рабочая сила нужна подешевше, условия меняются, деплоить надо поскорее... а время отклика упирается во время чтения данных из СУБД.
SVZ>Там рулят ява с шарпом.
Ну о том и речь. А С++ сейчас в основном только в десктоп-софте, иначе никаких гигагерцев не хватит.
lpd>>Никто не хочет в большой программе при добавлении каждого нового указателя думать, а не получится ли кольцевая сылка. Зачем это?
SVZ>Тут ключевое: "никто не хочет думать"
Для "правильности" архитектуры критериев много. Ты зачем-то добавляешь требования умных указателей(отсутствие круговых ссылок), хотя оно вполне может противоречить более важным критериям архитектуры.
lpd>>Я не особенно опытный архитектор, но как-то писал сервер для мобильных клиентов на С++, и круговые ссылки там были(умные указатели, естественно, не использовал).
SVZ>Круговые ссылки ессно нужны, иначе как ты получишь доступ от дочернего объекта к родителю.
SVZ>Но они не должны влиять на время жизни объектов.
Не понял. С умными указателями зависимость между круговыми ссылками и временем жизни объектов прямая. А ссылается на В, В обратно ссылается на А. У обоих счетчик ссылок будет =1, если не использовать weak_ptr. Я что-то упустил?
lpd>>Язык должен позволять выразить любую архитектуру, причем простым и удобным образом. А не требовать от разработчиков соблюдать какие-то искуственные правила, усложняя их жизнь разнообразием видов weak/shared/unique поинтеров.
SVZ>Ну вообще-то не должен.
Тут мы приходим к объективным требованиям и предпочтениям. Сложности в софте обычно достаточно и без умных указателей, поэтому лишняя головная боль не нужна.
SVZ>В каждом языке есть свои плюсы и минусы. Универсального всемогутора не получится. D был неплохой кандидат, но чегой-то не взлетает.
Не все, а бэкенд и десктоп можно было бы писать на одном и том же — не вижу сложностей кроме легаси.
SVZ>В Яве мне нравилась иммутабельность объектов и атомарность присваивания ссылок. Для многопоточного кода — просто супер.
SVZ>Но зато хрен ты сделаешь cache-friendly данные. Для Явы/шарпа это будет жутким извратом, зато на С/С++ получается естественным образом.
Яву лично я не люблю даже не из-за скорости, а из-за самого наличия JVM и промежуточного представления кода. Но это вопрос вкуса.
А размещение данных в памяти считаю элементарной необходимой для любого языка общего назначения вещью, которую в яве и c# убрали без серьезных причин, обосновывая байт-код ненужной на практике портабельностью.
Re[13]: Оставаться в С++ или уходить?
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Здравствуйте, lpd, Вы писали:
SVZ>Во-первых, из бэкенда С++ никто не вытеснял. Бэкенд — он разный бывает.
Разный бэкенд? Ну может <10% на C++, больше не видел.
SVZ>Есть большая ниша, где код педалить надо побыстрее, рабочая сила нужна подешевше, условия меняются, деплоить надо поскорее... а время отклика упирается во время чтения данных из СУБД.
SVZ>Там рулят ява с шарпом.
Ну о том и речь. А С++ сейчас в основном только в десктоп-софте, иначе никаких гигагерцев и гигабайтов не хватит.
lpd>>Никто не хочет в большой программе при добавлении каждого нового указателя думать, а не получится ли кольцевая сылка. Зачем это?
SVZ>Тут ключевое: "никто не хочет думать"
При правильно выбранной архитектуре думать не надо, делаешь по образу и подобию.
Для "правильности" архитектуры критериев много. Ты зачем-то добавляешь требования умных указателей(отсутствие круговых ссылок), хотя оно вполне может противоречить более важным критериям архитектуры в некоторых случаях.
lpd>>Я не особенно опытный архитектор, но как-то писал сервер для мобильных клиентов на С++, и круговые ссылки там были(умные указатели, естественно, не использовал).
SVZ>Круговые ссылки ессно нужны, иначе как ты получишь доступ от дочернего объекта к родителю.
SVZ>Но они не должны влиять на время жизни объектов.
Не понял. С умными указателями зависимость между круговыми ссылками и временем жизни объектов прямая. А ссылается на В, В обратно ссылается на А. У обоих счетчик ссылок будет =1, если не использовать weak_ptr. Я что-то упустил?
lpd>>Язык должен позволять выразить любую архитектуру, причем простым и удобным образом. А не требовать от разработчиков соблюдать какие-то искуственные правила, усложняя их жизнь разнообразием видов weak/shared/unique поинтеров.
SVZ>Ну вообще-то не должен.
Тут мы приходим к объективным требованиям и предпочтениям. Сложности в софте обычно достаточно и без умных указателей, поэтому лишняя головная боль не нужна.
SVZ>В каждом языке есть свои плюсы и минусы. Универсального всемогутора не получится. D был неплохой кандидат, но чегой-то не взлетает.
Не все, а бэкенд и десктоп можно было бы писать на одном и том же — не вижу сложностей кроме легаси.
SVZ>В Яве мне нравилась иммутабельность объектов и атомарность присваивания ссылок. Для многопоточного кода — просто супер.
SVZ>Но зато хрен ты сделаешь cache-friendly данные. Для Явы/шарпа это будет жутким извратом, зато на С/С++ получается естественным образом.
Яву лично я не люблю даже не из-за скорости, а из-за самого наличия JVM и промежуточного представления кода. Но это вопрос вкуса.
А размещение данных в памяти считаю элементарной необходимой для любого языка общего назначения вещью, которую в яве и c# убрали без серьезных причин, обосновывая байт-код ненужной на практике портабельностью.
SVZ>Здравствуйте, lpd, Вы писали:
SVZ>Во-первых, из бэкенда С++ никто не вытеснял. Бэкенд — он разный бывает.
Разный бэкенд? Ну может <10% на C++, больше не видел.
SVZ>Есть большая ниша, где код педалить надо побыстрее, рабочая сила нужна подешевше, условия меняются, деплоить надо поскорее... а время отклика упирается во время чтения данных из СУБД.
SVZ>Там рулят ява с шарпом.
Ну о том и речь. А С++ сейчас в основном только в десктоп-софте, иначе никаких гигагерцев и гигабайтов не хватит.
lpd>>Никто не хочет в большой программе при добавлении каждого нового указателя думать, а не получится ли кольцевая сылка. Зачем это?
SVZ>Тут ключевое: "никто не хочет думать"
Для "правильности" архитектуры критериев много. Ты зачем-то добавляешь требования умных указателей(отсутствие круговых ссылок), хотя оно вполне может противоречить более важным критериям архитектуры в некоторых случаях.
lpd>>Я не особенно опытный архитектор, но как-то писал сервер для мобильных клиентов на С++, и круговые ссылки там были(умные указатели, естественно, не использовал).
SVZ>Круговые ссылки ессно нужны, иначе как ты получишь доступ от дочернего объекта к родителю.
SVZ>Но они не должны влиять на время жизни объектов.
Не понял. С умными указателями зависимость между круговыми ссылками и временем жизни объектов прямая. А ссылается на В, В обратно ссылается на А. У обоих счетчик ссылок будет =1, если не использовать weak_ptr. Я что-то упустил?
lpd>>Язык должен позволять выразить любую архитектуру, причем простым и удобным образом. А не требовать от разработчиков соблюдать какие-то искуственные правила, усложняя их жизнь разнообразием видов weak/shared/unique поинтеров.
SVZ>Ну вообще-то не должен.
Тут мы приходим к объективным требованиям и предпочтениям. Сложности в софте обычно достаточно и без умных указателей, поэтому лишняя головная боль не нужна.
SVZ>В каждом языке есть свои плюсы и минусы. Универсального всемогутора не получится. D был неплохой кандидат, но чегой-то не взлетает.
Не все, а бэкенд и десктоп можно было бы писать на одном и том же — не вижу сложностей кроме легаси.
SVZ>В Яве мне нравилась иммутабельность объектов и атомарность присваивания ссылок. Для многопоточного кода — просто супер.
SVZ>Но зато хрен ты сделаешь cache-friendly данные. Для Явы/шарпа это будет жутким извратом, зато на С/С++ получается естественным образом.
Яву лично я не люблю даже не из-за скорости, а из-за самого наличия JVM и промежуточного представления кода. Но это вопрос вкуса.
А размещение данных в памяти считаю элементарной необходимой для любого языка общего назначения вещью, которую в яве и c# убрали без серьезных причин, обосновывая байт-код ненужной на практике портабельностью.