Problém Tvého argumentu je, že ty způsoby nejsou dva, ale minimálně tři.
Asi jsem to měl napsat jasněji – těch způsobů je celá škála, C++ a Java jsou dva příklady, které jsou na opačných místech od středu, ale jsou těsně před extrémem. Jsou samozřejmě mnohé další jazyky, které používají něco mezi, a pak další méně používané jazyky, které používají nějakou extrémní variantu.
Lisp, Haskell a další jazyky už desítky let ukazují, že "operátor" není nic jiného, než (typicky infixová) funkce (jejíž název není alfanumerický/slovní, nýbrž složený ze symbolů) se dvěma argumenty (no, ještě jsou unární a ternární, ale to už je detail).
Ano, to je také možnost. Java se tomuhle záměrně vyhnula a udělala operátory jednoduché.
Že je vhodné nechat "operátoru" + význam sčítání, na tom se všichni asi shodnou.
Ano, na tom se všichni shodnou. Ale už asi počtvrté opakuju, že se všichni neshodnou na tom, co je sčítání.
V tomto kontextu je zajímavé, že operuješ zrovna C++ a ne alespoň C#, což je jazyk bližší Javě a "přetěžování operátorů" má taky.
Java přetěžování operátorů nemá, je to záměr, protože přetěžování operátorů komplikuje jazyk a činí kód méně předvídatelný. Vysvětloval jsem to v komentáři, na který reagujete, že programovací jazyk se pohybuje někde na škále od „pár jednoduchých nástrojů, ze kterých si sám poskládáte, co potřebujete“ po „spousta komplexních nástrojů“. Java je na té škále poměrně daleko u prvního bodu. Že vám vyhovuje to druhé je vaše věc, ale neznamená to, že je to jediné správné.
Tohle je straw man fallacy. Nikde jsem netvrdil, že nějaký jazyk navrhovali hlupáci. Ale třeba na C++ i Pythonu je vidět, že některá rozhodnutí tvůrci časem přehodnotili, Python se ve verzi 3 vydal dokonce cestou rozbití kompatibility (unicode vs string, zahození "klasických tříd", je toho hodně). Jak jsem psal v předchozím příspěvku - trvat na správnosti nějakého rozhodnutí poté, co se ukáže, že to byla chyba, je prostě kontraproduktivní. Mezitím na javovské platformě vznikly minimálně 4 další jazyky, které se snaží být lepší Javou a to přesto, že se (neochotně a pomalu) Java také vyvíjela.
Jenže to rozhodnutí se neukázalo jako špatné. To, že vám něco nevyhovuje, neznamená, že to bylo správně. Zvolené řešení (s operátorem
==) je při zachování ostatních vlastností jazyka jedno z nejlepších možných, neexistuje žádné lepší. Chybné rozhodnutí v Javě jsou primitivní typy, což je zřejmé dnes, ale v době vzniku Javy to bylo logické rozhodnutí, a kdyby to tak nebylo, dnes by nebyla žádná Java a nemohli bychom řešit, že dnes jsou primitivní typy špatně. Jedna z vlastností Javy je to, že se velmi úzkostlivě drží zpětná kompatibilita. Opět, je to záměr, je to jeden z podstatných důvodů, proč se Java používá tam kde se používá. Pokud nechcete držet zpětnou kompatibilitu a chcete rychlý vývoj jazyka, nepoužívejte Javu.
Python 3 je zrovna příklad toho, jak problematické je to rozbití zpětné kompatibility – teprve teď se reálně daří zbavovat Pythonu 2. Perl na tohle rozbití zpětné kompatibility dokonce prakticky umřel, resp. odešel do zapomnění – dříve byla dvojice Perl a Python, která spolu soupeřila, Python spíš Perl doháněl. Dneska o Perlu neslyšíte.
Navíc by mě zajímalo, v čem podle Tebe dělá Python == jako Java. Dělá to stejně jenom u "hloupých" objektů, chytrý objekt si umí říct, jestli jeho vnitřek odpovídá druhému objektu.
Tak si znovu přečtěte, co jsem napsal. Python ve výchozím stavu porovnává identitu objektů, ale je možné operátor přetížit.
Spíš mi vadí ale ta zabedněnost, s jakou se u ní na některých zjevných chybách lpí.
Problém je v tom, že to, co vy považujete za zjevné chyby, jsou ve skutečnosti přednosti. Na přednostech se opravdu lpí.
Někteří to tak mají, něco se horkotěžko naučí a pak na tom lpí.
V této diskusi ovšem máme jiný problém – někomu něco vyhovuje, a myslí si, že to tedy musí být jediné správně řešení a vše ostatní je špatně. Všimněte si na rozdíl v našich argumentech. Vy argumentujete „je to špatně, protože já mám radši něco jiného“. Já argumentuju „tenhle přístup má tyhle výhody a tyhle nevýhody, výhodné je to pro tyhle případy; opačný přístup má tyhle výhody a tyhle nevýhody, výhodné je to pro tyhle případy“. Podle mne ten, kdo zabedněně lpí jenom na svém přístupu a považuje ho za jediný správný, jste tu vy.