Обновить
1

Пользователь

2
Подписчики
Отправить сообщение
Да. Потому что другие реализации по разным причинам не подходили. А может подходило ООП, но не подходила работа с параллельным выполнением кода. Сделали язык для параллельности, добавили ООП, похожее на другие языки. Все просто.
Тогда как Вы объясните Groovy, Kotlin, Ceylon, Scala? Что общего между ними? Они же на одной базе сделаны! Где там необходимость? Из недавних — Dart, Go, Swift — тоже необходимость? Вот как просто у Вас вышло что за 40-50 лет наплодили столько языков и всё из-за необходимости. А сколько будет из-за нее добавлено языков через 30 лет? Как же просто необходимостью оправдать появление огромного количества языков! И для поддержки параллельности нужно создавать новый язык с другим синтаксисом? Это необходимость?
В случае наследования признаков — в случае рождения потомка. Передаются признаки.

Вы уходите от ответов. Я задаю вопросы и ожидаю получить ответы на ВСЕ вопросы. Понимаете? А Вы их игнорируете или сознательно или не знаете что ответить — и то и другое говорит о многом. Вот пример: я задал вопросы про горы, ямы и атомы водорода и спрашиваю Вас: что именно передаётся в этих ВСЕХ случаях? В этих случаях есть наследование или нет? Где здесь предок, а где потомок? Какие именно объекты или информация или молекулы или атомы передаются? Надеюсь я понятно задал вопросы?
Нет. «Наследование — это когда потомок получает что-то от предка. В случае с программированием это 'что-то' — интерфейс и реализация. Передача интерфейса и реализации одного типа другому в языках программирования называется наследованием.»

Это Ваши цитаты и, как Вы подтвердили, ничего здесь Вас не смущает:
В случае с программированием это интерфейс и реализация.

интерфейс и реализация — это не наследование

Из определения из Вики о наследовании слова «наследовать данные и функциональность» не равны интерфейсу и реализации. Это просто данные и методы родительского класса (с различным уровнем доступа) к которым не всегда есть доступ. Вы, конечно же, можете сказать что реализация это и есть методы, но это не всегда так. Есть реализация и данные доступа к которым потомок не имеет.
Как вы смоделируете электрон химическими элементами?

Я не смогу этого сделать потому как электрон часть атома. Но мне это и не надо моделировать. Мне нужно с помощью атома, как кирпичика, моделировать ВСЕ остальные объекты которые из атомов состоят.
А где он у реального дерева? Покажите. А если я подам энергию в интерфейс гравитации, оно мне Exception выбросит? Нет. Есть внешние воздействия и законы физики.

Я не пойму — это Вы задали вопрос и сами же на него ответили или это ответ на мой вопрос? Как бы там ни было. Реальность и окружающий мир состоит из атомов. Поэтому и у «внешних воздействий» ВСЕГДА есть объект их вызывающий. То есть источник этих воздействий. Так вот — реакционные и атомарные объекты могут являться этими источниками.
У реального дерева — ВСЯ его поверхность имеет способность (читай метод) принимать энергетическое воздействие, а также механическое(другой метод) и гравитационное(третий) и так далее. Если же перепутать методы, то это будет как ошибка компиляции, а не Exception.
Энергия при ударе молнии это сообщение. Куда оно уйдет и кто как его примет, в него не заложено.

То есть молния и её энергия сами не знают куда ударят? Даже в молниеотводы? А как же шаровые молнии? Или по-вашему это и есть «сообщение»? А как быть с другими явлениями типа гравитации, химическими реакциями, магнетизмом и т.д.? Это тоже можно объяснить одними сообщениями?
Поэтому обосновать нужность или ненужность NULL с помощью физических экспериментов нельзя.
Я не обосновываю нужность. Я говорю что в природе не существует NULL как объекта, ссылки на объект или что-то подобное. И в программировании такого быть не должно.
Нет пользователя с таким ником, никто с таким ником не зарегистрирован.
А у объекта (который Вам это возвращает) метод возвращает единственное значение в виде ссылки на объект или коллекцию найденных совпадений? Ведь если бы возвращал коллекцию, то Вы бы про NULL и не узнали бы никогда?!
Ок. В таком случае данная статья бесполезна, критика ООП необоснована. Как и в других похожих статьях.

Какой чудесный вывод Вы сделали! То есть когда придумывали ООП о доказательстве не задумывались, а когда критикуют ООП доказательства уже нужны? Разве это не говорит о лицемерии? То есть в одном случае Вы верите на слово, а в другом требуете доказательств? Подождите немного и я предоставлю доказательства. Я понимаю что Вы и многие сюда зашедшие ожидали увидеть в малюсенькой статье(а большие статьи это же долго читать! Да и по ссылкам походить — что за садизм, верно?) научное обоснование программированию со всеми определениями и доказательствами и написанное понятным для всех языком. А у меня этого не получилось сделать. Здесь я виноват.
Обоснованную. Практической необходимостью.

Около 200 языков программирования это по-вашему необходимость? Список СУБД — где есть стандарт SQL и у каждого вендора есть поддержка этого стандарта + своя надстройка или расширение — это тоже необходимость? Может Brainfuck или другая эзотерика необходима в практике?
Кстати, как ваши определения их решают?

Это будет показано в следующих частях.
Например, проблему создания многих объектов и сборки мусора, описанную по первой ссылке?

Это уже детали реализации конкретного языка и наличия сборки мусора. К этой теме я даже не притрагивался и не собираюсь.
Что-то — это обозначение того, что передается. Имущество, признаки, и т.д.
И то и другое передается от родителя к потомку в реальном мире.

В каких реальных случаях это «что-то» передаётся? В случаях 2 гор или 2 ям или двух клеток или 2 атомов водорода? И что именно в этих случаях передаётся? Атомы, Кровь, ДНК или азотистые основания? И где в этих или других случаях родители и потомки?
«интерфейс и реализация» — это не наследование. Наследование это механизм их передачи от одного типа другому.

Тут что-то непонятное творится. Я задал вопрос:
И что значит само определение слова «наследование» в реальном мире?

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

И потом говорите это:
интерфейс и реализация — это не наследование

Вас ничего не смущает в Ваших же определениях?
Наследование это механизм их передачи от одного типа другому.

То есть по-вашему наследование это не передача чего-либо, а непосредственно вид, способ или процесс этой самой передачи?
И зачем нужно определение химического элемента при задании способа моделирования, если оно не позволяет моделировать другие объекты?

Химический элемент(атом) как раз и моделирует ВСЕ другие объекты.
Чтобы использовать аналогию в рассуждениях, ее применимость сначала надо доказать. У вас нет в статье доказательств, только утверждения.

В комментариях я признал, что не привёл доказательства перехода от фактов к утверждениям.
Это не грубо, это неверно. Молния не знает ни про какой метод приема энергии ни у железа, ни у дерева, соответственно не может передать что-то именно туда.
Даже если допустить, что это так, то у любого объекта всегда будет один интерфейс из одного метода «принять сообщение». Значит ваше утверждение не имеет смысла, особенно с множественным числом слова «интерфейс».

Как это «не знает»? Как это «не может»? У объекта не может быть по-вашему интерфейса принимающего энергию? А интерфейса принимающего гравитацию? Ну это еще рано об этом говорить. Давайте возьмём два примера для сравнения и анализа: Солнце и Дерево и Молния и Дерево. Что на что воздействует? В каком виде? Раскройте тему больше, пожалуйста. (Алан Кей выглядывает у Вас из-за спины с подсказками про сообщения?)
А зачем? Аналогия с химическими объектами не доказана. А физические в ее рамках мы смоделировать не можем.
Затем, что я отвечаю на Ваши вопросы в виде дискуссии, а Вы не желаете делать также. Или Вы не дискутировать сюда пришли, а чисто высказать своё мнение в комментах?
Спасибо за комментарий. По пунктам:
1. «Почему это? Почему программисты не могут пользоваться тем, что им удобно практически?»
Программисты и пользуются этим. И в итоге это привело к текущему состоянию, когда каждый лепит свою ничем не обоснованную реализацию в языке или парадигме. Почитайте ссылки которые я дал, чтобы понять масштаб проблем.
2. «Когда потомок получает что-то от предка. Можно было в словаре посмотреть. В случае с программированием это интерфейс и реализация.»
Что Вы подразумеваете под «что-то»? В каких именно случаях это происходит в РЕАЛЬНОМ мире? «интерфейс и реализация» — это НЕ наследование! Приведите, пожалуйста, источник (словарь как я понимаю) откуда Вы взяли такое определение.
3. «Электрон это теперь не объект?»
Электрон — это физический объект. Я же приводил понятие «химический элемент» из АМУ, где Атом — наименьшая частица химического элемента, сохраняющая все его химические свойства. Или так: Атом — мельчайшая, химически неделимая, электронейтральная частица вещества.
4. «Провести аналогии с одной из наук не означает „применить науку“. Особенно если эта наука описывает не все, что можно смоделировать. Тот же электрон, например.»
Здесь Вы полностью правы. Но в том что я провожу аналогии с химией и не является наукой. Ею является моя попытка с помощью теории(в которую входит аналогия с химией) и доказательств сделать посильный вклад или хотя бы задать направление по которому программирование должно идти и развиваться. Иначе оно окажется там же где Астрология и Алхимия.
5. «Введение должно быть теоретически обосновано.» и «Докажите, что они необходимы и достаточны.»
Может я что-то пропустил или не знаю, но откуда Вы взяли эти утверждения? Или раскройте их глубже и шире или приведите источник этих высказываний.
6. «Ничего подобного. Молния не вызывает метод дерева „загорись“. Ни молния, ни ее энергия, ни излучение этой энергии не знают ни про дерево, ни про то что оно может гореть.»
Если грубо сказать, то у молнии есть метод «передать какое-то количество энергии в метод приёма энергии предмета». В свою очередь сам предмет(дерево в нашем случае) обрабатывая такое кол-во энергии видоизменяет свою структуру в виде реакции типа огонь. Если же количество энергии мало, то просто повышает свою температуру(случай когда солнце просто нагревает дерево). Надеюсь понятно объяснил.
7. «У ваших элементов нет, у других есть. Использовать одно из правильных значений типа в качестве обозначения ошибки в корне неверно. Собственно потому, что это значение правильное.»
Дабы не ошибиться, раскройте вопрос больше и желательно с помощью наглядных физических или химических опытов, экспериментов или примеров над реальными физическими объектами или их свойствами. Про NULL и про ошибки скажу в других частях в виде кода. Если будет интересно — просто подождите немного.
Я неправильно составил этот пункт (и этот пункт будет изменён). Есть 3 варианта: новый код будет меньше, равен или больше чем с перечисленными признаками. Всё зависит от методологии, глубины иерархии наследования, количества потомков, масштаба логики и т.д.
И в большинстве случаев объем кода будет расти. Но это даст простоту в его анализе, использованию и пониманию, гибкости создания объектов и их изменения. И как заметил пользователь geher — нужно создавать отдельные классы для таких случаев, а не формировать предка в иерархии в виде абстрактного класса.
Прочитайте внимательно мой ответ на Ваш вопрос.
Сам же Ваш вопрос был поставлен некорректно. Сначала Вы использовали терминологию программирования, но задали вопрос про физический объект. Видите разницу? Я увидел и в такой манере и ответил. Затем Вы делаете умозаключение «Получается, объект в программировании может состоять из других объектов и не являться физической сущностью в реальном мире.». Да это так и есть. И это называется абстракцией. В программировании, и в науке, мы легко можем создавать абстракции наделяя их свойствами и поведением которые нужны для решения определенных задач.
Нет, не говорит. Просветите пожалуйста. Насколько я догадываюсь, хранение состояния реализовано через функцию и хитрое условие хранения переменной и её изменения. Я прав?
Большое спасибо! Значит я плохо написал статью и недостаточно точно и понятно выразил свои мысли и сделал несколько ошибок и недочётов, не указал причинно-следственные связи между фактами и утверждениями и конечным выводом.
«Что же касается пролога — это никак не метод доказательства теорем, а вполне живой и развивающийся язык программирования» — я не за пролог говорил, а за метод на котором он основан. Вот цитата: «Язык пролог действительно опирается на этот метод. Но что из себя этот метод представляет?» Научная теория — это система понятий, законов и принципов, наиболее полно описывающая структуру предмета исследования.(ссылка, структура и функции теории). Булева алгебра не теория. Это скорее набор аксиом и операций применяемый ко множествам. а псевдонаука — это имитация под науку с целью её опорочить и выдать желаемое за действительное.
Особо впечатлительным и ранимым людям это лучше не смотреть и не читать: What's Wrong With Object-Oriented Programming? и Объектно ориентированное программирование в 2018
Спасибо за комментарий.
С точки зрения науки и реальности Фирма не является физическим объектом.
С точки зрения программирования Фирма является объектом.
Спасибо за комментарий. Дайте ответ на один лишь вопрос:
1. «Они что, полностью описывают Вселенную, или как? Что это, как не субъективность?»
Разве физика и химия не описывают вселенную?
Спасибо за комментарий. Язык пролог действительно опирается на этот метод. Но что из себя этот метод представляет? Научную теорию или метод доказательства теорем через поиск противоречий, то есть набор логических правил?
«Следуя вашей логике слово — это тоже реальный объект». Нет. Это не реальный объект, только если не воспринимать его как звуковые колебания.
Там же: «Понятие числа возникло в глубокой древности из практической потребности людей и усложнялось в процессе развития человечества. Область человеческой деятельности расширялась и соответственно, возрастала потребность в количественном описании и исследовании. Сначала понятие числа определялось теми потребностями счёта и измерения, которые возникали в практической деятельности человека, всё более впоследствии усложняясь. Позже число становится основным понятием математики, и потребности этой науки определяют дальнейшее развитие этого понятия.» И дальше можете прочитать. Так что это говорит о народах Полинезии? Другими словами число — это количественная характеристика объектов. Вы как живой объект в количестве 1 штуки существуете и Вас можно посчитать и выразить в виде особого символа, верно?
Они ими и были: 2 любых предмета. 2 руки или ноги. Имеется ввиду что число — это количество каких-либо физических объектов. Не убедил? Может это поможет: «Число́ — основное понятие математики, используемое для количественной характеристики, сравнения, нумерации объектов и их частей.»?
Спасибо за комментарий. Что-то подобное как xUML уже сделали — Дракон. Там есть и схемы и алгоритмы.
Спасибо за развернутый комментарий!
1. «Вы ссылаетесь на математику, физику и химию как на пример точных наук.» — Действительно, были разные теории и некоторые из них были ошибочные, и будут ещё в будущем другие — и все они будут пытаться объяснить происходящие вокруг процессы и явления. А как это наука сейчас делает? С помощью научного метода(и это большое достижение!) чтобы избежать ложных подходов при доказательствах и появлению псевдонауки.
2. «Наука в большинстве своем занимается предсказаниями: при заданных начальных условиях будет определенный результат.» — Не совсем верно. Научная теория может или обязана делать предсказания. И об этом я буду писать во второй части. 1 и 2 пункты я буду доказывать на примерах кода. 3 пункт — Вы полностью правы. Ведь это просто вопрос синтаксиса и реализации именно языка.
3. «В принципах собраны как требования к языку, так и к стилю написания программ.» — Справедливо замечено.
Еще нет «моего» языка и я даже не упоминал о его реализации.
4. «Если ваш воображаемый язык заставит следовать этому принципу, то как вы будете разрешать конфликт, в котором у меня все работает, а у коллеги не запускается/компилируется, только потому, что у меня монитор стоит вертикально?» — я не понял вопроса. При чем здесь монитор? Можете раскрыть вопрос?
"" — над числами. Как и вся база математики. Здесь же написано: «Порядковые числа были введены Георгом Кантором в 1883 году как способ описания бесконечных последовательностей, а также классификации множеств, обладающих определенной упорядоченной структурой.[1] Он случайно открыл порядковые числа, работая над задачей, связанной с тригонометрическими рядами. » Основой математики(и геометрии) является число. Все остальные абстракции лишь следствие попыток объяснить окружающий мир. Начиная с круга и треугольника(станет потом геометрией и тригонометрией), множествами и точкой с прямой(которая потом станет декартовой системой координат). Надеюсь понятно объяснил.
Здесь я об этом и говорю. И в случае с LIMIT — это и есть некая надстройка или дополнительное расширение к стандарту. Неужели прямо десятки реализаций?
«Вы говорите о важности научного подхода, и вместе с тем навязываете свои жутко субъективные представления о программировании.» — приведите пример субъективизма в статье. В комментариях эти моменты не обсуждались?

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность