<bgdev />free

| |  


All tags 2023 9may ai algorithm alpha amd american api argon2 arm asm asmbb assembler attachment awareness balgaria bay888 bcrypt bender beta bgdev-next bgdev-next.👍 big.data bitchnigga bitcoin bmw boi borg brexit bug bulgaria business c cad chat cloud computer-names console crossorigin deprivation desktop dna dotnet email eupl falling feature forum foundation fp fresh fun game gcc github goats google gpl gpt gpt.3.5 gypsies happiness harvard hash improvement include investment it java javascript js kleta kleta.maqka.balg lambi language learning leftovers legend level levenshtein.dist libx license linkedlist linux m0 ma mcafee mele microsoft minimag minimalism negro net nginx nigga not.a.bug oop paradigm parler patterns perception persuasion pipe play.station politics populi pornhub pow pro programming protonmail python reba rust sci-fi scripting seks seo server shell sleep smartbeauty soft-skills sqlite srabska sse starship sugerface syntax tablet tailwindcss telegram theme thug troll80lvl tutanota typescript uacme ui uk unix untermensch upload uptime usa utilities ux vb via viber virtual.reality vox vps vulnerable war wasm weapons-grade web windows word x86 xbox xss youtube zig ziglang Übermensch БОКЕБЪЛГАРИН БЪ БЪлгария Белезниците Били Били.Белезниците БялДонор Веган Виста Възраждане ГЛУПАК Гана Глиста ЕС Казарма Копейкин Мода.и.овча.мисъ НЕКАДЪРНИК НРБ ПО-ЗЛЕ.И.ОТ.РАБИ Подкасти Разни Румен СИК СКУМ СетенЧук Скум ТИР Туче Украйна Урсула Яначков авангард аз айфонджия алгоритми амбиции анархизъм антиваксъри армения аудио аутисти бази.данни бакъп без без.пръчове безпросвета бенчмарк биготи биомаса бира боклук борисов ботев брадва булшит бъг бъгове бял ваксина вандал век венерика викинги вицове вишу война вървежен гана ганорник гей гейщина германия герои гешев глупак говеда групировка гюбек данъкоплатец двойни.стандарти дедотия демокрация дизайн дисциплина добитък докери долар донори држава дришльо дрон ебане еврогейски.съюз езици експеримент електроника електроника.s2 емиграция ендпойнт енум ерген ергономия жалкар задача затоплизъм защита здраве златен злато игри идеали идиократ идиократи идиокрация идиот избори избори.рабин изкуство икономика имбецили имейл инвестиране инокулация инструмента интервю ипад искам.да.си.реда казах камшикодържач капитализъм карабах караница картечница кино клавиатура ковид19 колайдер колям.кур комари комплексар комунизъм консолидация конспирации космонавтика кофа кофит-19 краставица криптовалути курви кучелюбци лайно лаладжия лаптоп либерастия литература лоши.практики луд лъжеучени лъжец любов майни майтапи малоумници мафия мениджмънт месо местене метавселена метафизика механика мистика мисъл мода мода.овча.мисъл модерация морал мутра мутри наука национализъм не.it негър некадърник некадърници неон нидерландия овча овчи олигофрени организация офтопик парички партия педал пенджури пенсия пишока плюскане победа погромист поезия политика порно посредствен почивка празници прасе превод предалщина програмиране проект проста простотии против.правилата проф пръч пръч.дришльо пръчка психика психични.болести психология пустиняк путин путката путьо рабин рабин.е.шибан.пе работа радост разврат разни разработка расизъм резерват рейтинг реклама рекламен религия рест ризи ропче ропчета русия руски.език рутина самоковска сасипаха секира село селяндур сериали сериозно.програм сетен сеянин симулация скопяване скръм слушалки сортиране софия софтуер софтуни социализъм спектрометър спринтове сране стандарти стил стуйо стюи сушилня сцена съвет съм сън сървър сърничка таб ташаци телевизия тема територията терминология термояд технологии титли традиция тролинг тръмп туба туче тъпак тъпанари тъпня уиндоус украйна умнокрасивци фалит фантастика фашизъм фейк.акаунти физика филми форум форумни.проекти футбол хазарт хамали харабия хардуер хахаха хомофобия хостинг храна хумор цайко цайси целофан цензура цензурра циганин чалга чалгар чекии чернокраки честота чипове чнг чужбина чук шпация щайга юан яката яко ям 🔨 😂 🪓


Patterns'n'shit

  

0 1 2 3 4 5 6 7 8


  stewie  Създадено на 05.08.2020, видяно: 2139 пъти. #2983
Rabin
Евлампи
johnfound

Е! Това не се ли казва "полиморфизъм"??? Какви са тия "субститушън принципи"???

И на мен ми идва малко stating the obvious точно щото това е идеята на полиморфизма.

Реално се казва същото но по друг и не толкова разбираем начин с претенция да е научно формализиран щото има формули!

Ето, призна си че го не знааш кво е творението на буля Лисков. В уикирастията пише нещо съвсем различно от твойто, и също толкова абсурдно.

Просто като вишист да обясня. Една програма трябва да върне същият резултат ако в нея заменим инстанциите на даден клас с негов наследник. Полиморфизмът е средство да се изпълни това.



  Elim Garak  Създадено на 05.08.2020, видяно: 2284 пъти. #2985
johnfound
Евлампи
Rabin

Нищо не разбрах, дай пак. В Уикирастията е обяснено още по-малоумно.

От гледна точка на клиентския код приемащ инстанция на някакъв клас не би трябвало да има значение дали инстанцията е на тоя клас или някой наследник. Както синтактично така и семантично, примерно ако имаш база Shape с метод draw и подадеш окръжност, се очаква да бъде изчертана, тоя принцип казва че ако подадеш Rect не би трябвало от монитора да изскочи некъв уй и да те изпляска по челото а само правоъгълника кротко да се изчертае.aping.

Действително е изнасилено нещо толкова очевидно да се изкарва като SUBSTITUTION PRINCIPLE ама то в оопето изнасилени неща да иска човек :)

Е! Това не се ли казва "полиморфизъм"??? Какви са тия "субститушън принципи"???

Много хора се бъркат, защото масово старите програмните езици не правят разлика между inheritance и subtyping. Правилото на Лисков, служи да ти напомни да ползваш subtyping, защото inheritance е дете на дявола. Поради тази причина в съвременните езици няма inheritance, има само subtyping.

Какво е subtyping: отнася се за съвместимостта на интерфейсите - Ако Б е подтип на А, то върху Б трябвада може да извикаш всяка функция, която може да извикаш на А, като не променяш контракта. На джаварски може да се каже, че събтайпинга е да имплементираш някъв интерфейс.

Какво е inheritance: отнася се за преизползването на код - примерно функциите на тип Б са имплементирани чрез функциите на тип А. Ясно е че ако наследиш някакъв клас той получава достъп до protected + public методите на родителския клас. До голяма степен (без protected) същото се постига и чрез композиция, но с добавения плюс, че не си замърсяваш типа.

Прост пример: имаш клас 2ДТочка(х, у). Може да направиш 3ДТочка като наследиш 2ДТочка и добавиш още едно поле за Z. Обаче така чупиш контракта на hashcode/equals. Езика ти позволява да подадеш указател към 3ДТочка, там където се очаква указател към 2Дточка, защото имаш отношение is-a: демек 3Д точката е 2Д точка. Виждаш ли проблема ?



  Golden Gega  Създадено на 05.08.2020, видяно: 2277 пъти. #2989
stewie
Rabin
Евлампи
johnfound

Е! Това не се ли казва "полиморфизъм"??? Какви са тия "субститушън принципи"???

И на мен ми идва малко stating the obvious точно щото това е идеята на полиморфизма.

Реално се казва същото но по друг и не толкова разбираем начин с претенция да е научно формализиран щото има формули!

Ето, призна си че го не знааш кво е творението на буля Лисков. В уикирастията пише нещо съвсем различно от твойто, и също толкова абсурдно.

Просто като вишист да обясня. Една програма трябва да върне същият резултат ако в нея заменим инстанциите на даден клас с негов наследник. Полиморфизмът е средство да се изпълни това.

Да върне същия резултат или просто да върви? Щото тук цък втория пример показва как с базов клас и с наследник програмата показва различни резултати.



  stewie  Създадено на 05.08.2020, видяно: 2134 пъти. #2991

Корекция, да завърши успешно.



  Евлампи  Създадено на 05.08.2020, видяно: 2269 пъти. #2992
Rabin

D-то е друга мода и мисъл овча, дето програматорите ги било стра от EJB, и предпочитат Спринговщини. После дебъгерът мълчи и не помага. Затуй храня секви нови моди, щото съм работил и с двете, и знам разликата. И 21 прекъсване знам кво е, ама то вече се смеят на двата ми телефона. Ех, на кво поколение оставяме таа планета...

п.с. Ламби, само си мислиш, че познаваш буля Лискова. Ама то кой ли те е убедил в нещо, че аз ли!

D-то поне в low ceremony езиците с така наречения duck typing (което отново НА ПРАКТИКА е лицето на полиморфизма, просто от малко по-друг ъгъл) също е stating the obvious но в езици като Java и C# е смислено напомняне че ако ползваш само IEnumerable функционалност например не бива да да шибаш по-специализиран интерфейс за тип на параметър или пък конкретна реализация.

А Лисков казва точно това - подаването на инстанция на наследник не трябва да да чупи кода както синтактично така и семантично което ако си наясно с по-общата идея на полиморфизма е очевидно - всеки наследник или добавя или имплементира базова функционалност по специфичен начин, но това трябва да не променя желаното поведение на програмата, тоест децата да поддържат ПОНЕ нещата поддържани от родителите а тези които ги правят по специфичен начин да са семантично коректни, не просто овъррайднатият метод да е синтактично коректен но и смислово да прави квото базата е посочила като път към светлото бъдеще



  Golden Gega  Създадено на 05.08.2020, видяно: 2268 пъти. #2993
stewie

Корекция, да завърши успешно.

Иба, що всички колеги не са като теб...



  stewie  Създадено на 05.08.2020, видяно: 2134 пъти. #2994
Golden Gega
stewie

Корекция, да завърши успешно.

Иба, що всички колеги не са като теб...

Аз нямам против да съм грешен, стига докато греша да ми плащат.



  Golden Gega  Създадено на 05.08.2020, видяно: 2262 пъти. #2995
stewie
Golden Gega
stewie

Корекция, да завърши успешно.

Иба, що всички колеги не са като теб...

Аз нямам против да съм грешен, стига докато греша да ми плащат.

Мани грешките, говоря че с теб се спори приятно и смислено, кой не греши



  Elim Garak  Създадено на 05.08.2020, видяно: 2260 пъти. #2997

D-то е друга мода и мисъл овча, дето програматорите ги било стра от EJB, и предпочитат Спринговщини. После дебъгерът мълчи и не помага.

Очевидно не разбираш и D-то, и не, не е Dick. D-то е Dependency Inversion (не Injection, за което си мислиш) и няма общо със спрингове и еджъбъта



  stewie  Последно редактирано на 05.08.2020 от stewie, видяно: 2133 пъти. #2998
Golden Gega
stewie
Golden Gega
stewie

Корекция, да завърши успешно.

Иба, що всички колеги не са като теб...

Аз нямам против да съм грешен, стига докато греша да ми плащат.

Мани грешките, говоря че с теб се спори приятно и смислено, кой не греши

Моите колеги, те са безгрешни. Носят фланелки от конференции, i test on production, tell me more about your monolith и подобни. ПР при нас е или си съгласен с тях или си търси нова работа.

Общо взето доста програмисти има като тях. Вечер жените им ги стимулират с дилдота докато бистрят новата гениална архитектура.



  Golden Gega  Създадено на 05.08.2020, видяно: 2256 пъти. #3000
stewie
Golden Gega
stewie
Golden Gega
stewie

Корекция, да завърши успешно.

Иба, що всички колеги не са като теб...

Аз нямам против да съм грешен, стига докато греша да ми плащат.

Мани грешките, говоря че с теб се спори приятно и смислено, кой не греши

Моите колеги, те са безгрешни. Носят фланелки от конференции, i test on production, tell me more about your monolith и подобни. ПР при нас е или си съгласен с тях или си търси нова работа.

Ти да не бачкаш в бангладешка фирма бе, кви са тия изроди? Аз тук носех девелоперски надписи, гледаха ме като изтребител



  Евлампи  Създадено на 05.08.2020, видяно: 2255 пъти. #3002
Golden Gega

Да върне същия резултат или просто да върви? Щото тук цък втория пример показва как с базов клас и с наследник програмата показва различни резултати.

Естествено че един правоъгълник ще се изчертава по различен начин от окръжност или резултатът от Adder calc ще е различен от резултатът на Multiplier calc (и двамата наследника на база за сметки с два операнда).

Но поведението на програмата, да се изчертае неква фигура или сметне неква сметка с два операнда трябва да е едно и също по смисълът вложен в самата абстракция



  stewie  Създадено на 05.08.2020, видяно: 2133 пъти. #3003
Golden Gega
stewie
Golden Gega
stewie
Golden Gega
stewie

Корекция, да завърши успешно.

Иба, що всички колеги не са като теб...

Аз нямам против да съм грешен, стига докато греша да ми плащат.

Мани грешките, говоря че с теб се спори приятно и смислено, кой не греши

Моите колеги, те са безгрешни. Носят фланелки от конференции, i test on production, tell me more about your monolith и подобни. ПР при нас е или си съгласен с тях или си търси нова работа.

Ти да не бачкаш в бангладешка фирма бе, кви са тия изроди? Аз тук носех девелоперски надписи, гледаха ме като изтребител

Е хамериканци са, но бачкам дефакто с украинци, поляци, хървати и тук таме българи. Украинците са най-тъпата нация евър.



  Golden Gega  Създадено на 05.08.2020, видяно: 2248 пъти. #3005
Евлампи
Golden Gega

Да върне същия резултат или просто да върви? Щото тук цък втория пример показва как с базов клас и с наследник програмата показва различни резултати.

Естествено че един правоъгълник ще се изчертава по различен начин от окръжност или резултатът от Adder calc ще е различен от резултатът на Multiplier calc (и двамата наследника на база за сметки с два операнда).

Но поведението на програмата, да се изчертае неква фигура или сметне неква сметка с два операнда трябва да е едно и също по смисълът вложен в самата абстракция

Тук можем да навлезем в един интересен спор какво значи "смисъл вложен в абстракцията". Ако двата метода са с леко различен смисъл тогава солидни ли сме или не?



  Rabin  Създадено на 05.08.2020, видяно: 2127 пъти. #3006
Евлампи

А Лисков казва точно това - подаването на инстанция на наследник не трябва да да чупи кода както синтактично така и семантично което ако си наясно с по-общата идея на полиморфизма е очевидно - всеки наследник или добавя или имплементира базова функционалност по специфичен начин, но това трябва да не променя желаното поведение на програмата, тоест децата да поддържат ПОНЕ нещата поддържани от родителите а тези които ги правят по специфичен начин да са семантично коректни, не просто овъррайднатият метод да е синтактично коректен но и смислово да прави квото базата е посочила като път към светлото бъдеще

Т.е. имаме си 3 думички ено и също нещо. Лисков, open-closed principle, и полиморфизъм?



  johnfound  Създадено на 05.08.2020, видяно: 2241 пъти. #3010
Elim Garak

Прост пример: имаш клас 2ДТочка(х, у). Може да направиш 3ДТочка като наследиш 2ДТочка и добавиш още едно поле за Z. Обаче така чупиш контракта на hashcode/equals. Езика ти позволява да подадеш указател към 3ДТочка, там където се очаква указател към 2Дточка, защото имаш отношение is-a: демек 3Д точката е 2Д точка. Виждаш ли проблема ?

Ами не, не виждам проблема.

3Д точката наистина е 2Д точка. Не само от програмистка, но и от математическа гледна точка.

Тоест, това, което работи с 2Д точка, трябва коректно да работи и с 3Д точка.



  Евлампи  Създадено на 05.08.2020, видяно: 2235 пъти. #3014
Elim Garak

Много хора се бъркат, защото масово старите програмните езици не правят разлика между inheritance и subtyping. Правилото на Лисков, служи да ти напомни да ползваш subtyping, защото inheritance е дете на дявола. Поради тази причина в съвременните езици няма inheritance, има само subtyping.

Какво е subtyping: отнася се за съвместимостта на интерфейсите - Ако Б е подтип на А, то върху Б трябвада може да извикаш всяка функция, която може да извикаш на А, като не променяш контракта. На джаварски може да се каже, че събтайпинга е да имплементираш някъв интерфейс.

Какво е inheritance: отнася се за преизползването на код - примерно функциите на тип Б са имплементирани чрез функциите на тип А. Ясно е че ако наследиш някакъв клас той получава достъп до protected + public методите на родителския клас. До голяма степен (без protected) същото се постига и чрез композиция, но с добавения плюс, че не си замърсяваш типа.

Прост пример: имаш клас 2ДТочка(х, у). Може да направиш 3ДТочка като наследиш 2ДТочка и добавиш още едно поле за Z. Обаче така чупиш контракта на hashcode/equals. Езика ти позволява да подадеш указател към 3ДТочка, там където се очаква указател към 2Дточка, защото имаш отношение is-a: демек 3Д точката е 2Д точка. Виждаш ли проблема ?

Запзването на интейрфейсния инвариант не е ли очевидно от самата идея на полиморфизма независимо дали става въпрос за йерархия интерфейси или класове?

Тоест семантично да се подават вместо и сравняват три де точки с две де точки е некоректно щото три де точката 'не знае' как да се изчертае в две де вселена понеже няма достатъчно информация кое измерение 'да игнорира', тоест в случая самата направия на три де точката като наследник на две де точка е кофти дизайн стъпващ върху това че 'е то само още едно измерение, кво толко' и по-удачно би било да има изцяло отделен клас три де точка, две де точката не е is a три де точка БЕЗУСЛОВНО а само когато има наложено допълнителното ОГРАНИЧЕНИЕ да е недвусмислено откъде я гледаме



  Евлампи  Създадено на 05.08.2020, видяно: 2232 пъти. #3017
johnfound

3Д точката наистина е 2Д точка. Не само от програмистка, но и от математическа гледна точка.

От програмистка точно по смисъла на Лисковия принцип не е :)

Поставя ДОПЪЛНИТЕЛНО изискване (освен ако дизайнът не е нарочно направен да предполага че ако се подава три де точка вместо две се гепват конкретни две компоненти което пък е калпав дизайн щото е трудно да се направи така че да не е само неочевидна конвенция).

Объркването идва от това че ПОВЕЧЕТО информация носена от три де точката всъщност прави ИНТЕРФЕЙСЪТ три де точка ПО-ОГРАНИЧАВАЩ въпреки че привидно 'само' ДОБАВЯ :)



  Courvoisier  Създадено на 05.08.2020, видяно: 2323 пъти. #3018

inheritance и subtyping-a ми се губеха, но добре, че го споменахте, да се зачета по темата. И аз си мислех, че едното == другото. +1 за форума, дълго да има такива теми.



  Евлампи  Създадено на 05.08.2020, видяно: 2313 пъти. #3022
Courvoisier

inheritance и subtyping-a ми се губеха, но добре, че го споменахте, да се зачета по темата. И аз си мислех, че едното == другото. +1 за форума, дълго да има такива теми.

Наследяването на класове е типчният пример за 'пътят към ада е постлан с добри намерения' щото често се ползва просто като паразитно 'удобство' базирано на повърхностни аналогии, оопетто е пълно с такива 'удобства' :)

Ей деба, имам данни да стана чуден умнокрасив оопе хейтър, трябва да попия повече от тоя образ и ще съм зловещо ефпи зомби


0 1 2 3 4 5 6 7 8


Patterns'n'shit

  



AsmBB v3.0 (check-in: 7544654b24928b93); SQLite v3.47.0 (check-in: 03a9703e27c44437);
©2016..2024 John Found; Licensed under EUPL; Powered by Assembly language Created with Fresh IDE