matematykaszkolna.pl
aa Hugo: C++ przeładowania operatorów http://pastebin.com/kmfLR4uf Wiadro operator−(const Wiadro &p2, const Wiadro &p1) { Wiadro pp = p1.x −p2.x; pp = p1.y − p2.y; return pp; } W tej funkcji zaprzyjaźnionej chciałbym operować na obiekty.y oraz obiekty.x , jednak wywala głupoty konsoli(kompiluje). Gdy stosuje to tylko dla p1.x−p2.x to działa normalnie. Jak działać na większej liczbie argumentów jak tutaj (x,y) a nie tylko na jednej na operatorach emotka?
15 lis 18:54
asdf: przeciez ten operator nie moze miec innej ilosci argumentow jak dwa...z lewej i z prawej strony, po 2) "jednak wywala glupoty konsoli (kompiluje)" − to nie sa glupoty....bo wlasnie takie "glupoty" musisz nauczyc sie czytac i rozwiazywac 3) "jednak wywala glupoty konsoli (kompiluje)" − i co? mam sobie odpalic program, przygotowac kod i skompilowac? Odpowiadam: nie chce mi sie....to ty powinienes zadbac o to, zeby ktso chcial tobie pomoc
20 lis 21:02
jakubs: Myślałem, że ja piszę straszny kod Wywala głupoty..., co wywala ? Może dlatego, że w konstruktorze, który przyjmuje inta, nie inicjalizujesz y. http://pastebin.com/P8yi5kz1
20 lis 22:10
asdf: jakubs, bez urazy...ale prawdopodobnie tak jest chyba, ze sie uczysz bardzo szybko i po roku (?) juz piszesz idealnie
20 lis 23:56
Trivial: > przeciez ten operator nie moze miec innej ilosci argumentow jak dwa...z lewej i z > prawej strony, Kolejna osoba pokonana przez C++: http://ideone.com/Zg9pF2
21 lis 13:08
asdf: OK, wpadłem, ale widzisz w tym jakiś sens? Osobiście jakbym zauwazyl takie cos w kodzie to bym zrobil blame na pliku i od razu do takiej osoby poszedl i powiedzial, ze tworzy niepotrzebny balagan w kodzie. Chyba, ze przekonalby mnie po co to zrobil. Jak na razie nie widze w tym zadnego zastosowania.
21 lis 13:46
Trivial: asdf, tu nie chodzi o sens − napisałeś że jest niemożliwe, a jest możliwe. Czy to ma sens czy nie − c++ doesn't care.
21 lis 14:33
Trivial: A przykładowe zastosowanie to zachowanie konsystencji z typami prymitywnymi dla typów matematycznych (np. macierz).
21 lis 14:50
asdf: Tak, przyznalem sie juz − co do ostatniego Twojego wpisu: "skąd to skopiowałeś? potrafiłbyś to opisać normalnymi słowami"?
21 lis 15:33
Trivial: Znikąd nie skopiowałem. Można napisać np. f(+3) to czemu miałoby się nie dać napisać f(+m) gdzie m jest typu matrix? emotka
21 lis 16:39
asdf: sorry, ale ja nie widze w tym sensu nadal, jest to nieczytelne i wprowadza tylko w zaklopotanie. Niestety mozliwe.
21 lis 17:08
Trivial: Nieczytelne? Dlaczego niby +3 jest nieczytelne? Tak można było pisać od zawsze.
21 lis 17:10
asdf: Tak, od zawsze można pisać tak nieczytelnie: "+3". Jakbym ja miał posortować zapisy według "czytelności": 1. +3 2. 3 3. 0+3 4. 100*0 + 3 To zrobiłbym to tak: 2 − wiadomo od początku o co chodzi 3 − też jeszcze wiadomo − do niczego dodaj 3 4 − przekombinowane − staje sie juz mniej czytelne i bez sensu 1 − ukryte zero z przodu − tu bym pomyslał: "wow, ktoś chciał zabłysnąć, ale marny tego skutek Nie próbuję teraz nikogo atakować, tylko zrozumieć dlaczego w tak przeciążonym operatorze jest to według Ciebie OK
21 lis 17:53
Trivial: Jakie ukryte zero? To jest głównie używane jeśli ktoś chce sobie napisać pod sobą np.: s.move(+1); s.move(−1); i mieć równo. To kosmetyka i nie ma tu żadnych ukrytych zer. Taki przeciążony operator powinien być w przybliżeniu no−opem.
21 lis 18:02
asdf: Rozumiem po co to dodali, osobiście − w "ostatecznej ostateczności" (bo nigdy nie mów nigdy) użyłbym takiego przeciążenia i jak wcześniej napisałem − jakbym to zauważył w projekcie to pierwsze co bym poszedł do osoby, która to napisała i spróbował przekonać, żeby takiego czegoś nie używać bo dla mnie jest to "niepotrzebne dodawanie do składni czegoś co można zastąpić czytelniej" Żeby nie było, w każdym języku jest coś dziwnego, np. C# − dodali dziwny operator "?." którego nigdy bym nie użył...Mimo tego i tak uważam, że to najlepszy język Piszę w nim już od 3 lat i nie zamieniłbym go na żaden inny emotka https://msdn.microsoft.com/en-us/magazine/dn802602.aspx
21 lis 18:12
asdf: po prostu − nigdy nie da sie każdemu dogodzić...mnie się takie przeciążanie nie podoba, a komuś innemu może być to obojętne / podobać się.
21 lis 18:13
Trivial: Nie ma czegoś takiego jak najlepszy język. C# nie nadaje się do wszystkiego. Na przykład systemu real−time w nim raczej nie napiszesz − tam nie można sobie pozwolić na garbage collector. Tam gdzie chcesz uzyskać najlepszą wydajność również bardzo ciężko pobić program dobrze napisany w C++. Jeśli chodzi o same możliwości to C++'owy system typów jest potężniejszy niż ten C#'owy i to wszystko przy zerowym koszcie. Po kompilacji wszystko znika. emotka Oczywiście typowe apki biznesowe to nie jest zbyt dobry fit dla C++.
21 lis 18:36
asdf: jest coś takiego jak własna opinina (co zaznaczyłem) i nadal twierdzę, że jest to najlepszy język (sic! według mnie). Może mieć lepszy system typów, być szybszy, ale czy każdemu na tym zależy? Nie. Może komuś (tak jak mi) bardziej zależy na swobodzie pisania i tym, że nie musze się martwić pamięcią. Zaznaczyłeś "pobić program DOBRZE napisany w C++". Właśnie...słowo "dobrze" − w drugą strone to tez moze zadziałać − gorzej jak ktos nieodpowiedzialnie pisze i GC spisze sie w tym przypadku lepiej. Wolisz C++, niż C# − OK. Ale wszystko i tak się sprowadza do tego, jakie kto ma potrzeby. To tak jakbyś chciał kupić sobie samochód. Ktoś Ci powie − wybierz ferrari bo ma dużo koni mechanicznych, a Tobie bardziej bedzie pasowac jakis tam passat z fajnym wnętrzem − nacisk kładziesz na komfort jazdy i gdzieś możesz mieć prędkość, bo prawdopodobnie spotkacie się na następnym korku (nawiązuję tutaj do możliwości kompa − wielu rzeczy nie przeskoczy C++) Wszystko zależy od targetu dla jakiego piszesz i na czym Ci zależy w kodzeniu
21 lis 18:51
Trivial: Nigdzie nie napisałem co wolę. Napisałem mniej więcej "use the right tool for the right job". Z tym dobrze napisanym programem nie chodziło mi o to, że GC jest wolne (bo nie jest), tylko o to że kod będzie po prostu szybszy. Ciężko taki kod napisać, ale chodzi o to że C++ sprawia że jest to możliwe, podczas gdy większość języków nie pozostawia wyboru.
21 lis 19:01
kyrtap: a Huga jak nie ma tak nie ma
21 lis 19:03
Dziadek Mróz: Huga nie ma bo problem rozwiązaliśmy na samym początku ale zapomnieliśmy o tym powiadomić społeczność
21 lis 19:05
kyrtap:
21 lis 19:18
jakubs: asdf wiem, że mój kod jest słaby, ale myślałem że gorzej pisać się nie da, ale Hugo mnie trochę podbudował
21 lis 20:49
asdf: Trivial, tutaj nie napisałeś, że wolisz C++ od C#, jednak z poprzednich rozmów pamietam jak nie raz narzekales na C# i jego dziwną składnie (spoko − nie każdy musi to lubić), jeśli zmieniłeś zdanie to sorry. Po tym co napisales, mogles wywnioskowac, ze sadzę: "C++ jest szybszy bo tam nie ma GC". Wytłumaczę się: Nie uważam, ze C++ jest szybszy od C# bo nie ma "wbudowanego" GC. W C# prócz GC można używać "systemowych" klas (np. Marshall), chciałem jedynie nawiązać do tego, że: nie każdemu zależy na tym, co innej osobie − dla mnie może coś działać "ciut" wolniej, a zrobię to X razy szybciej, stracąc X razy mniej czasu na debugowanie, pisanie testów jednostkowych + przy rozwijaniu dużych projektów ważne są narzędzia z jakich się korzysta − C# ma do tego Visual Studio i jak zna się go w miare dobrze to uwierz mi − nie chce się przesiadać na nic innego (UMLe, frameworki ORM, testy jednostkowe + mockowanie, debugowanie, intellisense (jakiego nie ma C++) + kilka ciekawych rozszerzeń, np. VIM to WEDŁUG MNIE najlepsze narzędzie z jakim programista może się teraz spotkać)
22 lis 01:31