LINUX.ORG.RU
Ответ на: комментарий от KRoN73

Именно по синтаксической части (мы же о ней спорим?),

Я вообще не спорю...

Просто черпаю знания, пишу свои.

На счёт goto :)

Презабавнийшая фигня с ним. Конечно же без него никуда.

Это было бы очень большое упущение по ограничению в гибкости и оптимизации высокопроизводительных алгоритмов (только идиоты думают, что goto вред).

Но чаще встречаются идиоты, которые не понимают для чего нужен goto.

и потому в энтерпрайз языках его завуалировали.

Есть метки, на которые ссылаются определённые конструкции языка. И это есть правильно.

Против Goto и т.п. конструкций «орут», только те, которые пишут среднестатистические приложения, используют чьи-то библиотеки, а сами ничего толком и не писали.

Serg_HIS
()
Ответ на: комментарий от next_time

Таки да, но можно что-нибудь про корпоративный стандарт наплести. Говорят, пользователям mercurial при встече с git-фанбоями помогает.

FedyaPryanichkov ★★
()
Ответ на: комментарий от next_time

/0 же?

Нет. Например, высокая мощность и синтаксическая насыщенность конструкций может приводить к написанию write-only кода. Поэтому может быть злом. Собственно, JS именно такое зло. В нём очень сложно анализировать чужой код, поддерживать, разбираться в своём коде в крупном проекте год спустя. Его гибкость провоцирует на использование неочевидных решений. Беда, которая в своё время доставала в Perl'е.

KRoN73 ★★★★★
()
Ответ на: комментарий от Serg_HIS

На счёт goto :)
Презабавнийшая фигня с ним. Конечно же без него никуда.

Ну, х.з. Я как-то без него стал обходиться ещё во времена перехода с примитивных Бейсиков на QBasic :) И хотя в Си++ за лет 7 активной практики в 1990-х использовал несколько раз, чуть позже на Forth и Java ни разу потребность в goto не возникла. Я не противник GOTO, я исписал тонны кода на ассемблерах и машкодах, где без него никуда, но в практике на ЯВУ в нём обычно просто не возникает надобности.

Я и в последние лет 15, что пишу на PHP, не смотря на то, что язык поддерживает goto, не применял его ни разу :)

идиоты
идиоты
орут
конструкций «орут», только те, которые пишут среднестатистические приложения, используют чьи-то библиотеки

Э... Тебя никто из сторонников структурного программирования сильно не обидел? А то какая-то, прямо, недобрая у тебя к ним аура :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Другой формат работы с выделением памяти и указателями (из-за архитектурного различия — сборки мусора)

Конечно же это нельзя выделять в особенность как именно языка.

Хотя наверное сборщик мусора, к удивлению некоторых, такие есть в C++

Ну да ладно.

Самое большое отличие помимо того, что в Java отсутсвует нативное обращение к памяти ,что наверное и подразумевалось под сборщиком мусора - это Механизм Аннотаций.

С помошью него какраз и осуществляется разработка невиданных в других языках, Энтерпрайз Фреймороков, типа EJB или что нибудь подобного.

Serg_HIS
()
Ответ на: комментарий от KRoN73

Э... Тебя никто из сторонников структурного программирования сильно не обидел?

Извини если обидел.

А ты реально писал что нибудь в области архиваторов или обрработки больших потоков данных в виде перобразования изображения на лету или звука?

Например свой компрессор в JPEG или что нибудь подобное?

Serg_HIS
()
Ответ на: комментарий от KRoN73

вот именно, что нехитрый.

В С++ нет анонимных классов, а в Java - перегрузки операторов. К примеру. Шаблоны так вообще сооовсем другая история.

pashazz ★★★★
()
Ответ на: комментарий от KRoN73

Я не противник GOTO

Просто уведомил, что он никуда не делся из языка (ибо глупо) Присутсвует в других формациях.

Я же не обидеть пришёл, просто делюсь заниями.

Просто предлагаю поднять докумментацию при случае и всего - то.

Зачем обижаться если не знаешь?

Serg_HIS
()
Ответ на: комментарий от Serg_HIS

А ты реально писал что нибудь в области архиваторов или обрработки больших потоков данных в виде перобразования изображения на лету или звука?

Мои архиваторы остались на уровне RLE (это было во времена, когда ещё MS-DOS не начала шествовать по стране :D)

С обработкой изображений возился много. От своих методов сжатия (сопоставимых с JPEG, когда он только входил на рынок) до всякого 3D-рендеринга, тренсформаций и т.п.

Видео — занимался фильтрацией, отбрасывая шумы по межкадровой разнице.

Вот со звуком сам не работал, только с готовыми либами :)

...

Всё это с ~1990-го по 1999-й. Потом ушёл в Web.

KRoN73 ★★★★★
()
Ответ на: комментарий от pashazz

вот именно, что нехитрый.
В С++ нет анонимных классов, а в Java - перегрузки операторов

Вот, чтобы передать всю эту разницу, и требуется пара страниц текста с описанием различий. Или ты полагаешь, что программист на Си++ не может писать не перегружая операторы? :)

К примеру. Шаблоны так вообще сооовсем другая история.

Вот тут, да, упустил. Тут больше, чем на пару страниц наберётся. Я в голове держу Си++ 1990-х гг, тогда шаблонами почти никто не пользовался.

KRoN73 ★★★★★
()
Ответ на: комментарий от Serg_HIS

Я до сих пор этим занимаюсь, использую все нюансы железа и языковых платформ.

С низкого уровня я ушёл где-то во время Pentium и 3D-ускорителей. На первом стало сложно считать растактовки, по вторым не было универсальных способов работы с железом. Так что последний практический код на ассемблере писал где-то в районе 1996-го, а с железом перестал работать около 1997-го.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Сейчас, к счастью, уже почти стандарт дефакто OpenCL.

Но думаю по обработке данных - отдельная ветка должна быть?

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

Serg_HIS
()
Ответ на: комментарий от pashazz

В С++ нет анонимных классов

#include <iostream>

class A {
public:
    A() {
        std::cout << "A c-tor" << std::endl;
    }
    ~A() {
        std::cout << "A d-tor" << std::endl;
    }
};

void foo() {

    class : public A {
        public: void bar() {
            std::cout << "Who am I?" << std::endl;
        }
    } a;

    a.bar();

    std::cout << "Anonymous class" << std::endl;
}

int main(int argc, char** argv) {

    foo();

    return 0;
}
fluorite ★★★★★
()
Последнее исправление: fluorite (всего исправлений: 1)
Ответ на: комментарий от aedeph_

Сними шлем виртуальной реальности :)

Он у тебя устарел и глючит :)

Serg_HIS
()
Ответ на: комментарий от next_time

Где и кем говорено? Можно ссылочки с бенчмарками, если ты так категоричен? И на какой платформе .NET тестировали? Ах, наверное на Windows, потому что под другие платформы официальной реализации нет.

roy ★★★★★
()
Ответ на: комментарий от Lavos

Конечно, юзер дурак. Оценять производительность можно только с помощью специализитованных тестов. Да и и без оценки качества написания кода никуда. Можно наговнокодить на qt и взять аналогичкую программу на gtk2 написаную 7 лет назад и вылизаную за эти года и верещать о том что qt тормоз. Да и сравнение qt и gtk не совсем коректно так как qt это фреймворк а gtk всего лишь графическая либа. По сути gtk кроме рисования формочек(окошек) ничего не умеет, в то время когда на qt можно решить почти любую задачу.

А если говорить как юзер то у меня qt не тормозит, а вот gtk зачастую не только тормозит но и косячит как гуй (в основном это касается gtk3 конечно)

Noob_Linux ★★★★
()
Ответ на: комментарий от fluorite

В С++ нет анонимных классов

Это частный случай, в Java есть и другие, которые С++ не умеет. Впрочем они большей частью использовались вместо лямбд.

anonymous
()
Ответ на: комментарий от Noob_Linux

А мне не нужны специализированные тесты. Мне достаточно посмотреть как в Kde окошки при переключении по alt+tab построчно прорисовываются, а в Xfce моментально.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

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

Noob_Linux ★★★★
()
Ответ на: комментарий от next_time

1) из явы _намеренно_ исключены все потенциально опасные конструкции.

2) полумеры. пишем критические участки кода на С и подключаем через JNI

итого - сисярп невнятный гибрид с кастрированной кроссплатформенностью. единственная польза - разгон разработки явы.

Ford_Focus ★★★★★
()
Ответ на: комментарий от Serg_HIS

Я не сомневаюсь в том, что ты достаточно компетентен, чтобы делать выводы на собственном практическом опыте.

f1xmAn ★★★★★
()
Ответ на: комментарий от KRoN73

И фигли ты до уеб-макаки то деградировал? Альцгеймер?

anonymous
()
Ответ на: комментарий от next_time

а ещё в С# полноценные инты (вкл unsigned) и прочее, прочее, что может в некоторых ситуациях очень значительно сказываться

А в Java чем они тебе не полноценные?

Legioner ★★★★★
()
Ответ на: комментарий от next_time

вкратце: в джава есть сборщик мусора, но нет полноценного ООП и шаблонов.

Что именно делает ООП в джаве неполноценным?

Legioner ★★★★★
()
Ответ на: комментарий от Ford_Focus

2) полумеры. пишем критические участки кода на С и подключаем через JNI

Ты не прав совершенно.

Напрмер взять тот же OpenCL (это первое что пришло на ум).

Вызов его функция возможен только через JNI.

Или не считается нужным использовать доступ к аппаратным возможностям для жабы. Пусть мол она хлюпается в своём болоте жаба машины, и никуда нос не суёт?

Считаешь, жаба настолько самодостаточна, что ей своего болота хватает? :)

Считается что программирование - это искусство.

Только от программиста зависит, насколько он удачно («красиво»), применит тот или иной подход.

Одну и ту же вешь можно написать несколькими способами. К этому относятся теже JNI и возможность переходить по меткам («goto»).

Serg_HIS
()
Ответ на: комментарий от KRoN73

Ну в джаве нет RAII, что сразу сильно меняет подход к управлению ресурсами.

Gorthauer ★★★★★
()
Ответ на: комментарий от f1xmAn

тормозит она всегда. но не всегда это заметно.

next_time ★★★★★
()
Ответ на: комментарий от Noob_Linux

взять аналогичкую программу на gtk2 написаную 7 лет назад и вылизаную за эти года

невозможно. нет таких программ. все gtk программы не умеют в hidpi без костылей. только фуррифокс — исключение, но в нём и гтк почти не используется.

next_time ★★★★★
()
Ответ на: комментарий от Ford_Focus

1) finalize — потенциально опасная конструкция? круто, что.

2)так это не программа на Java — это программа на С с зачем-то присобаченным уродливым и тормозным Java-гуем.

знаем мы такое: сейчас мы перепишем критические участки кода на С. потом выясняется, что сборщик мусора на джаве не умеет освобождать память, выделяемую С-функциями, от чего код превращается в С++ без деструкторов. чуть позже выясняется, что абстракции, которые нагородили на ява — перегруженное ООП говно и с С-кодом (который процедурный) дают нечитабельное нечто. в конце приходим к выводу: проще сразу было написать на плюсах.

next_time ★★★★★
()
Ответ на: комментарий от next_time

потом выясняется, что сборщик мусора на джаве не умеет освобождать память, выделяемую С-функциями

Не нужно передёргивать.

Нужно писать Си функции правильно, с чего это Жаба должна подметать за Си (и как это возможно в принципе?).

А вообще описанный подход - это дурдом в голове у архитектора и бестолковые программеры не понимающие что такое деструкторы.

Serg_HIS
()
Ответ на: комментарий от Serg_HIS

(и как это возможно в принципе?).

вызовом С-функций

с чего это Жаба должна подметать за Си

а с того. я запустил процесс вычисления, получил результат, результат передал жабке. но результат-то выделен в С, динамически. жабке чтобы не получить утечку памяти, придётся задуматься об освобождении ресурсов.

next_time ★★★★★
()
Ответ на: комментарий от next_time

Отсутствие множественного наследования.

Можно реализовывать несколько интерфейсов. Множественное наследование реализаций тривиально реализуется через делегирование.

Legioner ★★★★★
()
Ответ на: комментарий от next_time

а с того. я запустил процесс вычисления, получил результат, результат передал жабке. но результат-то выделен в С, динамически. жабке чтобы не получить утечку памяти, придётся задуматься об освобождении ресурсов.

Если правильно передашь, не придётся.

Legioner ★★★★★
()
Ответ на: комментарий от next_time

в С нет деструкторов. в Java — тоже.

Зато там есть функция освобождения памяти (в некотором смысле деструктор). Про неё многие забывают, а некоторые звбИвают или (о ужос) даже не знают.

Про Жабу ты прямо КО :)

Serg_HIS
()
Ответ на: комментарий от Serg_HIS

Зато там есть функция освобождения памяти (в некотором смысле деструктор)

В таком виде лучше бы ее не было.

anonymous
()

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

ya-betmen ★★★★★
()
Ответ на: комментарий от next_time

2 цифры передать, о да...

Сразу видно человека никогда не работавшего в банковской сфере =)

holuiitipun
()
Ответ на: комментарий от Serg_HIS

я и говорю — код на яве превращается в С++ без деструкторов

next_time ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.