Спасибо за развёрнутый комментарий.
Как я и писал в статье — проблема в том что программисты спорят основываясь уже на реализации, а не на теории и науке. В этом большая разница! Грубо говоря в ЯП сейчас тихий ужас из-за описанной мною истории их создания. Если Вы начнёте мыслить с точки зрения основ программирования, его истории, задач и целей и каким образом именно наука, а не религия дало всё то, что нас сейчас окружает и какие подходы использовала, то признаете что рациональное зерно в этой статье всё таки есть. А лучше всего прочитать статью внимательно, походить по ссылкам, книгу почитать и комментарии мои и вдуматься в сказанное. Сделать это — большая и трудная работа, но она необходима. А терпением для этого мало кто может похвастаться.
1. «Язык не решает задач. Язык *подходит* для решения задач или нет. Он может подходить или не подходить по совершенно разным причинам.» — написано в этом комментарии.
2. «Хотите я вам покажу большой объект, который будет легко понимать и читать.» — Ответ действительно очевиден. «Если сильно захотеть — можно в космос полететь!». Только вот в науке и реальном мире сложное, по определению, не может быть проще простого.
Спасибо за комментарий!
Но я хотел бы уточнить что не только математической теории, а нет научной теории. Потому как математика не до конца сможет смоделировать предметную область(хоть без неё никуда не деться ни в мире, ни в науке) с её поведением и состоянием.
Спасибо большое за комментарий!
1. «Наследование в ООП определяет вопросы классификации объектов, а не происхождение видов.» — Раскройте поподробнее эту тему, пожалуйста, в свете термина "наследование" и принципа подстановки Лисков.
2. «Определение слова „наследование“ в реальном мире многозначно. Это и передача ценностей от умершего, и получение признаков от родительских организмов, и общие признаки при построении классификации в ООП.» — А как быть с наукой и научным определением? Я же указал ДНК и азотистые основания! И примеры приводил про горы для кого? Какие такие «ценности» и «признаки»? Мне прямо сюда ссылки дать или сами найдёте и почитаете что такое наследование?
Не может быть много правильных теорий. Приведённые Вами примеры говорят ровно о том, что ДО СИХ ПОР ЕДИНОЙ ПРАВИЛЬНОЙ ТЕОРИИ НЕТ. Существующие теории в физике объясняют всего лишь часть устройства мира и его процессов, но не весь целиком. Значит учёные не выработали ещё такую теорию которая бы это сделала на данный момент времени. Ведь раньше люди думали что Земля плоская. Хотя, похоже, даже сейчас особо одарённые так думают.
«Почему-то идея об единственности истины никак не мешает существованию множества языков общения. Почему тогда для языков программирования должны быть другие правила?» Потому что назначение языков общения и языка программирования разные. Природа их возникновения разная и цель у них разная. Вот почему одних много, а других ДОЛЖНО быть мало!
«Язык программирования — это инструмент, средство решение задачи.» — У Вас неверное определение. Почитайте этот комментарий.
«Подождите, что „это“ утверждает наука? Я задал вопрос об определениях четырех понятий, которые входят в ваше „базовое определение“.» — поведение раз, поведение два, свойство, состояние и метод. Мне приходится приводить эти ссылки, потому как Вы, похоже, будете спрашивать меня и о том, что такое союз «и»!
«Бремя доказательства лежит на утверждающем; или вы никогда не слышали про чайник Рассела?» Я знаю на ком лежит бремя и знаю про чайник Рассела. То есть мне нужно привести в пример научные статьи о том, что наш мир состоит из мельчайших неделимых частиц потому как Вы это пропустили в школе?
Спасибо за комментарий. Со всем согласен, кроме терминов «воспроизведения» и «моделирования». Вы можете сказать что под ними подразумеваете и чем они отличаются? Кстати хорошая книга на этот счёт есть.
1. Вам лень читать? Серьезно? Вы на тот ресурс зашли?
2. «Задача языка — предоставить удобный программисту инструментарий для решения задач» — Опять Вы придумываете небылицы! «инструментарий» — это автомат, процессор, какой-либо механизм, IDE на худой конец. Вы не читаете что я уже писал про язык — «эффективно обеспечивать мыслительный процесс человека в машинные инструкции.» Другими словами — язык не решает задач! Задачи решает алгоритм, который выразили с помощью языка в инструкции к исполнительному устройству, и само исполнительное устройство(процессор, станок, автомат). Что здесь трудно понять? Почитайте что-нибудь для разнообразия прежде чем так выражаться.
3. Зачем?
4. «Программирование занимается симуляцией процессов в окружающей среде» — Я же Вам ответил и дал направление, но из-за лени Вы не потрудились ни изучить историю, ни напрячь мозг и начали выдавать сказки про симуляцию. Ада Лавлейс и Бэббидж тоже занималась симуляцией? Как Вам не стыдно такое даже печатать?
5. «оскорбления признанных ученых» — где я это сделал можете указать?
Согласен. Жуть просто. Некоторые личности даже не понимают что такое факты и что нужно доказывать, а что нет. Похоже я не раскрыл тему плоской Земли и розовых единорогов о которых так любит высказывать своё никому не нужное мнение здешняя публика( не вся конечно!). Мало иметь ум в голове — надо ещё уметь им правильно пользоваться. А то по-набирают по объявлению программистов и мучайся потом с ними.
Спасибо за комментарий! Уже пытается рвать. Им то ли скучно, то ли поняли что можно нести всякий бред и не отвечать за это. А о доказательствах своих высказываний даже не задумываются. Печально такое читать…
Спасибо за вопросы! По пунктам:
1. «Хотелось бы поинтересоваться, на основе чего был сделан вывод, что то, что вы называете «научным подходом», вообще кому либо нужно в программировании?» До определённого момента это было нужно и было доказано и обосновано логически, теоретически и экспериментально, а после нет. Почитайте ссылки которые я привел — хотя бы по-диагонали чтобы понять масштаб проблемы.
2. «Языки проектируются с двумя приоритетами: уметь решать поставленные перед ними задачи и быть удобными для их пользователей.» — Ни «перед ними», а перед человеком! А он уже с помощью алгоритмов и исполнителя(ЭВМ) эту проблему решает. Ни «быть удобными для их пользователей», а эффективно обеспечивать мыслительный процесс человека в машинные инструкции.
3. «Интересно, откуда такие цифры?» — habrahabr.ru/post/353408/#comment_10752012
4. «Относятся к реальному миру, а не к программированию.» — а чем занимается программирование Вы задумывались? Ведь программирование было ещё до ЭВМ и автоматов. Подумайте в эту сторону и в историю углубитесь.
5. «Основана на том, что в программировании самым лучшим кодом является самый короткий, а это не так.» — Вы невнимательно прочли. Вот оригинал: «3. Чем меньше и проще объекты, тем проще их понимать, тестировать и изменять.» Не код, а объекты! Это большая разница.
Хороший вопрос — тянет на отдельную статью и даже научный труд! Тяжело будет — зато достойный целой жизни. Но боюсь опять набегут личности, не отвечающие за свои слова, и не поняв ни фактов ни логики начнут гадить. Но это останавливать не должно.
Спасибо за вопросы! По пунктам:
«А почему не должно? Почему должно быть так мало языков?» — потому что исходя из определения что «истина только одна» я и сделал такой вывод. Также как и наличие разных теорий может быть очень много, но правильная только одна.
«что такое „свойство“, что такое „состояние“,» — потому что это утверждает наука и экспериментальные наблюдения над элементами и ВСЕМИ объектами.
«Это не факты, а ваши утверждения, которые ничем не более обоснованы, чем другие утверждения в области программирования.» — Вот Вы и докажите, что приведенные мною факты таковыми не являются. В статье или в комментариях, а не высказывайте никому не нужное мнение и не разводите флуд.
«В частности, даже формально» — habrahabr.ru/post/353408/#comment_10751968
По итогу — если Вы не согласны, то докажите своё мнение.
Даю ссылку. Каким образом проект распред. вычислений относится к химии? Ну кроме моделирования и предсказания какой-то теории? Вот и докажите в отдельной статье в чём я не прав. Приведите свои доводы и доказательства своих слов. Расскажите в статье КАКИЕ новые законы, теории и типы или виды реакций были открыты в химии? А то ваши выпады напоминают высказывания мнения которое никому не обломилось и ценности не имеет.
Да. Входит в школьную программу химии. Я согласен, что открывают новые элементы и реакции, но базовые процессы изучены, я думаю, хорошо. Классификация и систематизация имеющихся на данный момент элементов я думаю сложилась в полноценную картину.
Спасибо за хороший и объемный комментарий! Программист программирует и воспроизводит предметную область (а для этого ему нужно её описать — и это важно!), реализует алгоритмы её поведения с внешними объектами и между собой. Сама по себе предметная область и должна начинаться именно с мельчайших частиц, которые имеют своё поведение и других объектов, которые производят действия над другими объектами и далее вверх. Так если брать за основу какой-то промежуточный объект — то вниз мы спуститься сможем с большим трудом и (в нашем случае химия) предметная область лишится реализации и воспроизведения. Страуструпа я не читал к сожелению. Дождитесь 2 части — там будет код на Java и я думаю что смогу показать и доказать как это реализуется на практике.
В чём именно «несовременность»? В наличии ещё более мелких частиц? Нейтронов, протонов и позитронов? А может кварков? Возможно, я не уточнил, что речь идет о химии и химических элементах, а не о квантовой физике? Дело в том, что учёные еще плохо ( не до конца изучили) знают модели их поведения и взаимодействия. И поэтому их брать за основу ещё рано. Возможно их очередь настанет через несколько десятков лет — вот тогда и поговорим.
Для этого нам необходимо уметь возвращать не только результат обработки в случае успеха, но и информацию об обнаруженной проблеме в случае неудачи. Для наглядности я сравнивал в предыдущих статьях Optional футляром. Развивая эту аналогию, в данном случае нам необходим футляр с двойным дном.
Для этого и придумали исключения. Почему Вы снова возвращаетесь к методам возвращения кода ошибки( или текста ошибки) вместо использования исключений? Ведь использование исключений во время потока исполнения программы намного лучше. Что и доказывает их внедрение в поздних версиях языков( PHP, Haskell и т.д.).
2. Если реализовать Ваш новый тип и КАЖДЫЙ метод его будет использовать, то какова будет реализация обработки таких ошибок на более высоком уровне? Как будет выглядеть код? Например в таком выдуманном случае:
public void name(IRequest req) {
Request request = req.getOriginalParam();
Collection<Group> groups = new Groups().findByName(new ConnectionStorage("x", 10L).getConnection(), new Hash("z", 100).getHash(), request.getParam("name"));
List<User> result = new FilterByAge(new Users().findByGroup(groups, new Hash("y", 10).getHash(), new ConnectionStorage("w", 20).getConnection()), request.getParam("age"));
}
Мы либо получили порцию воды из приоритетного источника, либо нет.
А в чём КОНКРЕТНО Вы эту воду получили? В каких единицах?
Просто неправильно использовать аргументы из анекдота про блондинку, динозавров и теорию вероятностей. И не зря же есть возраст у каждого человека в каких-то единицах, а не просто — или человек есть или его нет? И температура на Земле тоже в каких-то единицах, а не просто — или есть или нет! А теперь главное. Если стоять на позиции что тут мы играем, тут не играем, а тут мы рыбу заворачиваем — то так мы из первобытно-общинного строя с применением принципа «лично мое мнение» в ИТ не выйдем очень долго, не говоря уже про науку и научный метод.
Как я и писал в статье — проблема в том что программисты спорят основываясь уже на реализации, а не на теории и науке. В этом большая разница! Грубо говоря в ЯП сейчас тихий ужас из-за описанной мною истории их создания. Если Вы начнёте мыслить с точки зрения основ программирования, его истории, задач и целей и каким образом именно наука, а не религия дало всё то, что нас сейчас окружает и какие подходы использовала, то признаете что рациональное зерно в этой статье всё таки есть. А лучше всего прочитать статью внимательно, походить по ссылкам, книгу почитать и комментарии мои и вдуматься в сказанное. Сделать это — большая и трудная работа, но она необходима. А терпением для этого мало кто может похвастаться.
1. «Язык не решает задач. Язык *подходит* для решения задач или нет. Он может подходить или не подходить по совершенно разным причинам.» — написано в этом комментарии.
2. «Хотите я вам покажу большой объект, который будет легко понимать и читать.» — Ответ действительно очевиден. «Если сильно захотеть — можно в космос полететь!». Только вот в науке и реальном мире сложное, по определению, не может быть проще простого.
Но я хотел бы уточнить что не только математической теории, а нет научной теории. Потому как математика не до конца сможет смоделировать предметную область(хоть без неё никуда не деться ни в мире, ни в науке) с её поведением и состоянием.
1. «Наследование в ООП определяет вопросы классификации объектов, а не происхождение видов.» — Раскройте поподробнее эту тему, пожалуйста, в свете термина "наследование" и принципа подстановки Лисков.
2. «Определение слова „наследование“ в реальном мире многозначно. Это и передача ценностей от умершего, и получение признаков от родительских организмов, и общие признаки при построении классификации в ООП.» — А как быть с наукой и научным определением? Я же указал ДНК и азотистые основания! И примеры приводил про горы для кого? Какие такие «ценности» и «признаки»? Мне прямо сюда ссылки дать или сами найдёте и почитаете что такое наследование?
«Язык программирования — это инструмент, средство решение задачи.» — У Вас неверное определение. Почитайте этот комментарий.
«Подождите, что „это“ утверждает наука? Я задал вопрос об определениях четырех понятий, которые входят в ваше „базовое определение“.» — поведение раз, поведение два, свойство, состояние и метод. Мне приходится приводить эти ссылки, потому как Вы, похоже, будете спрашивать меня и о том, что такое союз «и»!
«Бремя доказательства лежит на утверждающем; или вы никогда не слышали про чайник Рассела?» Я знаю на ком лежит бремя и знаю про чайник Рассела. То есть мне нужно привести в пример научные статьи о том, что наш мир состоит из мельчайших неделимых частиц потому как Вы это пропустили в школе?
2. «Задача языка — предоставить удобный программисту инструментарий для решения задач» — Опять Вы придумываете небылицы! «инструментарий» — это автомат, процессор, какой-либо механизм, IDE на худой конец. Вы не читаете что я уже писал про язык — «эффективно обеспечивать мыслительный процесс человека в машинные инструкции.» Другими словами — язык не решает задач! Задачи решает алгоритм, который выразили с помощью языка в инструкции к исполнительному устройству, и само исполнительное устройство(процессор, станок, автомат). Что здесь трудно понять? Почитайте что-нибудь для разнообразия прежде чем так выражаться.
3. Зачем?
4. «Программирование занимается симуляцией процессов в окружающей среде» — Я же Вам ответил и дал направление, но из-за лени Вы не потрудились ни изучить историю, ни напрячь мозг и начали выдавать сказки про симуляцию. Ада Лавлейс и Бэббидж тоже занималась симуляцией? Как Вам не стыдно такое даже печатать?
5. «оскорбления признанных ученых» — где я это сделал можете указать?
1. «Хотелось бы поинтересоваться, на основе чего был сделан вывод, что то, что вы называете «научным подходом», вообще кому либо нужно в программировании?» До определённого момента это было нужно и было доказано и обосновано логически, теоретически и экспериментально, а после нет. Почитайте ссылки которые я привел — хотя бы по-диагонали чтобы понять масштаб проблемы.
2. «Языки проектируются с двумя приоритетами: уметь решать поставленные перед ними задачи и быть удобными для их пользователей.» — Ни «перед ними», а перед человеком! А он уже с помощью алгоритмов и исполнителя(ЭВМ) эту проблему решает. Ни «быть удобными для их пользователей», а эффективно обеспечивать мыслительный процесс человека в машинные инструкции.
3. «Интересно, откуда такие цифры?» — habrahabr.ru/post/353408/#comment_10752012
4. «Относятся к реальному миру, а не к программированию.» — а чем занимается программирование Вы задумывались? Ведь программирование было ещё до ЭВМ и автоматов. Подумайте в эту сторону и в историю углубитесь.
5. «Основана на том, что в программировании самым лучшим кодом является самый короткий, а это не так.» — Вы невнимательно прочли. Вот оригинал: «3. Чем меньше и проще объекты, тем проще их понимать, тестировать и изменять.» Не код, а объекты! Это большая разница.
«А почему не должно? Почему должно быть так мало языков?» — потому что исходя из определения что «истина только одна» я и сделал такой вывод. Также как и наличие разных теорий может быть очень много, но правильная только одна.
«что такое „свойство“, что такое „состояние“,» — потому что это утверждает наука и экспериментальные наблюдения над элементами и ВСЕМИ объектами.
«Это не факты, а ваши утверждения, которые ничем не более обоснованы, чем другие утверждения в области программирования.» — Вот Вы и докажите, что приведенные мною факты таковыми не являются. В статье или в комментариях, а не высказывайте никому не нужное мнение и не разводите флуд.
«В частности, даже формально» — habrahabr.ru/post/353408/#comment_10751968
По итогу — если Вы не согласны, то докажите своё мнение.
2. Если реализовать Ваш новый тип и КАЖДЫЙ метод его будет использовать, то какова будет реализация обработки таких ошибок на более высоком уровне? Как будет выглядеть код? Например в таком выдуманном случае:
Просто неправильно использовать аргументы из анекдота про блондинку, динозавров и теорию вероятностей. И не зря же есть возраст у каждого человека в каких-то единицах, а не просто — или человек есть или его нет? И температура на Земле тоже в каких-то единицах, а не просто — или есть или нет! А теперь главное. Если стоять на позиции что тут мы играем, тут не играем, а тут мы рыбу заворачиваем — то так мы из первобытно-общинного строя с применением принципа «лично мое мнение» в ИТ не выйдем очень долго, не говоря уже про науку и научный метод.