Dyskusja:Przeciążanie operatorów
Przeciążanie czy przeładowanie?
edytujBardzo nie podoba mi się określenie przeciążenie operatorów - jest sztucznym, dosłownym tłumaczeniem angielskiego terminu. Skoro nawet w treści jest to dość delikatnie napisane, czemu nie postawić na przeładowanie operatorów? Wydaje mi się, że powinniśmy promować prawidłowe postawy i starać się wykorzenić złe zwyczaje. Oczywiście, przeciążanie powinno pojawić się jako alias hasła. (Derbeth 21:48, 21 lis 2004)
- Ostatnia edycja anonimowego użytkownika kategorycznie opowiada się za "przeciążeniem", uznając "przeładowanie" za kompletnie błędne, bez popierania tego stanowiska jakimikolwiek argumentami. Myślę, że tak poważne ingerencje w treść hasła (sformułowania typu "całkowicie błędne" etc.) powinny być wcześniej przedyskutowane na stronie dyskusji. Ja poszukam w sieci czegoś na ten temat, a widziałem publikacje poważnych uniwersytetów zadące kłam twierdzeniom nieznajomego Wikipedysty, może tymczasem ktoś wypowie się w tej kwestii? --Derbeth 09:41, 4 kwi 2005 (CEST)
- Jerzy Grębosz w książce "Symfonia C++" popiera "przeładowanie" (w sensie "przeładowanie znaczeniami") - i mnie się trudno z nim nie zgodzić. Jest to jedna z popularniejszych pozycji dotyczących programowania, więc także autorytet większy niż mój :) "Przeciążanie" jest tłumaczeniem wcześniejszym, niestety brzydkim i niestety bardzo popularnym. --klugg 17:49, 10 maja 2007 (CEST)
Tak ale np. mnie na uczelni uczono o przeciążaniu a to że tłumaczenie jest dosłowne? cóż w przypadku informatyki przeważnie wychodzi to na dobre tak jak nie jeździmy stołokulotocznym wpływaczem na położenie wskaźnika na ekranie tak i przeciążajmy ... (niepodpisany wpis przez Wikipedysta:83.31.157.182
Obie nazwy są dobre, z tym, że mam odwrotne wrażenie, że to właśnie przeładowanie jest tłumaczeniem bardziej dosłownym. Jak coś jest przeciążone to jest przeładowane, w drugą stronę zazwyczaj też, jak coś jest przeładowane to zazwyczaj z powodu przeciążenia. Oczywiście przeciążenie może się mylić z np. 3G ale przeładowanie też może być mylone z reloadem. Jeszcze nie widziałem sensownych argumentów dowodzących wyższości jednego z tłumaczeń.
royas (dyskusja) 23:56, 10 gru 2008 (CET)
Tłumacząc terminy z języka obcego powinno się zachowywać ich znaczenia, a nie ich dosłowne odwzorowania. Słowo overload w angielskim oznacza przeciążyć w rozumieniu "wziąć za wiele na barki", "przyjąć za dużo towaru na pokład", "obciążyć sieć elektryczną w stopniu przekraczającym jej zdolność zasilania". W związku z tym moim zdaniem termin jest tłumaczony poprawnie jako przeciążyć, a najprawdopodobniej błąd popełnili tłumacze dokonujący przekładu na inne języki, którzy nie zadali sobie trudu, aby sprawdzić "co autor miał na myśli" i zaproponowali własne znaczenia, inne niż oryginalne. To samo próbuje zrobić wspomniany autor książki "Symfonia C++", który uzasadnienie kończy słowami:
- Te fakty potwierdzają słuszność tłumaczenia 'przeładować'.
Moim zdaniem to, że kilku tłumaczy miało własne pomysły i zmieniło znaczenie oryginalnego słowa, to nie jest wystarczający argument, nawet jeśli faktycznie się pomylili lub byli przywiązani do własnej twórczości i zrobili to z rozmysłem.
Oksfordzki słownik języka angielskiego zawiera opis znaczenia słowa overload[1] i bardziej przekonuje mnie taki fakt, niż rozbieżne definicje wyrazu pochodzące od paru osób.
Proponowane słowo przeładować jest moim zdaniem gorsze, ponieważ jest wieloznaczne: może wskazywać na zbytnie obciążenie ("przeładowany autobus"), albo na ponowne załadowanie ("przeładować program"), albo na przeniesienie czegoś z miejsca na miejsce ("przeładowali meble do innego samochodu"). Dodatkowo w j. angielskim jego odpowiednikiem będzie reload, które ponownie przetłumaczone na polski ma dwa ostatnie znaczenia (ponowny załadunek lub rozładunek i załadunek).
Gdybyśmy chcieli zaproponować trafniejsze określenie, które zawiera morfem ład (tak jak w angielskim load), to byłoby nim obładować ("obładowywanie operatorów"). Zachowalibyśmy wtedy oryginalne znaczenie, a dodatkowo mielibyśmy ładną kalkę. Tylko, że byłoby to nieco zabawne, podobnie jak synonim: "objuczanie operatorów". :-)
Rozumiem, że termin może "bardzo się nie podobać", lecz nie jest to argumentem. Potrafię też zrozumieć dlaczego niektórym przeciążanie kojarzy się bardziej z zastępowaniem używanego wariantu innym, czyli z efektem przeciążania (gdy już pewna konstrukcja została wybrana jako ta, która będzie użyta zamiast innej, np. konkretna funkcja czy konkretna implementacja operatora). Wiem też, że czasem przeciążanie bywa mylone z nadpisywaniem (ang. overriding) i nawet, jeżeli jesteśmy tego świadomi, możemy siłą skojarzenia wyobrażać sobie przeciążanie jako coś, co polega na zamianie czy przesłonięciu.
Znaczenie słowa przeciążać wskazuje na to, że w programie powstaje coraz więcej wariantów tego samego operatora (funkcji). Podobnie w przeciążaniu argumentowości funkcji czy w przeciążaniu funkcji mamy do czynienia z wieloma funkcjami lub wieloma ciałami jednej funkcji o różnych zestawach przyjmowanych argumentów. Te funkcje nie są zastępowane przez inne, nie są nadpisywane, ale właśnie robią się "coraz cięższe", w miarę jak dodawane są nowe warianty ich implementacji lub nowe ciała pojedynczej funkcji.
Paweł Wilk (dyskusja) 21:29, 27 wrz 2015 (CEST)
Pascal?
edytujCo z tym Pascalem? Jest w obu listach (z możliwością przeciążenia i bez). Wydaje mi się, że ma taką możliwość, bo czasami dostaję taki komunikat: "Operator is not overloaded". Czy może to ktoś sprawdzić? roffik PD 20:43, 9 maja 2007 (CEST)
Z artykułu
edytujOgólne zasady przeciążania operatorów: 1. można przeciążać wszystkie operatory, za wyjątkiem . .* :: ? : 2. nie można zmieniać składni operatorów, w szczególności: prioritetów i wiązań, zamieniać operator unarny na binarny, i odwrotnie, np. definiować binarny operator ! 3. nie można wprowadzać nowych symboli operatorów, np. operatora ** dla potęgowania (bo brak w C++ składni dla takich operatorów).
Przeniosłem ten fragment tutaj, gdzyż nie dotyczy on przeciążania ogólnie tylko konkretnego języka, a tak jak jest wprowadza w błąd. royas (dyskusja) 17:47, 10 gru 2008 (CET)
Java i operator + dla Stringów a PHP.
edytujW przypisie do języka Java mamy: "Przeciążony jest jedynie operator + dla klasy String." O co dokładnie chodzi? Jeżeli o to co myślę, to chyba w przypadku PHP też można dodać podobny przypis, operatory zmieniają tam zachowanie przy tablicach: http://www.php.net/manual/en/language.operators.array.php --Wertaz (dyskusja) 20:27, 21 gru 2011 (CET)
Nie integrować
edytujPrzeciążanie funkcji to coś innego niż przeciążanie operatorów--194.117.241.226 (dyskusja) 11:56, 22 gru 2012 (CET)
Czym się różni? Przecież operator jest funkcją. Paweł Wilk (dyskusja) 18:53, 28 gru 2015 (CET)