это в процедурном то коде создаются функции первого класса, да еще и с замыканиями изменяемыми потенциально?
Всё ещё больше моего варианта в вашем стиле
А код можно в студию? или это тот что был без registerTool и тп?
по-прежнему никак не мешает сделать так
Он не мешает потому что код находится в одном файле, и у всех функций есть доступ к состоянию. В реальном проекте разумеется 1) будет разбит на файлы или 2) может лежать в замыкании, но смысла в этом особо нет.
any имеется и как там с типобезопасностью
ну так вы попробуйте использовать registerTool и узнаете что все в порядке.
И даже меньше строчек чем у вас, да и код меньше и проще.
Код меньше и проще?) Сам себя не похвалишь, как говорится..
И еще - мне не нужно описывать доп класс или структуру, я создал инструмент прямо в рантайме без дополнительных типов. Ну это так, к слову.
По поводу задачи - вы доказывали что мол в ПП/ФП нельзя сделать так, как в ООП - я вам доказал что можно. И без классов, без наследованния, без всех перечисленных в статье проблем. Код простой, понятный любому. Так кто проиграл в споре?
Так в каком стиле мои примеры кода? ПП вы назвать отказываетесь, ФП тоже. И уж явно не ООП, как тогда? Вы сливаетесь с вопроса похлеще самого убогого школьника.
Это элементы ФП, но отдельных элементов ФП недостаточно, чтобы назвать язык функциональным
И как же одним словом назвать парадигму программирования, которая не привязана к каким то очень урезанным стилям - математическому, процедурному и тп, а использует их все в зависимости от задачи? И при этом используя только структуры и функции - без классов.
Я решил назвать это функциональным программированием. Не согласны - ок. Только предложите свое логичное название или не спорьте тогда.
А теперь представьте себя на месте пользователя который хочет добавить свой тул вы написали код который нельзя переиспользовать
Я лишь в очередной раз выкинул весь ненужный мусор что у вас был. Если нужно регистрация сторонних инструментов, то нужно вернуть registerTool (Playground), и делать через обобщения, что даже было указано в статье:
Дополнительно помимо того что вы должны каким-то образом узнать какие функции нужно перегружать (в случае С++ сам компилятор подскажет)
Вы слишком много сомневаетесь, просто не разбираетесь в ФП. Пользователь моей системы вызовет registerTool и ему компилятор подскажет что реализовать не меньше вашего.
По поводу больше\меньше кода. Ваши две функции
На обобщениях получилось еще лучше. Всего 99 строчек кода.
Вы правда думаете что ваше решение лучше?
Уверен что лучше. А вы?
Вот кстати и от меня задачка, давайте ка добавим еще один пример инструмента, посмотрим как вы его на ООП сделаете (Playground).
Еще раз - вы утверждаете что мои примеры где я из других функций "возвращаю динамически созданные функции с изменяемым замыканием" - это процедурное программирование? Ответить можете на прямой вопрос?
В своей статье я четко даю понять что считаю ООП - наличие классов с наследованием и тп. А связывание данных и методов теми же замыканиями - не считаю. В Си классов нет, точка.
Если вы внимательно почитаете еще раз, то речь там идет о методах классов. И в них нет ничего хорошего.
То что есть в Го и то что вы привели на Расте - по сути метод интерфейса, и по моей терминологии и близко не является ООП. И плохого в этом только то, что 1) появляется два способа вызова функций, через точку и без 2) в популярных редакторах первый - с автокомплитом, второй без.
А вот Zig как раз по сути ООП-шный (мусор), если там есть методы, и методы конкретного типа а не интерфейса (полиморфизм подклассов).
Про термин с ФП и ПП - я в примерах использую динамическое создание функций, с замыканием - это по вашему ПП?
это в процедурном то коде создаются функции первого класса, да еще и с замыканиями изменяемыми потенциально?
А код можно в студию? или это тот что был без registerTool и тп?
Он не мешает потому что код находится в одном файле, и у всех функций есть доступ к состоянию. В реальном проекте разумеется 1) будет разбит на файлы или 2) может лежать в замыкании, но смысла в этом особо нет.
ну так вы попробуйте использовать registerTool и узнаете что все в порядке.
Код меньше и проще?) Сам себя не похвалишь, как говорится..
И еще - мне не нужно описывать доп класс или структуру, я создал инструмент прямо в рантайме без дополнительных типов. Ну это так, к слову.
По поводу задачи - вы доказывали что мол в ПП/ФП нельзя сделать так, как в ООП - я вам доказал что можно. И без классов, без наследованния, без всех перечисленных в статье проблем. Код простой, понятный любому. Так кто проиграл в споре?
Так в каком стиле мои примеры кода? ПП вы назвать отказываетесь, ФП тоже. И уж явно не ООП, как тогда? Вы сливаетесь с вопроса похлеще самого убогого школьника.
И как же одним словом назвать парадигму программирования, которая не привязана к каким то очень урезанным стилям - математическому, процедурному и тп, а использует их все в зависимости от задачи? И при этом используя только структуры и функции - без классов.
Я решил назвать это функциональным программированием. Не согласны - ок. Только предложите свое логичное название или не спорьте тогда.
@Psychosynthesis Переписал вод все требования, см. ответ выше.
@michael_v89и получилось еще меньше, и ничего себе - даже без switch и дублирования инициализации.
@Chaos_Optimaи даже setActiveTool вернул с проверкой.
Я лишь в очередной раз выкинул весь ненужный мусор что у вас был. Если нужно регистрация сторонних инструментов, то нужно вернуть registerTool (Playground), и делать через обобщения, что даже было указано в статье:
Код с регистрацией инструментов через обобщения
Вы слишком много сомневаетесь, просто не разбираетесь в ФП. Пользователь моей системы вызовет registerTool и ему компилятор подскажет что реализовать не меньше вашего.
На обобщениях получилось еще лучше. Всего 99 строчек кода.
Уверен что лучше. А вы?
Вот кстати и от меня задачка, давайте ка добавим еще один пример инструмента, посмотрим как вы его на ООП сделаете (Playground).
Я добавил определение процедурного стиля, и оно сильно более ограничено чем мое определение ФП.
От прямого вопроса ушли, слив засчитан.
Я добавил определение процедурного стиля, и оно совсем отличается от моего Фп. Что в нем не так?
В примерах я возвращаю из функций новые функции с замыканием - это ПП?
Еще раз - вы утверждаете что мои примеры где я из других функций "возвращаю динамически созданные функции с изменяемым замыканием" - это процедурное программирование? Ответить можете на прямой вопрос?
Меня не устраивает общепринятое определение, и я выдумал более логичное.
Я в примерах возвращаю динамически созданные функции с изменяемым замыканием. Это по вашему процедура? И кто тогда не разобрался?
Почитайте секцию определений - ФП у меня это не математический стиль ФП.
При чем тут вообще строгая типизация?
Секцию определений я смотрю вы пропустили.
Прикрутить их нужно тогда уж к интерфейсу, содержащему поля имен.
В решении опять присутствуют статические методы. А это ФП - без него получается никак.
В моих примерах используется динамическое создание функций с замыканиями, и их возвращение из других функций. Это по вашему ПП?
В моих примерах используется динамическое создание функций с замыканиями, и их возвращение из других функций. Это по вашему ПП?
В моих примерах используется динамическое создание функций с замыканиями, и их возвращение из других функций. Это по вашему ПП?
Примеров можешь найти пару десятков тысяч - любой сайт на реакт, ядро линукс.
Они могли быть реализованы и как параметры функции без проблем. Команда реактор нашла еще более удобное решение, которое успешно используется.
В своей статье я четко даю понять что считаю ООП - наличие классов с наследованием и тп. А связывание данных и методов теми же замыканиями - не считаю. В Си классов нет, точка.
Если вы внимательно почитаете еще раз, то речь там идет о методах классов. И в них нет ничего хорошего.
То что есть в Го и то что вы привели на Расте - по сути метод интерфейса, и по моей терминологии и близко не является ООП. И плохого в этом только то, что 1) появляется два способа вызова функций, через точку и без 2) в популярных редакторах первый - с автокомплитом, второй без.
А вот Zig как раз по сути ООП-шный (мусор), если там есть методы, и методы конкретного типа а не интерфейса (полиморфизм подклассов).
Про термин с ФП и ПП - я в примерах использую динамическое создание функций, с замыканием - это по вашему ПП?