печально быть антисоциальным - overloading -> aizstāšana, aizsegšana un operatoru definēšana

Mar. 6th, 2007

09:24 pm - overloading -> aizstāšana, aizsegšana un operatoru definēšana

Previous Entry Add to Memories Tell A Friend Next Entry

hesse te pacēla jautājumu par programmēšanas termina 'overload' tulkošanu latviešu valodā.

Par polimorfismu lasīt šeit: http://en.wikipedia.org/wiki/Type_polymorphism
Par operatoriem šeit: http://en.wikipedia.org/wiki/Operator_overloading

Metožu overloadings, manuprāt, ir polimimorfisma paveids, tapēc sīkāk neizskatīšu.

Kā to saukt latviešu valodā?

Manuprāt polimorfisma gadījumā tā ir vienkārši 'aizstāšana' vai 'aizsegšana'. Savukārt operātoru gadījumā semantika ir pievilkta aiz matiem. Arī angļu valodā neredzu jēgu lietot vārdu 'overload'. Tā ir vienkārši operatoru 'definēšana'.

Ja kāds grib pastrīdēties, piedāvāju tēzes par to, ka matemātikas un datorzinātnes pasaulē operatoru semantiskā jēga ir plūstošs jēdziens un nekādas iepriekšpieņemtas nozīmes tur nav. Karoče, matemātiķu rakstītajam uzticēties nevar, kamēr nav sīki noskaidrots, ko kurš simbols nozīmē. ;)

Nu un par polimorfismu - overloadings, overridings vai kas tur vēl ir viens un tas pats. Jāmācās vārdu nozīmes katrā programmēšanas valodā atsevišķi.

Manis apgaismošana laipni gaidīta! [[info]bubu! :)]

(12 comments | Leave a comment)

Comments:

[User Picture]
From:[info]misame
Date:March 6th, 2007 - 09:36 pm
(Link)
taisnība jau Tev ir. Kamēr nebiju ieraudzījis watt viedokli, bija pilnīgi piemirsies par C++/C#/jaunā vb.net iespēju pārlādēt operatorus... tātad jāmācās katrā valodā pa savam.
vēl jautājums, ar ko tad operators ir sliktāks par divargumentu metodi? ;-)
(Reply to this) (Thread)
[User Picture]
From:[info]smejmoon
Date:March 6th, 2007 - 09:42 pm
(Link)
nu ir jau binārie un ternārie un pat unārie operātori:

a += b; a = b + c; !a; +a; -a;
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]misame
Date:March 6th, 2007 - 09:47 pm
(Link)
par pirmo man ir aizdomas, ka tas ir sinonīms a=a+b, ko arī kompilators aši pārveido.
Otrais ir tas, ko es biju domājis... pārējie gan tiešām ir unāri operatori. Jautājums, vai C++ ļauj pārlādēt unāro "+"?
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]smejmoon
Date:March 6th, 2007 - 09:47 pm
(Link)
nezinu vai ļauj pārlādēt, bet operators tas ir ;)
(Reply to this) (Parent)
[User Picture]
From:[info]kemune
Date:March 6th, 2007 - 10:32 pm
(Link)
ļauj. es tikai neesmu pārliecināts par a ? b : c pārlādēšanu, bet, piemēram, komats C++ arī ir binārs operators, kurš vienmēr atgriež labo vērtību, ja nemaldos
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]kemune
Date:March 6th, 2007 - 10:35 pm
(Link)
viens pazīstams maniaks ļoti aizrāvās ar operatoru pārlādēšanu, it sevišķi viņam patika pārlādēt () operatoru. principā mierīgi savu valodu vari radīt, līdzīgi kā ar makrosiem C (tipa obfuscated C contest)
(Reply to this) (Parent)
[User Picture]
From:[info]smejmoon
Date:March 6th, 2007 - 09:47 pm
(Link)
ā, un a = b + c iekš c++ sastāv no diviem operatoriem:

StarprezultaataTips operators + (Btips b, Ctips c);
Atips operators = (StarprezultaataTips s);

excuse moi French.
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]kemune
Date:March 6th, 2007 - 10:34 pm
(Link)
pie tam var definēt divos veidos:

1) C stilā kā funkciju:
StarprezultaataTips operators + (Btips b, Ctips c);

2) C++ stilā kā klases memberi:
StarprezultaataTips Btips::operators + (Ctips c);
(Reply to this) (Parent)
From:[info]hessin
Date:March 7th, 2007 - 01:36 am
(Link)
// overload/pārslogošana man liekas pieņemama tāpēc, ka uztveru to kā piemēram, "+" semantikas pārlikšanu, pārkrāmēšanu, pārlādēšanu citā kastītē, cita kontekstā
(Reply to this) (Thread)
[User Picture]
From:[info]smejmoon
Date:March 7th, 2007 - 10:38 am
(Link)
Hmm.. kāda "+" ir semantika? Kādā kontekstā? mēs taču nerunājam par aritmētiku?
(Reply to this) (Parent) (Thread)
From:[info]hessin
Date:March 9th, 2007 - 01:18 am
(Link)
Neesmu tik daudz programmējusi,
bet overload piemērs ar klasisko + zīmi pēc manas interpretācijas
1. konteksts ir aritmētiski skaitļi , operācija +(a,b) atgriež a un b summu (semantika);
2. konteksts ir simbolu virknes - pirmais simbolam galā pielikts klāt otrs
3. kaut kādas pašdefinēta klases - pārdefinējot + tiek piešķirta kaut kāda cita semantika, lai vai kāda 2 klasēm tā varētu būt ..
(Reply to this) (Parent)
From:(Anonymous)
Date:March 12th, 2007 - 07:25 pm
(Link)
Manuprāt metožu overloadingam nav īpaši liela sakara ar tipu polimorfismu.

Par polimorfismu iekš wikipēdijas rakstīts: "polymorphism means allowing a single definition to be used with different types of data". Overloadings savukārt ir vienkārši veids, kā zem viena nosaukuma paslēpt vairākas pavisam atšķirīgas funkcijas. Un operatori vien tās pašas funkcijas ir, tikai ar predefinētu nosaukumu un argumentu skaitu, kā arī jocīgu izsaukuma sintaksi.

Piekrītu, ka overloadings ir tas pats kas overridings. Ja necenšās īpaši nošķirt instances parametru no pārējiem funkcijas parametriem, tas pat sanāk diezgan acīmredzami.

Mwc
(Reply to this)