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

Можно реализовывать несколько интерфейсов.

это не множественное наследование

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

например? не помню такой возможности.

next_time ★★★★★
()

ну под ЛСД и мальчики на девочек похожи, так чтооо...

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

мешает в тех случаях, когда ёмкости знакового хватает, а беззнакового — нет. кроме того, это костыльная беззнаковость — это минус к производительности.

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

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

задачи деструктора не сводятся к освобождению памяти

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

Да тоже похожи, хотя и не так сильно. Вот Piet тот не похож.

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

задачи деструктора не сводятся к освобождению памяти

Формально может и нет.

А физически именно это и происходит.

А что делают ваши деструкторы?

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

это не множественное наследование

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

например? не помню такой возможности.

возможности чего? вызвать метод? паттерн delegate посмотри.

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

мешает в тех случаях, когда ёмкости знакового хватает, а беззнакового — нет.

Ещё раз. Что мешает использовать знаковые числа в качестве беззнаковых? Ровно с той же ёмкостью в 16/32/64 бита?

кроме того, это костыльная беззнаковость — это минус к производительности.

Нет никакого минуса к производительности.

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

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

конкретно finalize в java присутствует.

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

lol, а должен?

дают нечитабельное нечто

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

проще сразу было написать на плюсах

и получить нечитаемое говно из коробки. хоть и говорят, что кресты с 11ым стандартом сильно похорошели, читаемость среднестатистического кода на крестах меня удручает.

Ford_Focus ★★★★★
()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: комментарий от Serg_HIS

конкретно для OpenCL уже есть обвёртка - jocl. я про частный случай ускорения критических участков.

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

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

конкретно для OpenCL уже есть обвёртка - jocl

Вот сидел и ждал именно этой фразы.

А скажите пожалуйста, не иcпользует ли эта, как вы выразились «обёртка» тот самый JNI?

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

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

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

Никогда не программируй больше, ламер.

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

lol, а должен?

должен, если вы хотите писать нормально на связке жабы и си

с-модули должны аккуратно выноситься и обвёртываться.

на практике это «аккуратно» сводится к тому, что сама программа пишется на, а на явке — только морда.

и получить нечитаемое говно из коробки. хоть и говорят, что кресты с 11ым стандартом сильно похорошели, читаемость среднестатистического кода на крестах меня удручает.

до сих пор не встречал ни разу ни одного опенсорсного нечитабельного приложения на плюсах.

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

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

интерфейсы уже научились содержать в себе не только методы, но и данные?

возможности чего? вызвать метод? паттерн delegate посмотри.

причём тут паттерн delegate и множественное наследование? //сперва решил, что речь про шарповские делегаты

next_time ★★★★★
()

специально, чтобы прикинуться С++. также, как С++ специально похож на С, чтобы им прикинуться. также, как С похож на BCPL.

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

Но да, ООП везде одинаковое

нет, оно везде разное: CLOS/MOP, io/JavaScript/Self, Eiffel, Component Pascal/Modula-2/Oberon-2,Linux kernel insmod, Simula67/C++/Java/C#/D/.../Swift/Python, SmallTalk/ObjectiveC/..., Delphi (рефлексия между классами, а не объектами класса), Go, Rust, и т.п.

динамическая/статическая типизация, одиночная/множественная диспетчеризация, first class object и метаклассы либо FBC, делегирование и прокси-объекты и категории и протоколы в objC, прототипное ООП, метаклассы, метаобъектный протокол, тайпинфо, трейты, миксины и рефлексия

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

интерфейсы уже научились содержать в себе не только методы, но и данные?

Данные это закрытая деталь реализации. При наследовании значение имеют только методы.

interface I1 {
  void f1();
}
interface I2 {
  void f2();
}
class C1 implements I1 { ... }
class C2 implements I2 { ... }
class D implements I1, I2 {
  private C1 c1;
  private C2 c2;
  public void f1() { return c1.f1(); }
  public void f2() { return c2.f2(); }
}

вот пример множественного наследования.

Legioner ★★★★★
()

Чем они похожи? Ключевые слова одни и те же? Так это незначительные мелочи. В C++ первый и второй плюсы — RAII, чего в Java вообще никак нет. Одного этого достаточно, чтобы не валить их в одну кучу, а там ещё вагон и маленькая тележка отличий разного калибра.

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

с чего бы? а если я их публичными сделать хочу?

Значит ты нарушаешь все мылимые и немыслимые рекомендации. Делай геттер-сеттер в интерфейсе.

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

Значит ты нарушаешь все мылимые и немыслимые рекомендации.

я пишу код так, как необходимо в конкретной ситуации, а не так, как в каком-нибудь Коране написано

Делай геттер-сеттер в интерфейсе.

зачем мне на пустом месте раздувать код? алсо, геттер-сеттер организуют доступ к переменной, если она не наследована, то и геттеру с сеттером некуда будет обращаться.

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

Делай геттер-сеттер в интерфейсе.

кстати, ещё один пример ущербности явы. в С++ если мне из переменной потребуется сделать метод, я воспользуюсь перегруженными операторами приведения к типу, в С# — встроенной концепцией геттеров и сеттеров. в Java на уровне языка задача прозрачного изменения переменной на метод не решаема, поэтому мы руководствуемся ущербной логикой в виде «рекомендаций».

впрочем, современные жабо-IDE должны уметь в рефракторинг таких мелочей, что показывает ещё более подчёркивает ущербность типичного стиля ява-девелопмента.

наконец, в яве нет инлайн-ф-ций, поэтому геттеры-сеттеры на каждый чих втройне идиотизм

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

Данные это закрытая деталь реализации. При наследовании значение имеют только методы

А ты молодец!

Жаль что далеко живешь, интересно было бы обсудить некоторые вопросы по программированию и архитектуре, а может и просто пообщаться.

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

писать нормально на связке жабы и си

а мешает?

на практике

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

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

динамическая/статическая типизация, одиночная/множественная диспетчеризация, first class object и метаклассы

Это нюансы. ООП одинаковое. Само понятие ООП не зависит от нюансов реализации.
Мне, сишнику(скорее даже плюсовику), даже в ПХПшный код приходилось залазить. Да, работа с памятью странная. Так она и в Жабе странная. Но ничего. Справлялись. Идея аналогичная.
Но сама идея — ООПшная.

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

Софт на жабе тормозит весь, а на крестах только если он на Qt.

а что, софт на Qt тормозит? я-то не в курсе, мне реально интересно

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

стоит она недешево

оговорился. Имел ввиду итоговую систему. И недешево - это по моим собственным меркам.

супермикро

верно

на два ксеона 2011

два опетрона g34

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

Да, относительно софта на GTK. А на глаз может не быть заметно, если топовое железо, ну или сам юзер неторпоплив, например.

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

Данные это закрытая деталь реализации. При наследовании значение имеют только методы.

Из-за этого меня страшно бесит широкая мода последнего времени в ORM'а на разных платформах обеспечивать доступ к данным через свойства, а не через методы. Чуть что менять — так начинается зоопарк со всякими геттерами/сеттерами.

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