@oop_ru

Страница 93 из 785
Влад
10.02.2017
22:10:42
В x будет объект
Просто var x;

Sergey
10.02.2017
22:11:02
По сути даже булева переменная в сях — это объект
если хочешь хороший пример объекта - смотри на Erlang

Влад
10.02.2017
22:11:24
x будет undefined. Это тоже своего рода примитивный объект

Google
Sergey
10.02.2017
22:11:27
А состояние это что? Набор переменных?
состояние это то что меняется со временем

const a = 'a'; // значение по идентификатору a let a = b + 1; // состояние, поскольку ты не знаешь какое тут значение. Оно зависит от времени (места в коде и возможно от кучи других факторов)

Юра В
10.02.2017
22:12:18
Мощно

Sergey
10.02.2017
22:12:38
Мощно
вспомнил что стоит почитать

Влад
10.02.2017
22:12:50
состояние это то что меняется со временем
Ну менять ничего нельзя, все должно быть иммутабельно. Это же очевидно

Sergey
10.02.2017
22:12:55
скажем так "первоисточник идей" которые были заложены в ооп и вообще современное программирование

Sergey
10.02.2017
22:13:31
у тебя есть устройства ввода/вывода со своими мутабельными буферами

Max
10.02.2017
22:13:47
Sergey
10.02.2017
22:13:49
Могу
на определенном уровне абстракции. Под копотом у тебя всеравно мутируются значения регистров процессора.

Юра В
10.02.2017
22:14:27
Ну менять ничего нельзя, все должно быть иммутабельно. Это же очевидно
Т.е. состояние (и ООП) это вообще ошибочная концепция, выходит??

Google
Sergey
10.02.2017
22:15:02
ну то есть... ты конечно можешь превратить пару электрон + протов в нейтрон и обратно например

Влад
10.02.2017
22:15:39
атомы не мутируют если что)
Они создают свою копию с измененным стейтом чтоли? :)

Sergey
10.02.2017
22:16:12
Они создают свою копию с измененным стейтом чтоли? :)
окей. Посмотри на монитор. Он имутабелен?

хотя ладно, тут надо сначала определиться с определением имутабельности

ты наверное имеешь в виду отсутствие побочных эффектов

у меня есть буфер с пикселями и я просто постоянно вычисляю новый буфер

Sergey
10.02.2017
22:17:16
чего там делать-то?
все то же самое что и в ООП собственно, просто чуточку подругому

чего там делать-то?
ты на скале пишешь? или хаскель?

Max
10.02.2017
22:18:21
на всём

но не на скале

Влад
10.02.2017
22:18:31
все то же самое что и в ООП собственно, просто чуточку подругому
Покажи мне хоть одну программу в ООП парадигме, в которой 99% классов не меняют свой стейт, а возвращают новый объекты в методах

Sergey
10.02.2017
22:18:38
на всём
то есть например на Си?

Max
10.02.2017
22:18:44
ну в том числе

и х-ь

Sergey
10.02.2017
22:19:01
тебе написать програмку на Java без сайд эффектов?

Google
Sergey
10.02.2017
22:19:16
любая система использующая EventSourcing?

append-only структуры и прочее?

Влад
10.02.2017
22:19:57
тебе написать програмку на Java без сайд эффектов?
Нет, не надо ничего для меня писать. Просто покажи мне хоть один такой проект на джаве, например

Sergey
10.02.2017
22:20:16
Нет, не надо ничего для меня писать. Просто покажи мне хоть один такой проект на джаве, например
я не уверен что в опенсурсе есть хоть что-то достойное на эту тему

а то что имеет смысл смотреть обычно закрыто NDA

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

ну и да, классы не могут менять стэйт)

Мощно
Еще Эрика Эванса почитай. Оч годная литература

Юра В
10.02.2017
22:21:45
ну и да, классы не могут менять стэйт)
Значит, класс это не объект

Как я понял...

Sergey
10.02.2017
22:22:17
Значит, класс это не объект
я ж уже сказал. Класс - это рисунок объекта. То есть по нему потом будут в рантайме собираться объекты.

Влад
10.02.2017
22:22:32
а то что имеет смысл смотреть обычно закрыто NDA
Меня как-то позвали на собеседование в одну контору, перед собесом попросили подписать NDA на 250 млн рублей. Видимо, именно в таких конторах ООП годноту и пишут. Жаль, что отказался :(

Юра В
10.02.2017
22:22:52
Ну рисунок объекта само по себе объект или нет?

Вроде выше понятно, что нет

Но с другой стороны, у класса методы есть

Юра В
10.02.2017
22:23:21
Бывают

Как у объекта

Google
Sergey
10.02.2017
22:23:59
Но с другой стороны, у класса методы есть
у класса нет методов, они есть только у объектов. Статические методы это как функции действующие в каком-то контексте

Юра В
10.02.2017
22:24:41
Только я думал, что разобрался, как запутали

Вот для этого и прошу книгу

Sergey
10.02.2017
22:24:57
тебе книга не поможет

Юра В
10.02.2017
22:25:03
Чтобы не solid и не tdd

Admin
ERROR: S client not available

Sergey
10.02.2017
22:25:09
тебе надо попробовать разобраться как например на уровне JVM работают объекты

Влад
10.02.2017
22:25:35
Зачем вообще нужны классы? Нужен протокол и контракты для объекта

Sergey
10.02.2017
22:25:44
ну мол у тебя есть файлик с исходниками. Там ты описываешь класс. Далее при компиляции из этого класса выделяется структура данных (проперти) которая будет представлять собой стэйт объекта, и таблица методов.

Влад
10.02.2017
22:26:28
согласен)
Эээ, так не интересно. А как же поспорить?

Юра В
10.02.2017
22:26:39
тебе надо попробовать разобраться как например на уровне JVM работают объекты
JVM это сильно сложно, и костыли сплошные маркетинговые

Rodion
10.02.2017
22:26:50
я уже через все это проходил месяц назад в этом чатике) абсолютно такой же разговор был)

Sergey
10.02.2017
22:27:38
когда ты делаешь инстанс объекта, у тебя в памяти грубо говоря выделяется эта самая структура (стэйт объекта) и когда ты вызываешь метод начинается такой процесс как диспетчеризация (то есть по идентификатору метода и контексту вызывается нужный код, по сути у тебя одна и та же функция в памяти будет вызываться с разным this.

Юра В
10.02.2017
22:27:50
Надо pin-сообщение добавить со ссылками на хорошие книги, по которым консенсус чатика есть

Sergey
10.02.2017
22:28:00
Эээ, так не интересно. А как же поспорить?
намного интереснее история как появились классы)

Google
Юра В
10.02.2017
22:28:05
В таком случае

Тогда будет меньше вопросов

Sergey
10.02.2017
22:28:22
Давай, трави :)
был такой язык как simula

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

и из крутых плюшек по сравнению со структурами был факт возможности наследования оных

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

smalltalk например потом взяли ту же концепцию и расширили ее

а потом еще появился C++ (препроцессор что бы сделать Си похожим на симулу)

но вот только когда делали C++ и мысли небыло о каком-то там ООП. Просто возможность лучше структурировать код.

Артур Евгеньевич
10.02.2017
22:34:15
а object с зачем делали?

Sergey
10.02.2017
22:34:46
а object с зачем делали?
потому что ксерокс не отдали Джобсу права на использование смолтака.

из всей дребедени вроде GUI или мышки они только в смтолтаке видели выгоду

одна из отличительных черт smalltalk например - отсутствие main рутины

то есть объекты живут себе как одна большая распределенная сеть объектов.

и обменивается соощениями. Нет главного объекта

da horsie
10.02.2017
22:36:12
Надо pin-сообщение добавить со ссылками на хорошие книги, по которым консенсус чатика есть
в описании первая же ссылка на страничку, которая в гитхабе. открывай PR

Sergey
10.02.2017
22:36:56
в описании первая же ссылка на страничку, которая в гитхабе. открывай PR
надо заняться этим списком... сейчас он малость... маленький

а object с зачем делали?
да, и еще... одна из причин почему появилась Java - опять же не смогли договориться с Sun о модели лицензирования. Sun хотели бесплатный язык, а за smalltalk надо было платить. Вот и все

Страница 93 из 785