Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
70 5 35

ООП Аноним # OP 26/01/20 Вск 00:11:17 15830801
tftEYGm82Uo.jpg (80Кб, 720x720)
720x720
Двач, объясни пожалуйста на двух пальцах про объектно-ориентированное программирование
Аноним 26/01/20 Вск 00:14:29 15830832
1459894619793.png (151Кб, 1948x858)
1948x858
Аноним 26/01/20 Вск 00:45:25 15830903
>>1583080 (OP)
Давным давно писали программы в процедурном стиле, то есть смотрели на программу, как на последовательность выполнения команд. Программа получила входные данные, обработала их и выдала выходные данные. Потом программы усложнялись. Программисты поняли, что сложную систему удобнее представлять как систему взаимодействующих объектов. Добавили в языки специальный синтаксис для упрощения этой процедуры и получили ООП.
Аноним 26/01/20 Вск 07:56:42 15831334
>>1583090
Давным давно писали программы в процедурном стиле и программистов становилось все больше, а потом решили повысить порог вхождения и придумали ООП
Аноним 26/01/20 Вск 08:45:47 15831405
>>1583133
Давным давно считали счетом древних русов, а потом жидорептилоиды решили нас наебать и подменили математику.
Аноним 26/01/20 Вск 09:33:59 15831486
Аноним 26/01/20 Вск 10:25:37 15831637
Аноним 26/01/20 Вск 10:45:58 15831668
>>1583163
Я слышал каждый третий программист в мире жсник. Я не жсник, ты тоже не жсник, значит точно он!
Аноним 26/01/20 Вск 11:35:13 15831759
>>1583166
> значит точно он!

Не точно, я не js-ник с вероятностью (8/27)*100.
Аноним 26/01/20 Вск 11:53:25 158317810
>>1583148
Я JS-ник. МНН - математика не нужна!
Аноним 26/01/20 Вск 12:02:27 158318111
OOP.jpg (85Кб, 728x546)
728x546
Аноним 26/01/20 Вск 12:50:43 158319712
>>1583178
Ложная математика не нужна, нужна истинная: ноль, целковый, чекушка, порнушка, пердушка, засирушка, жучок, мудачок, хуй на воротничок, дурачок.
Аноним 26/01/20 Вск 13:02:32 158320713
>>1583197
>Разрыв новиопа
Найс
Аноним 26/01/20 Вск 13:39:39 158323414
>>1583181
>АДТ = ООП
Тут не опечатка? Не АДТ, АТД, алгебраические типы данных.
Аноним 26/01/20 Вск 13:57:03 158324515
>>1583234
Абстрактные, а не алгебраические, хаскеллист.
Аноним 26/01/20 Вск 15:35:53 158330016
>>1583245
Абстрактные данные типа?
Аноним 26/01/20 Вск 16:03:52 158331317
>>1583080 (OP)
Ооп это доминирующая парадигма.
Аноним 26/01/20 Вск 16:51:00 158336318
>>1583313
Ооп это омега которых много, а фунционалка вот истинный путь доминатора
Аноним 26/01/20 Вск 20:19:20 158351219
>>1583363
Как может доминировать парадигма, применимая в нескольких узких областях?
Аноним 26/01/20 Вск 21:25:51 158355820
>>1583080 (OP)
>кортни кокс никогда не сядет тебе на ебало
нахуй жить
Аноним 26/01/20 Вск 21:31:22 158356321
>>1583300
>>1583245
Это кривой перевод, скорее всего. На инглише что algebraic, что abstract data type будет ADT.
Аноним 26/01/20 Вск 22:53:42 158363022
>>1583080 (OP)
Пока существует только один ЯП где объектно-ориентированное программирование реализовано в полной мере, это SmallTalk. Все остальное это либо попытки сделать SmallTalk c блэкджеком и шлюхами (Objective-C, Ruby), или псевдо-ООП параша (Java, C++, C#, Python, JS, etc).
Аноним 26/01/20 Вск 22:59:47 158363923
>>1583630
И что же на нем никто не программирует?
Аноним 26/01/20 Вск 23:15:17 158366424
Аноним 27/01/20 Пнд 00:14:50 158372025
>>1583563
А на русском - АТД.
По контексту понятно, о чём речь. Если об ООП, то абстрактные, а если о какой-то странной узкой нежизнеспособной хуите - то алгебраические.
Аноним 27/01/20 Пнд 00:24:44 158373526
>>1583630
Что-то не таким уж и жизнеспособным оказалось "настоящее ООП", раз уж прижился только его форк. На бумаге-то, может, всё было хорошо, но практика показала, что возможность "передачи сообщений" объектам, которые эти сообщения не понимают - это не верх инженерной мысли, а свидетельство наличия ошибок в программе.
А в динамической параше можно сколько угодно вызывать несуществующие методы. Бонусом будет падение программы в рантайме. Прям как обращение к несуществующим переменным.
Аноним 27/01/20 Пнд 01:03:55 158377427
>>1583720
>если о какой-то странной узкой нежизнеспособной хуите
Ты сейчас описал ООП.
Аноним 27/01/20 Пнд 01:20:14 158378428
>>1583774
Только в рамках мышления, расширенного аппликативными функторами.
Аноним 27/01/20 Пнд 01:37:32 158378729
>>1583784
Спроси в сикп-треде, у них нет аппликативных функторов, но они тебе скажут то же самое.
Аноним 27/01/20 Пнд 06:38:47 158381230
>>1583512
Потому что сосункам не по зубам
Аноним 27/01/20 Пнд 06:52:37 158381331
>>1583133
> Давным давно писали программы в процедурном стиле и программистов становилось все больше
> а потом решили повысить порог вхождения и придумали ООП
проиграл с манявхождениями. порог вхождения от этого не увеличивается, только разве уменьшается. что бы раньше наверстать гуев на си в гтк нужно было гуглить элемент и смотреть пару сотен методов, где хуй поймешь что и с чем связанно, никаких наследований не было, и приходилось все пихать в один стракт, а потом кастовать в нужный тип... сейчас из-за ебучего ооп, любая макака может взять кьют, где все для дурачков расписанно и имеет строгие методы, реализовать эту парашу может даже самая последняя обезьяна, ни разу не работающая до этого с ооп. так что имхо порог только снизился, а манянаследования и маняполиморфизмы это только подтверждение моему высказыванию
Аноним 27/01/20 Пнд 12:44:37 158391232
>>1583080 (OP)
Если на двух пальцах - это неплохой (и, в целом, пока что единственный реально работающий на больших масштабах) способ организации кода. Значительная часть написанного про ООП - не то чтобы прям полная шняга, но скорее трансляция завышенных ожиданий.

Классическое ООП а-ля Smalltalk не полетело потому же, почему с трудом летят event-driven архитектуры вообще. Java породила множество страданий, которые, в свою очередь, породили два направления: "возврат к истокам" в сторону процедурщины в пртмитивных языках вроде Lua и Go с одной стороны и движение в сторону трейтов а-ля Rust. Если опять-таки на пальцах - наследование реализации порождало больше проблем, чем решало, и от него начали уходить.

Холиварить на эти темы забавно, но бессмысленно. Самая жирная еда - школохаскеллисты, которым нужна МАТЕМАТИЧЕСКАЯ ШТРОГОШТЬ.
Аноним 27/01/20 Пнд 13:27:54 158394533
>>1583912
накодить на функциональщине можно тоже самое и оно будет даже получше в среднем, все таки иммутабельность и идемпотентность, НО кодеров на функциональщине мало, их услуги стоят дороже, их не хайпуют смузихлебы.
почему их мало, порог вхождения выше, например упомянутая жава, а точнее жвм хостит вполне годный кложур, но въехать в него тяжело, придется жевать и саму жабу.
Аноним 27/01/20 Пнд 13:54:14 158395834
>>1583080 (OP)
Мимо любитель на СИ.

Как я понимаю, ООП подразумевает привязку методов к типу (если я правильно выражаюсь). Т.е. класс несет в себе исчерпывающую информацию о том, как с этим типом взаимодействовать и что с ним можно и что нельзя.
(понятно что есть исключения).

А является ли ООП, если методы писать отдельно от типов данных и после уже привязывать к ним (без наследования). И вообще является ли это жизнеспособной концепцией?

Аноним 27/01/20 Пнд 14:14:14 158396135
>>1583813
Да как же. Сейчас миндл от джуна и тд отличается пониманием ООП
Аноним 27/01/20 Пнд 14:16:06 158396336
>>1583958
ооп подразумевает что пакуешь все в объекты и взаимодействуют уже объекты между собой
Аноним 27/01/20 Пнд 14:19:57 158396637
>>1583961

>Сейчас миндл от джуна и тд отличается степенью промытости и разработанности ануса.

Починил тебя.
Аноним 27/01/20 Пнд 14:41:02 158397538
>>1583966
На JS все не заканчивается
Аноним 27/01/20 Пнд 15:16:12 158400339
>>1583912
>Классическое ООП а-ля Smalltalk не полетело
А разве ECS и всякие PubSubы это не оно?
Аноним 27/01/20 Пнд 15:30:48 158401740
14236720048292.png (32Кб, 619x640)
619x640
>>1583912

>единственный реально работающий на больших масштабах

Давай, расскажи мне тут про свое больное спидом говно мамонта.
Аноним 28/01/20 Втр 08:42:23 158451441
>>1583945
>кодеров на функциональщине мало, их услуги стоят дороже, их не хайпуют смузихлебы
Иными словами, функциональщина хуже ложится на устройство человеческого мозга, а всем надо, чтобы ложилась легко. Это не значит, что она плоха - есть отдельные задачи, где она (или ее элементы) прекрасно заходит, поэтому первоклассными функциями в ООП-языках или конструкциями вроде match в Rust никого не удивить. А писать иммутабельно-идемпотентно никто и в ООП не мешает.

>>1584003
>ECS и всякие PubSubы это не оно?
Оно, и event soursing оно. Но строить и отлаживать такие архитектуры сложно, мы не делаем этого без крайней необходимости.

>>1584017
>расскажи мне тут
А вот и первый пациент в этом итт.
Аноним 28/01/20 Втр 08:52:06 158451742
>>1584003

ECS - это конкретно частная борьба с частной проблемой (промахи кеша) частных процессоров (ущербных IBM Cell из PlayStation 3 и IBM Xenon из Xbox 360, у которых одна и та же ущербная кастрированная архитектура без предсказателя предвыборки и переходов ) в одной конкретной частной манянише - геймдеве.

Сейчас эта хуерга на слуху потому что эту хуергу пытаются запихнуть в популярный на мобилках школодвиг Unity3D, поскольку данная проблема говножелеза вылезла уже с говнопроцами на арм из говномобилок и говнопланшетов которые тротлят от перегрева при нагрузке >50%.

Аноним 28/01/20 Втр 09:27:37 158453143
>>1583090
>Давным давно писали программы в процедурном стиле, то есть смотрели на программу, как на последовательность выполнения команд. Программа получила входные данные, обработала их и выдала выходные данные. Потом программы усложнялись. Программисты поняли, что сложную систему удобнее представлять как систему взаимодействующих объектов. Добавили в языки специальный синтаксис для упрощения этой процедуры и получили ООП.

Нет.

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

А объекты, в которых теперь заукливался код позволяли эффективнее расширять штат рабов и обеспечивать более эффективное разделение труда.

Собственно, хуева куча сверхсложного софта написана на сях, та же шинда и юниксы-линуксы с разными СУБД, просто написаны они до 90х годов.
Аноним 28/01/20 Втр 12:47:42 158463944
>>1584531
Эх, как же раньше хорошо то было, неделями элементарные баги вылавливали.
Аноним 28/01/20 Втр 12:50:42 158464145
>>1584639
>Эх, как же раньше хорошо то было, неделями элементарные баги вылавливали.

Раньше просто несколько раз думали, и компилировали в голове прежде чем тянуться к кнопке build/набирать в консоли make.
Аноним 28/01/20 Втр 13:23:55 158467346
>>1583912
>пока что единственный
Нет. Трейты, тобой упомянутые, это уже не ООП, если что.
Аноним 28/01/20 Втр 13:36:15 158469647
>>1584673
In computer programming, a trait is a concept used in object-oriented programming, which represents a set of methods that can be used to extend the functionality of a class.
https://en.m.wikipedia.org/wiki/Trait_(computer_programming)

Хотя в некоторых языках, типа скалки, трейтами можно расширять не только классы, но и объекты.
Аноним 28/01/20 Втр 13:46:28 158470748
>>1584696
Ну тогда нахуй и Хачкель ООП.
Аноним 28/01/20 Втр 14:11:04 158472549
>>1584707
В хаскеле нет трейтов. Как и классов с объектами (в ООПшном смысле), которыми их можно было бы расширить.
Аноним 28/01/20 Втр 14:23:08 158473950
>>1584514
>писать иммутабельно-идемпотентно никто и в ООП не мешает.
>писать иммутабельно в мутабельном языке
это как из буханки сделать трамвай
а идемпотентность рушится из-за этой самой необходимости заворачивать все в объекты
Аноним 28/01/20 Втр 14:48:42 158476251
>>1584725
>В хаскеле нет трейтов.
Там есть тайпклассы, с которых раст слизал трейты.
>Как и классов с объектами (в ООПшном смысле)
Так их и в расте нет.
>которыми их можно было бы расширить.
Что ты подразумеваешь под расширением? Что можно вызывать функцию не func data, а data.method()? Почему в первом случае это не расширение, а во втором нет?
Аноним 28/01/20 Втр 14:49:26 158476352
>>1584762
>Почему в втором случае это расширение, а в первом нет?
Самофикс.
Аноним 28/01/20 Втр 14:51:31 158476453
>>1584514
>Иными словами, функциональщина хуже ложится на устройство человеческого мозг
Это индивидуально и зависит от способа восприятия и мышления.
Операционная семантика и аппликативный порядок - это не что-то очевидное и интуитивное, как принято думать, ей тоже нужно учится.
Когда я первый раз увидел на уроке информатики x = x + 1, я охуел и был разочарован. Потом мне объяснили, что на самом деле x это такая коробочка где лежит 1 и что туда можно положить что-то другое, а ещё что то что в коробочке лежит можно изменять. Потом когда на асме программировали, стало понятно о чем это, что вот есть машина, есть команды, значения идут в регистры, потом производится операция, результат появляется здесь, потом ты его записываешь в память по такому то адресую и так далее.
То есть вот так с нуля думать об операциях, меняющих некое состояние нет никаких оснований. Если на свежую голову учить детонационной или аксиоматической семантике, что ты нихуя не вычисляешь, а просто записываешь правила и отношения, то потом вся эта императивная дрочь со стейтом и процедурками будет казаться какой-то дикой хуйней, плохо ложащейся на человеческий мозг.
Я программирую онли ФП уже более пяти лет и даже при том что у меня было пару лет опыта на ОО-языках, мне намного проще и удобней думать функционально.
Более того, ООП само по себе никак не помогает и, если разобраться, толком не имеет содержания. «Все есть объект» - ну охуенно и че? Может мы можем вывести какие-то свойства этих объектов и свойства их отношений с другими объектами? Что это нам даёт?
На самом деле это просто ещё одно средство структурирования императивного кода, не несущего принципиально ничего нового.
Аноним 28/01/20 Втр 14:53:10 158476754
>>1584764
>денотационной
пофиксил автозамену
Аноним 28/01/20 Втр 14:55:15 158477055
>>1584764
>Я программирую онли ФП уже более пяти лет
Какие языки, стек? Где работаешь, рашка, украшка, пиндосия, гейропа? Как вкатился?
Аноним 28/01/20 Втр 15:07:44 158479056
>>1584762
> Там есть тайпклассы, с которых раст слизал трейты
Это что же получается, трейты - это интерфейсы с генериками что ли???

мимо
Аноним 28/01/20 Втр 15:43:46 158482357
>>1584770
Начинал с Erlang, потом Elixir, вот чуть более года параллельно ещё на скалке. Ерланг пропихнул в конторе где работал, применил его для нескольких кейсов, потом брал сторонние мелкопроекты уровня запила плагинов к джаберу, потом знакомая HR позвала на Elixir/Phoenix проект на ремоут, потом работал на еликсире в местном мелкоконсалтинге на скандинавию, потом работал в основном ремоут на UK. Сейчас на ремоуте парт тайм на одного немца с криптостартапом и параллельно парт тайм на скалке на калифорнийском игровом проекте.
Аноним 28/01/20 Втр 15:44:39 158482458
>>1584764
в лиспе есть гомоиконность и она работает, ооп не работает, она всего лишь заставляет заворачивать все в обертки
Аноним 28/01/20 Втр 15:54:52 158483259
>>1584824
>в лиспе есть гомоиконность и она работает

Только медленно.

Слишком.

Даже жирножаба быстрее.

Именно поэтому в свое время лисп проиграл интырпрайз поочередно коболу и жабе.
Аноним 28/01/20 Втр 16:07:33 158483760
>>1584762
Потому что тайпклассы это тайпклассы, а трейты это трейты.
Вот в ПХП нет ни пользовательских типов, ни их классов, а трейты есть.
Отличие трейтов от интерфейсов с дженериками заключается в позднем связывании, за счёт которого: а) трейты можно настакать друг за другом в нужной последовательности, б) можно расширять объекты, а не только классы.
Аноним 28/01/20 Втр 16:43:58 158487661
>>1584764
То есть тебе действительно реализовать алгоритм Дейкстры или решить задачу о рюкзаке на функциональщине проще?
Аноним 28/01/20 Втр 18:32:30 158498662
>>1584837
Объясни, что ты подразумеваешь под расширением класса или объекта, и почему этого нельзя сделать в Хачкеле, но на алгебраических типах данных.
Аноним 28/01/20 Втр 19:36:59 158503463
>>1584986
>что ты подразумеваешь под расширением класса
class MyClass extends MySuperClass with MyTrait1 with MyTrait2 { ... }

>или объекта
val t = new MyClass with MyTrait { ... }

Например, в трейте ты можешь объявить какое-то поле/метод (можно абстрактные) и потом класс или объект на момент инстанцирования, который его использует будет иметь этот поле/метод.

abstract class SavingsAccount extends Account with Logger {
__def withdraw(amount: Double) {
____if (amount > balance) log("Insufficient funds")
____else ...
__ }
...}

Более того, если ты можешь использовать цепочку трейтов:

trait TimestampLogger extends ConsoleLogger {
__override def log(msg: String) {
____super.log(s"${java.time.Instant.now()} $msg")
__}
}

trait ShortLogger extends ConsoleLogger {
__override def log(msg: String) {
____super.log(if (msg.length <= 15) msg else s"${msg.substring(0, 12)}...")
__}
}

val acct1 = new SavingsAccount with TimestampLogger with ShortLogger
val acct2 = new SavingsAccount with ShortLogger with TimestampLogger

acct1 при овердраве залогирует: Sun Feb 06 17:45:45 ICT 2011 Insufficient...
А acct2: Sun Feb 06 1...

В хаскеле же нет ни объектов, ни классов.
Классы типов позволяют добиться перегрузки, но они работают на типах, а не на объектах.
Аноним 29/01/20 Срд 00:13:33 158518064
1
Аноним 14/02/20 Птн 23:56:56 160220965
Pharov3-0.png (133Кб, 930x699)
930x699
squeak2.png (170Кб, 1024x798)
1024x798
DolphinNBSQLite3.png (392Кб, 1103x779)
1103x779
smalltalk-deskt[...].jpg (152Кб, 606x664)
606x664
>>1583735
>форк
Это не форк. Pharo, Squeak, Dolphin это все диалекты. Попытки воссоздать и адаптировать под современные компьютеры оригинальный Smalltalk, который был на Xerox Alto.
Аноним 15/02/20 Суб 00:33:42 160222566
>>1583080 (OP)
>объектно-ориентированное программирование
такой же единорог, как и многопоточка. никто не знает как правильно и поэтому придумывают костыли
Аноним 15/02/20 Суб 00:35:16 160222667
>>1602225
>многопоточка
в иммутабельных языках с ней все хорошо, в мутабельных костылизм.
Аноним 15/02/20 Суб 01:41:08 160226568
>>1602226
>в иммутабельных
Так это и есть костыль.

мимофпбоярин
Аноним 15/02/20 Суб 01:48:47 160227069
>>1602265
мутабельность дает вагоны сайдэффектов, если уж нужна то и в фп языках есть способы, в обратном случае костыль на костыле
Аноним 15/02/20 Суб 15:59:28 160287170
>>1602270
>мутабельность дает вагоны сайдэффектов
какие сайдэффекты у stdatomic переменных?
Аноним 15/02/20 Суб 16:07:17 160288971
О, срач про иммутабельность. У вас же свой тред был, хуле вы его проебали и набегаете в другие треды?
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов