@oop_ru

Страница 781 из 785
Bohdan
18.10.2018
13:58:42
разве на котлине и на джаве пишется только под андроид?)

Ihor
18.10.2018
13:59:27
некоторые люди себе в ногу могут выстрелить.... огнестрел позволяет это сделать ))

Aleh
18.10.2018
13:59:49
зачем джава если есть kotlin

Google
Bohdan
18.10.2018
14:00:12
ноги вроде у всех целы

Ihor
18.10.2018
14:02:37
мне нечего добавить )

Bohdan
18.10.2018
14:03:23
я тебя не понял - то ли это наброс, то ли это попытка критики

Дмитрий
18.10.2018
14:04:54
Грубо говоря https://en.wikipedia.org/wiki/Digital_asset_management контора специализируется на оцифровании всяких штук (от архивных документов, до насекомых).
Оу, бери язык с нативными variant type (aka sum type), подозреваю что в этой тематике огромное количество кейсов при разработке

Anton
18.10.2018
14:06:35
ты же не будешь под web на котлин писать, или java?
речь далеко не про web. я уже сказал общее направление. это DAM. т.е. обработка и хранение огромного потока цифровой информации. метатеги, Linked Data. но это все очень общее.

это не просто бложик или цмс

Anton
18.10.2018
14:07:34
я сам не могу ничего конкретного сказать. т.к. все еще на этапе планирования, а я не тот человек с кем делятся бизнес планами. я просто девелопер, у которого спросили мнения. а я решил поресерчить

что сейчас есть

Ihor
18.10.2018
14:08:03
приходи с ТЗ ))

Anton
18.10.2018
14:08:05
Например очевидно, что пхп не самый лучший выбор для старта проекта.

Maksim
18.10.2018
14:08:58
го тоже не бери) там одни донные пхпшники, а поиск нормального гофера - тот ещё квест с канями. лучше кого-нить из мира джавы поискать (ну и всякого непотребства после неё)

Google
Артур Евгеньевич
18.10.2018
14:10:12
Команда бывших пхпшников будет хуярить новый проект, на том что им скажут(основываясь на советах в чатике), не учитывая их мнение...успех неизбежен

Ihor
18.10.2018
14:10:16
Например очевидно, что пхп не самый лучший выбор для старта проекта.
дело стартапа, быстро стартонуть и проверить, будет ли спрос... так что и пых сойдёт. А вот бизнес, скорее всего, потребует делать быстро...

Anton
18.10.2018
14:11:25
Команда бывших пхпшников будет хуярить новый проект, на том что им скажут(основываясь на советах в чатике), не учитывая их мнение...успех неизбежен
вообще идея в том чтобы сами пхпшники (и вообще часть команды бывышие ФПшники из мира эрланга) и они сами вместе скооперировались.

и дело далеко не в языке

Ihor
18.10.2018
14:12:05
бери java... на рынке полезен )

Anton
18.10.2018
14:12:26
ну вот я уже услышал мнение, что зачем java если есть kotlin и я согласен с этим

короче общую тендецию я уже услышал.

Артур Евгеньевич
18.10.2018
14:14:00
ну вот я уже услышал мнение, что зачем java если есть kotlin и я согласен с этим
может быть для того чтобы не носиться по рынку как сумасшедший когда например два разраба решат уволиться одновременно? или например не писать саморучно код под каждый чих, а использовать готовую либо, компоннет которых для джавы дохера?

я не говорю что котлин хуже, просто привел два кейса где джава выгоднее

ну корчое по мне пздц ситуация. то что язык/парадигма выбирается не под задачу, возможности и текущую компетенцию команды, а просто по моде и советам

Anton
18.10.2018
14:15:31
боже я же не говорю что выбирается

Артур Евгеньевич
18.10.2018
14:15:34
но есил на проетк пох и цель самопрокачаться, то я соглассен надо брать всё максимальнно свежее и интересное без оценки рисков

Anton
18.10.2018
14:15:38
моя цель услышать фидбэк

Bohdan
18.10.2018
14:16:00
я не говорю что котлин хуже, просто привел два кейса где джава выгоднее
м, так ведь у котлина и джавы полный интероп, не?

Adel
18.10.2018
14:17:48
моя цель услышать фидбэк
мой фидбек, выбор должен зависеть от твоих скиллов. и скиллов команды. мы недавно выбирали. Если на проект взять вон того знакомого явиста, то можно на яве/котлине лабать. Я более-менее ориентируюсь. Но если нет, то лучше на C# или PHP потому что я там хоть веб-проекты писал. Если бы я хотел прокачаться, то по-другому бы размышлял.

Aleh
18.10.2018
14:18:40
ну вот я уже услышал мнение, что зачем java если есть kotlin и я согласен с этим
я тоже посоветую язык с адекватными типами и возможности по ним генерить всякую инфу например для rpc(теже http клиенты к апишке)

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

но можно и elixir…

Google
Adel
18.10.2018
14:21:06
Хотя я конечно забыл упомянуть специфику проекта. всякие бигдаты на пхп лабать - путь в никуда скорее всего :)

Anton
18.10.2018
14:26:27
понятное дело, что выбор языка будет учитывать множество факторов. но как я говорил один из вариантов, это переобучение команды на новый язык с последующим вовлечением эксперта из этой области. сама команда не ретарды, есть понимание о OOP и P of EAA и прочее. В общем всем спасибо за внимание. особенно тем, кто дал свое мнение по моему изначальному вопросу.

Aleh
18.10.2018
14:27:43
Хотя я конечно забыл упомянуть специфику проекта. всякие бигдаты на пхп лабать - путь в никуда скорее всего :)
что-то, что будет больше 20к строк делать на пыхе - сомнительная идея как мне кажется

Maksim
18.10.2018
14:27:52
сидел и думал что такое P of EAA... понапридумывали же)

Anton
18.10.2018
14:28:20
ну вроде это сокращение известное, не?

Adel
18.10.2018
14:28:33
это ж фаулеровской книги название, да?

Anton
18.10.2018
14:28:50
да паттерны ентерпрайз приложений

Aleh
18.10.2018
14:28:51
вроде известное

Adel
18.10.2018
14:29:03
ой... не смог дочитать эту книгу :)

Aleh
18.10.2018
14:29:11
так это ж справочник

Maksim
18.10.2018
14:29:12
хз чёт не пересекался даже особо. Ну или внимания не обращал

Anton
18.10.2018
14:29:19
да, это же справочник

Adel
18.10.2018
14:29:22
так это ж справочник
да. вечно засыпал :)

Aleh
18.10.2018
14:29:34
так это ж справочник
аля гофовский паттернов, только здесь более высокоуровневые решения обсуждаются

Anton
18.10.2018
14:29:59
там важно просто понимать что это такое. а к деталям обращаться только при попытке это использовать в реальном месте

Maksim
18.10.2018
14:30:01
ну если гофа осилили не уснув, то с этой должно со свистом пройти)

Dmitriy
18.10.2018
14:41:18
.NET Core збс, сисярп форева

Arky
18.10.2018
14:50:41
Maksim
18.10.2018
14:52:38
а эт ваще для какого уровня книга?)
Когда наступает смирение)

Google
Maksim
18.10.2018
14:53:05
Но на самом деле если не открывал, самое время начать)

Yury
18.10.2018
15:59:59
Имхо лучше взять то, на чем лучше всего пишут Seniors.

Max
18.10.2018
16:36:03
Есть вопрос для обсуждения. Тут на работе подняли тему, что взять для нового проекта (продукта как хотят менеджера). Есть ребята топящие за полное ФП, есть которые за полный ООП, а есть которые за всякое другое (я лично предлагал попробовать Kotlin) Хотелось бы услышать краткий обзор или авторитетное мнение. Команда в основном бывшие пхпшники. но есть ряд людей которые писали на erlang, а сейчас пишут фронт на Elm. Вот хотелось бы услышать просто ряд мнений без фанатизма с примерами языков. Вот пример языков которые предлагали: Elixir, Closure, Scala, Java, PHP, Go, Python и всякое другое. Пишу не для вброса или еще чего-нибудь, просто хотелось с агрегировать ряд мнений и коротких фидбеков. т.к. сам проект еще на стадии глубокого обсуждения и тяжело понять даже масштабы.
Поправьте если я ошибаюсь, но ключевая позиция фп - это работа с данными в иммутабельном виде а ключевая позиция ооп - когда данные представляют собой живой граф объектов. То есть, с ооп, когда отдельная функция получает какой-то глубокий объект этого графа то она может сохранить этот объект в замыкании и со временем свободно обновлять поля этого объекта и актуальные изменения увидят все другие функции которые также хранят ссылку на этот объект. А подход иммутабельности и отсуствия сайдэффектов в фп предполагает что мы должны вернуть новый объект после его изменения но помимо этого также должны рекурсивно заменить всех родителей новыми объектами (потому что у них нужно изменить поле ссылающееся на новый объект ребенка) а это добавляет неудобств в при появлении циклических ссылок друг на друга потому что их нужно хранить через айдишники на эти объекты (иначе будут рекурсивно пересоздаваться все связанные по ссылке объекты и результате получим что чуть ли не весь граф объектов будет пересоздан заново). Например в мессенджере когда есть объект юзера со списком чат-комнат и каждая такая чат-комната ссылается на объект юзера и также на объект самой комнаты то с ооп мы можем просто хранить эти объекты в виде вложенных объектов и ссылок и удобно получить например список чатов юзера user.chatRooms.map(cr=>cr.room)а с фп придется дополнительно джойнить данные получая каждый объект чата по его айдишнику из глобального хеша user.chatRoomsIds.map(id=>globalHash.get(id)).map(roomUser=>globalHash.get(roomUser.roomId))что добавляет некоторой неясности в код. А когда функция захочет обратиться к более глубоким объектам по цепочке то код с фп становится еще сложнее Например есть приложение с кучей вложенных сущностей - юзер может создавать папки, внутри папок проекты, внутри проектов задачи и к задачам может создавать подзадачи то функция которая получает объект подзадачи и ей нужно вычислить приоритет на основе приоритета папки в которой эта подзадача находится то ей по сути нужно будет от объекта задачи добраться до объекта папки через все промежуточные объекты. И если в ооп это можно записать просто и наглядно subtask.task.project.folder.priorityто с иммутабельным подходом нужно будет вытаскивать каждый промежуточный объект из глобального хеша и код становится совсем не наглядным globalHash.get(globalHash.get(globalHash.get(subtask.taskId).projectId).folderId).priorityИ в реальных приложениях код бизнес-логики будет сплошь и рядом увешан кодом постоянного вытаскивания нужных объектов по их айдишникам из хеша и в итоге превращается в ненаглядную лапшу.

Anton
18.10.2018
16:47:35
> есть понимание ооп Это что?)
это мое субъективное суждение.

Дмитрий
18.10.2018
16:48:22
Anton
18.10.2018
16:48:54
незачем.

Поправьте если я ошибаюсь, но ключевая позиция фп - это работа с данными в иммутабельном виде а ключевая позиция ооп - когда данные представляют собой живой граф объектов. То есть, с ооп, когда отдельная функция получает какой-то глубокий объект этого графа то она может сохранить этот объект в замыкании и со временем свободно обновлять поля этого объекта и актуальные изменения увидят все другие функции которые также хранят ссылку на этот объект. А подход иммутабельности и отсуствия сайдэффектов в фп предполагает что мы должны вернуть новый объект после его изменения но помимо этого также должны рекурсивно заменить всех родителей новыми объектами (потому что у них нужно изменить поле ссылающееся на новый объект ребенка) а это добавляет неудобств в при появлении циклических ссылок друг на друга потому что их нужно хранить через айдишники на эти объекты (иначе будут рекурсивно пересоздаваться все связанные по ссылке объекты и результате получим что чуть ли не весь граф объектов будет пересоздан заново). Например в мессенджере когда есть объект юзера со списком чат-комнат и каждая такая чат-комната ссылается на объект юзера и также на объект самой комнаты то с ооп мы можем просто хранить эти объекты в виде вложенных объектов и ссылок и удобно получить например список чатов юзера user.chatRooms.map(cr=>cr.room)а с фп придется дополнительно джойнить данные получая каждый объект чата по его айдишнику из глобального хеша user.chatRoomsIds.map(id=>globalHash.get(id)).map(roomUser=>globalHash.get(roomUser.roomId))что добавляет некоторой неясности в код. А когда функция захочет обратиться к более глубоким объектам по цепочке то код с фп становится еще сложнее Например есть приложение с кучей вложенных сущностей - юзер может создавать папки, внутри папок проекты, внутри проектов задачи и к задачам может создавать подзадачи то функция которая получает объект подзадачи и ей нужно вычислить приоритет на основе приоритета папки в которой эта подзадача находится то ей по сути нужно будет от объекта задачи добраться до объекта папки через все промежуточные объекты. И если в ооп это можно записать просто и наглядно subtask.task.project.folder.priorityто с иммутабельным подходом нужно будет вытаскивать каждый промежуточный объект из глобального хеша и код становится совсем не наглядным globalHash.get(globalHash.get(globalHash.get(subtask.taskId).projectId).folderId).priorityИ в реальных приложениях код бизнес-логики будет сплошь и рядом увешан кодом постоянного вытаскивания нужных объектов по их айдишникам из хеша и в итоге превращается в ненаглядную лапшу.
ну вот я пока не пробовал ФП в качестве бизнес приложения. и я хочу занятся в ближайшем будущем, чтобы понять эти тонкости. насчет `subtask.task.project.folder.priority` -- это не совсем про ооп. это скорее про структуры какие-то.

Дмитрий
18.10.2018
19:27:26
Поправьте если я ошибаюсь, но ключевая позиция фп - это работа с данными в иммутабельном виде а ключевая позиция ооп - когда данные представляют собой живой граф объектов. То есть, с ооп, когда отдельная функция получает какой-то глубокий объект этого графа то она может сохранить этот объект в замыкании и со временем свободно обновлять поля этого объекта и актуальные изменения увидят все другие функции которые также хранят ссылку на этот объект. А подход иммутабельности и отсуствия сайдэффектов в фп предполагает что мы должны вернуть новый объект после его изменения но помимо этого также должны рекурсивно заменить всех родителей новыми объектами (потому что у них нужно изменить поле ссылающееся на новый объект ребенка) а это добавляет неудобств в при появлении циклических ссылок друг на друга потому что их нужно хранить через айдишники на эти объекты (иначе будут рекурсивно пересоздаваться все связанные по ссылке объекты и результате получим что чуть ли не весь граф объектов будет пересоздан заново). Например в мессенджере когда есть объект юзера со списком чат-комнат и каждая такая чат-комната ссылается на объект юзера и также на объект самой комнаты то с ооп мы можем просто хранить эти объекты в виде вложенных объектов и ссылок и удобно получить например список чатов юзера user.chatRooms.map(cr=>cr.room)а с фп придется дополнительно джойнить данные получая каждый объект чата по его айдишнику из глобального хеша user.chatRoomsIds.map(id=>globalHash.get(id)).map(roomUser=>globalHash.get(roomUser.roomId))что добавляет некоторой неясности в код. А когда функция захочет обратиться к более глубоким объектам по цепочке то код с фп становится еще сложнее Например есть приложение с кучей вложенных сущностей - юзер может создавать папки, внутри папок проекты, внутри проектов задачи и к задачам может создавать подзадачи то функция которая получает объект подзадачи и ей нужно вычислить приоритет на основе приоритета папки в которой эта подзадача находится то ей по сути нужно будет от объекта задачи добраться до объекта папки через все промежуточные объекты. И если в ооп это можно записать просто и наглядно subtask.task.project.folder.priorityто с иммутабельным подходом нужно будет вытаскивать каждый промежуточный объект из глобального хеша и код становится совсем не наглядным globalHash.get(globalHash.get(globalHash.get(subtask.taskId).projectId).folderId).priorityИ в реальных приложениях код бизнес-логики будет сплошь и рядом увешан кодом постоянного вытаскивания нужных объектов по их айдишникам из хеша и в итоге превращается в ненаглядную лапшу.
Получите распишитесь

https://www.gamedev.net/blogs/entry/2265481-oop-is-dead-long-live-oop/

Shaun
18.10.2018
19:35:28
https://www.gamedev.net/blogs/entry/2265481-oop-is-dead-long-live-oop/
А где пост на который ссыляется автор в начале? Хотел сначала его прочитать, но не могу найти

Дмитрий
18.10.2018
19:36:28
Хз, hackernews принёс через минуту после вопроса тут

Bohdan
19.10.2018
10:04:28
ну не знаю, ООП на мой вкус прикольнее

Aleh
19.10.2018
10:05:10
ооп это то, не знаю что?) Да, оч прикольно

каждый раз открывается с разной стороны

Bohdan
19.10.2018
10:06:56
и все время с непонятно, какой

Bohdan
19.10.2018
10:09:03
Извинись
ты либо в тренде, либо уходи

First
19.10.2018
10:09:11
ты либо в тренде, либо уходи
Дык в тренде фп, не?

Google
Aleh
19.10.2018
10:09:39
извинения в тренде и в треде

Bohdan
19.10.2018
10:09:51
забаню

First
19.10.2018
10:10:15
забаню
Ок, соре Ооп рулит

Bohdan
19.10.2018
10:10:44
да не , я не за ооп, а за наброс

Aleh
19.10.2018
10:21:37
но за ооп тож можно забанить, ящитаю

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