Информация об изменениях

Сообщение Re[5]: Почему GO нишевый? Будущее за zig? Ошибаюсь? от 11.07.2023 7:46

Изменено 11.07.2023 7:47 korvin_

Re[5]: Почему GO нишевый? Будущее за zig? Ошибаюсь?
Здравствуйте, so5team, Вы писали:

S>Не Pzz, но перечислю аргументы, с которыми мне приходилось сталкиваться (в основном по сравнению с Си, C++ и Java):


S>* сборка мусора. Не нужно думать о памяти;


В Java тоже. Но думать иногда всё равно надо, что в Java, что в Go. См. "утечка горутин", например.

S>* проверки в run-time, выход за пределы массива не приводит к порче памяти и вот это вот все;


В Java тоже.

S>* defer. Удобно прибирать за собой без goto end, finally и RAII;


Чем defer удобней try-with-resources и RAII?

S>* простая и понятная обработка ошибок, нет исключений, не нужно думать о том, может ли что-то вылететь из функции/метода (при этом, есть ощущение, что на паники всем пофиг);


if err := func1() {
    return err
}
if err := func2() {
    return err
}
if err := func3() {
    return err
}
...


Очень удобно, да.

S>* нет исключений, не нужно думать о том, может ли что-то вылететь из функции/метода (при этом, есть ощущение, что на паники всем пофиг);


Не всем. А кому пофиг на паники, тому и на исключения пофиг. В чём разница?

S>* простое и удобное ООП без многоэтажных иерархий классов;


В Go нет ООП. А довольно простое и удобное, например, в OCaml.

S>* очень быстрая компиляция и удобная кросскомпиляция;


У Object Pascal / Delphi тоже быстрая компиляция.

S>* маленький объем результирующих бинарников и нет необходимости таскать за собой многомегабайтные JRE.


Но по сравнению с C -- не такой маленький.
Re[5]: Почему GO нишевый? Будущее за zig? Ошибаюсь?
Здравствуйте, so5team, Вы писали:

S>Не Pzz, но перечислю аргументы, с которыми мне приходилось сталкиваться (в основном по сравнению с Си, C++ и Java):


S>* сборка мусора. Не нужно думать о памяти;


В Java тоже. Но думать иногда всё равно надо, что в Java, что в Go. См. "утечка горутин", например.

S>* проверки в run-time, выход за пределы массива не приводит к порче памяти и вот это вот все;


В Java тоже.

S>* defer. Удобно прибирать за собой без goto end, finally и RAII;


Чем defer удобней try-with-resources и RAII?

S>* простая и понятная обработка ошибок


if err := func1() {
    return err
}
if err := func2() {
    return err
}
if err := func3() {
    return err
}
...


Очень удобно, да.

S>* нет исключений, не нужно думать о том, может ли что-то вылететь из функции/метода (при этом, есть ощущение, что на паники всем пофиг);


Не всем. А кому пофиг на паники, тому и на исключения пофиг. В чём разница?

S>* простое и удобное ООП без многоэтажных иерархий классов;


В Go нет ООП. А довольно простое и удобное, например, в OCaml.

S>* очень быстрая компиляция и удобная кросскомпиляция;


У Object Pascal / Delphi тоже быстрая компиляция.

S>* маленький объем результирующих бинарников и нет необходимости таскать за собой многомегабайтные JRE.


Но по сравнению с C -- не такой маленький.