co na automatyke?

A ja mam na mysli nie rozwiazywanie dowolnie trudnych problemow za pomoca niewielkiego podzbioru mozliwosci C++, ale mozliwie pelne wykorzystanie dostepnych mechanizmow. A ich sie _trzeba_ dlugo uczyc, na samo metaprogramowanie mozna poswiecic z pol roku. Aby podac przyklad tego, co mam na mysli: mamy program obiektowy; w jaki sposob napisac jego czesc tak, by _w czasie kompilacji_ mozna bylo sprawdzac, czy klasa A dziedziczy po klasie B, jesli nie, to zwracac blad kompilacji. Albo lepsze: jak napisac program wykorzystujacy liczby calkowite o gwarantowanym rozmiarze? Tj. w zwyklym C++ mamy short, int, long itd., ale nie wiemy nic o ich rozmiarach, bo standard nic o tym nie mowi. Moze to prowadzic do roznego sposobu wykonania sie tego samego programu na innych maszynach. Chcielibysmy tego uniknac podajac zakresy liczb na jakich operujemy, np. -100...65560, a kompilator ma w czasie kompilacji sam dobrac _optymalnie_ typ danych do pamietania naszej liczby; oczywiscie nie mozna uzywac makr. Oba zadania sa bez problemu wykonalne w C++, ale praktycznie gwarantuje Ci, ze osoba ktora twierdzi, ze C++ zna dobrze nawet nie bedzie wiedziala jak te zadania ruszyc. To mniejszy problem; wiekszy polega na tym, ze _poprawne_ konstrukcje o tym stopniu zlozonosci czesto nie sa rozpoznawane przez wiele kompilatorow... A to jest bardzo irytujaca sytuacja gdy sie zna _standardowy_ (nie wspominajac o rozszerzeniach) jezyk lepiej od swojego kompilatora, uwierz mi... :-/

Sortowanie babelkowe to wydumana rzecz? Pierwszaki potrafia. :-)

O, dzieki za przypomnienie, dokonczylem zapowiadane kiedys wyprowadzenie FFT, ale nie mam go tutaj -- wysle je na grupe w weekend. :-)

To sie oczywiscie da zrobic po dwoch semestrach intensywnego treningu -- taki czlowiek bedzie sobie potrafil poradzic z olbrzymia liczba problemow, ale to wciaz nie bedzie poziom, ktory bym nazwal "dobrym programista w C++".

Macku, przeciez ja Ci absolutnie niczego nie zarzucam; po prostu rozbawilo mnie stwierdzenie "naucz sie C++" ;-)

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski
Loading thread data ...

Tue, 4 Nov 2003 18:48:55 +0100 jednostka biologiczna o nazwie "Piotr Wyderski" snipped-for-privacy@ll.replies.to.the.group> wyslala do portu

119 jednego z serwerow news nastepujace dane:

Odpusc sobie, takie rzeczy spoczywja na programiscie :-) Szkoda czasu zeby sie nawet zastanawiac jak to zrobic :-)

Ja nie twierdze ze znam dobrze :-)

Mozliwe, nie intreresowalem sie nigdy tym algorytmem. Niewykluczone ze jest prosty.

Oczywiscie ze nie.

Ojej nie chodzilo mi o jakies zlozone rzeczy. Moze faktycznie moa wowiedz byla nieco chybiona, ale nie mialem na mysli jakiegos bardzo zaawansowanego poziomu. Mowie o przecietnych rzeczach - jakies narzedzie proste klepnac - o na przyklad w najblizszych dniach bede klepal oprogramowanie na PC do programatora EPROMow ktory ostatnio zrobilem. Mam na mysli wlasnie zagadnienia na tym poziomie.

Reply to
BLE_Maciek

Piotr Piwko:

sądząc po wywodach, pod żaden. Znaczy się pisze programy, które mają chodzić >tak samo< na wszelakich maszynach. To wyższa szkoła jazdy. Jako student dorabiałem w firmie produkującej biblioteki graficzne. Programy napisane z użyciem tych bibliotek musiały chodzić na Unixie PCtowym w różnych dialektach, DOS (tak tak, to był rok 1986), FlexOS, SUNach, DECach i innych maszynach. Gimnastyki było co nie miara. Choćby błędy zaokrąglenia, o takich "trywiałach" jak różne zakresy int-ów nie wspomnę.

Waldek

Reply to
Waldemar Krzok

Pod wszystkie, szczerze mowiac. Jesli pominac oczywiste roznice na poziomie ekstrakodow i bibliotek dostarczanych przez kazdy system operacyjny, to programowanie pod jakis konkretny system nie rozni sie od pisania pod cokolwiek innego. To jest C++, a nie osobne C++ dla Windows, Linuksa itd.

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

Ale nad tym sie zastanawia raz i nastepnie uzywa do konca zycia. :-)

To jest dosc dobry test znajomosci tego jezyka. Z takich bardziej hardcorowych: napisac program w C++, ktory wyswietli liste pierwszych N liczb pierwszych, uporzadkowana rosnaca, ale nie jako wynik swojego dzialania (bo program ma byc niepopawny), tylko w _komuniakatach bledow_ kompilatora. Tez sie da. :-))) Przyznam, ze to dosc chore, ale wlasnie z takich powodow rozni guru od C++ mowia, ze C++ nie jest jeszcze opanowany, lecz programisci sa dopiero na etapie odkrywania co mozna zapisac za pomoca istniejacych mechanizmow jezykowych. Chyba nawet nie przypuszczasz jak potezne mozliwosci sa ukryte w tak "zwyczajnych" konstrukcjach jak np. sizeof czy enum. Przyklad z mojej biblioteczki (pierwszy wpadl na to chyba Alexandrescu)

-- wzorzec rozpoznajacy czy klase D da sie skonwertowac na typ B i _w czasie kompilacji_ dajacy odpowiedz w postaci stalej boolowskiej 0 albo 1:

template <class D, class B> struct conversion {

protected:

static char check(const B *); // not implemented static struct { char _dummy[2]; } check(...); // not implemented

public:

enum { is = (sizeof(check(static_cast<D *>(NULL))) == sizeof(char)) }; };

Test:

#include <iostream>

class A {}; class B {}; class C : public A {} ;

int main(int argc, char *argv[]) {

std::cout << conversion<B,A>::is << ',' << conversion<C,A>::is << std::endl; return 0; }

IIRC tu widac niedostatki kompilatora, tzn. wedlug standardu jezyka kod jest calkowicie poprawny, ale GCC 3.2 nie bedzie potrafil sobie z nim poradzic -- dlatego zmienilem go na 3.3, ktory juz nie ma tego problemu.

Zgadza sie, tylko po raz kolejny podkreslam ze mnie nie chodzi o stopien skomplikowania _problemu_ (czyli czy to jest program wypisujacy 1+1, czy tez sterujacy promem kosmicznym), tylko o stopien wykorzystania zapewnianych przez standard _mechanizmow jezykowych_. Zwykle ludzie twierdzacy, ze znaja C++ tak naprawde znaja techniki bedace zaledwie wierzcholkiem gory lodowej.

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

Wed, 5 Nov 2003 16:30:16 +0100 jednostka biologiczna o nazwie "Piotr Wyderski" snipped-for-privacy@ll.replies.to.the.group> wyslala do portu

119 jednego z serwerow news nastepujace dane:

Hehe. Ty sie zdecydowanie nudzisz jak Ci takie rzeczy przychodza do glowy ;-)))

Kurcze no faktycznie mozna rozne cuda robic, fascynujace jak elastyczny jest ten jezyk. Jednak ja naleze do tych ktorzy nie maja czasu ani tez specjalnych checi zeby sie az tak zaglebiac.

[...]

Jej nawet mi sie nie chce analizowac :-)

Reply to
BLE_Maciek

no właśnie. U nas ważne było podejście pragmatyczne, znaczy programy MUSIAŁY pracować bez zmiany jednej linijki kodu na różnych platformach tak samo. W każdym razie includes były bardzo rozbudowane i kompilowanie warunkowe w zależności od systemu operacyjnego. Elementy programów zależne od hardware (np. sterowniki monitora) były zakapslowane (jak to po polsku encapsulating, nie wiem) w swoich sterownikach. Wzorców w standartowym C nie ma, więc przynajmniej z tym problemów nie miałem ;-)

Aha, co do automatyki, to fajnie się też programuje systemy czaasu rzeczywistego pod Windowsem. Tutaj to nawet łysy włosy sobie będzie rwał.

Waldek

Reply to
Waldemar Krzok

Thu, 06 Nov 2003 20:14:01 +0100 jednostka biologiczna o nazwie Waldemar Krzok snipped-for-privacy@zedat.fu-berlin.de> wyslala do portu 119 jednego z serwerow news nastepujace dane:

Ladniej chyba brzmi "zenkapsulowane"

Reply to
BLE_Maciek

Cholera... polonisci :-) Nie prosciej napisac 'zawarte' ?

Reply to
jerry1111

Fri, 07 Nov 2003 11:13:15 +0100 jednostka biologiczna o nazwie jerry1111 <stop_this_spam_jerry1111 snipped-for-privacy@remove.wp.pl> wyslala do portu 119 jednego z serwerow news nastepujace dane:

Tysz sympatycznie ...

Reply to
BLE_Maciek

Ale nie oddaje znaczenia. Zakapsulkowane ?

J.

Reply to
J.F.

Wlasnie tak sie zwykle mowi. Gdy sie w ogole mowi, bo zazwyczaj paradygmat programowania obiektowego jest dyskutujacym znany na tyle dobrze, ze sie w ogole tej cechy nie nazywa. :-)

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.