Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Kij w mrowisko

Awatar użytkownika
bis
-
-
Posty:134
Rejestracja:12 maja 2005, o 08:11
Lokalizacja:Warszawa
Kij w mrowisko

Postautor: bis » 18 lis 2005, o 15:49

Na wstępie chcę podkreślić że nie jestem jakimś szczególnym purystą w sprawach kodowania w języku C. I doskonale wiem że forma zapisu programu w głównej mierze zależy od programiasty, Ale są pewne zasady kodowania wynikające z doświadczeń kolejnych pokoleń programistów. W EP 11/2005 jest kolejna część artykułu opisującego kompilator C na AVR. Znalazłem tam nowatorskie podejście do stosowania plików nagłówkowych. Otóż autor proponuje tam, stosując odpowiednie chwyty z preprocesorem, aby nie tylko deklarować zmienne globalne a także je definiować. Jestem wstrząśnięty. Wszystko we mnie krzyczy "NIE, TAK NIE WOLNO". Definicje obiektów programu (np. zmiennych czy funkcji) powinny być w modułach żródłowych (zwyczajowo ".c") a pliki nagłówkowe (".h") zawierają jedynie deklaracje i są jedynie pomocą dla kompilatora dla prawidłowego generowania odwołań do obiektów, moga być nawet wielokrotnie zagnieżdzane, w dużych projektach bywa że ten sam plik nagłówkwy jest kilkakrotnie przerabiany przez kompilator. Jeżeli te artykuły mają być pomocą dla początkujących i niedoświadczonych to nie powinny zawierać "rewolucyjnych" (i zdecydowanie złych) idei a raczej skupiać się na standardowych sposobach kodowania. Piszę to bo jestem ciekawy czy to ja już jestem tak skostniały? czy inni mają podobne zdanie?
A tak na boku to czy nie lepiej proponować aby NIE stosować bezpośrednich odwołań do zmiennych globalnych a raczej zapis funkcyjny typu GetZmienna() i SetZmienna( Wartość );

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 18 lis 2005, o 16:33

Na wstępie zaznaczam, że nie czytałem ww. artykułu i się do niego nie odnoszę.

IMHO zgadzam się z bis-em w kwestii deklarowania i definiowania zmiennych globalnych. A uzycie seterów i geterów, choć może nieco na wyrost, też jest IMHO uzasadnione. Trochę "quasi-enkapsulacji" dobrze zrobi :D.

Jurek Szczesiul
-
-
Posty:175
Rejestracja:10 paź 2003, o 20:44
Lokalizacja:Białystok
Kontaktowanie:

Re: Kij w mrowisko

Postautor: Jurek Szczesiul » 18 lis 2005, o 18:39

Jeżeli te artykuły mają być pomocą dla początkujących i niedoświadczonych to nie powinny zawierać "rewolucyjnych" (i zdecydowanie złych) idei a raczej skupiać się na standardowych sposobach kodowania.
O, dobrze że są poprawki gdy coś popisałem niezgodnie z kanonami.
Taką kombinację podpatrzyłem na forum avrfreaks jako jedną
z odpowiedzi na pytanie jak uniknąć błędu wielokrotnej definicji
przy jednym wspólnym pliku nagłówkowym ze zmiennymi globalnymi.
Wypróbowałem jak to działa patrząc przy okazji co zrobi avrgcc
w rozmaitych możliwych przypadkach - i tak to zostało. BTW cały ten
mały kurs poświęcam raczej różnym nietypowym aspektom i szczegółom avr-gcc
sprawiającym kłopoty na starcie, niż samemu C, w którym nie jestem
( jak widać ) specjalnie zaawansowany ani doświadczony :-(

A więc THX za krytykę i postaram się w dalszych prostych przykładach
bardziej zwracać uwagę na ogólne kanony C ( o ile znów nie
wlazę na jakąś minę wynikającą z luk w amatorskiej wiedzy ).

Pozdrowienia Jurek S.

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 18 lis 2005, o 20:12

I to się nazywa profesjonalizm Autora.
Każdy może się pomylić, ale prawdziwą sztuką jest zauważyć to po czyjejś sugestii i poprawić/sprostować.

Błądzić - rzecz ludzka, trwać w błędzie - głupota.

MDz
-
-
Posty:365
Rejestracja:29 mar 2003, o 13:35
Lokalizacja:Warszawa
Kontaktowanie:

Postautor: MDz » 18 lis 2005, o 23:19

W EP 11/2005 jest kolejna część artykułu opisującego kompilator C na AVR. Znalazłem tam nowatorskie podejście do stosowania plików nagłówkowych. Otóż autor proponuje tam, stosując odpowiednie chwyty z preprocesorem, aby nie tylko deklarować zmienne globalne a także je definiować. Jestem wstrząśnięty
Podejście wcale nie jest nowatorskie a znane od dawna. Ja np. spotkałem je po raz pierwszy w popularnym "C51primerze":
http://www.hitex.co.uk/c51primer/c51primer.pdf -> Rozdz. 4.3.2
czyli dokumencie liczącym sobie blisko 10lat.

Być może łączenie (warunkowe!) deklaracji i definicji w pliku nagłowkowym nie jest wystarczająco ortodoksyjne, ale IMHO sensowne i w praktyce całkiem wygodne. Dzięki temu np. zmiana typu zmiennej odbywa się w dwóch miejscach położonych po sąsiedzku w jednym pliku nagłówkowym a nie wymaga grzebania za każdym razem w dwóch osobnych plikach.

W każdym razie ja z tego korzystam i bardzo sobie chwalę.

--
MDz

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 21 lis 2005, o 13:11

Cóż, to działa i inteligentnie wykorzystane dale w praktyce rezultat pozytywny. Ale dla skomplikownych programów może prowadzić do kłopotów i powodować "grochokapustowość". Mi w każdym razie palce nie odpadają od zmiany dwóch plików a nie jednego. Poza tym wiele IDEs pozwala to nieco zautomatyzować (to w kontekście PC).

Ale.... ściągam sobie ostatnio Microsoft Visual C++ 2005 Express Edition (świeżutkie, wyszło 7 listopada) i cóż widzę? Forma ma dwa pliki .cpp i.h ale po dodaniu handlera zdarzenia IDE domyślnie wrzuca implementację w plik .h - coś w stylu Javy, ale w Javie nie ma nagłówków więc jakieś to takie przedziwne. Może to ja o czymś nie wiem (to "C++" w ww. pakiecie to juz nie to samo c++ w starych visualach i BCB)... Może idzie nowe :) (btw to nie jest C# gdyby ktoś podejrzewał lecz ciągle C++).

tomek_j
-
-
Posty:264
Rejestracja:14 sty 2004, o 09:06

Re: Kij w mrowisko

Postautor: tomek_j » 21 lis 2005, o 15:09

.....
A więc THX za krytykę i postaram się w dalszych prostych przykładach
bardziej zwracać uwagę na ogólne kanony C ( o ile znów nie
wlazę na jakąś minę wynikającą z luk w amatorskiej wiedzy )......
Pozdrowienia Jurek S.
Ja bym sie tym nie przejmowal wcale 8). Bo cóz to sa kanaony jezyka C i któz taki je ustala? Komitet ANSI, producenci kompilatorów, programiści? Ten pierwszy nie bardzo, bo z zasady nie może nadążać za potrzebami. Producenci kompilatorów walczą o klienta na różne sposoby i nie zawsze ich produkt to czysty standard, za to moze lepiej sie w nim pisze.Ilu jest programistów tyle jest stylów programowania Jezyki programowania, a szczególnie C dla MIKROKONTROLERÓW nie trzmaja standardów ANSI, bo nie mogą. Poza tym jezyk C jest językiem żywym i to co dzisiaj może byc uznawane za herezję , za czas jakiś może być kanonem poprawności.
Tak na marginesie właśnie łamanie obowiązujących sztywnych norm było prawie zawsze poczatkiem powstawnia rzeczy nowych.
Pzdr
T.
PS. ...no miał być kij w mrowisko czy nie :lol:
Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs. :lol:

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Re: Kij w mrowisko

Postautor: a_antoniak » 21 lis 2005, o 15:52

Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs. :lol:
A kto pisał, że ma się przejmować?

tomek_j
-
-
Posty:264
Rejestracja:14 sty 2004, o 09:06

Re: Kij w mrowisko

Postautor: tomek_j » 21 lis 2005, o 16:04

Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs. :lol:
A kto pisał, że ma się przejmować?
Nikt nie pisał, ale wskoczyliście na niego tak , że zaczął się przejmować. :(

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Re: Kij w mrowisko

Postautor: a_antoniak » 21 lis 2005, o 16:49

Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs. :lol:
A kto pisał, że ma się przejmować?
Nikt nie pisał, ale wskoczyliście na niego tak , że zaczął się przejmować. :(
Jeśli tak to wyglądało to oczywiście wielkie sorry i :564: na pocieszenie :D. Nikt tu nie miał zamiaru na Jurka "wskakiwać" :).
Jurek - trzymaj się mocno i rozwijaj spokojnie to co robisz :D!

Awatar użytkownika
bis
-
-
Posty:134
Rejestracja:12 maja 2005, o 08:11
Lokalizacja:Warszawa

Postautor: bis » 21 lis 2005, o 18:22

W żadnym wypadku nie wskoczyłem i absolutnie nie miałem takiego zamiaru!!!! Opisałem zato moje wrażenie. Po iluś latach programowania, w różnych dziedzinach, pojedynczo i zespołowo(to w szczególności) jestem wyczulony na metody które są kłopotliwe "na przyszłość". Zrobic coś co działa jest sztuką, ale zrobić to tak aby to potem móc rozwijać, dzielić sie z innymi, aby korzystac z tego w przyszłych projektach jest tak samo ważne. Ale nie jestem alfą i omegą, nie czuję się wyrocznią. Dlatego zainicjowałem ten temat. Aby potwierdzić albo zrewidować moje poglądy. A dla Jurka :564: mam wielki szacunek i uznanie za jego pracę. I goraco przepraszam jeżeli ten temat poruszył go osobiście (choć po jego rzeczowym komentarzu sądzę że prawidłowo odczytał moje intencje).

Jurek Szczesiul
-
-
Posty:175
Rejestracja:10 paź 2003, o 20:44
Lokalizacja:Białystok
Kontaktowanie:

Postautor: Jurek Szczesiul » 23 lis 2005, o 11:00

Dzięki za wszystkie opinie ( i za browarki oczywiście !! ).
Jasne, ze żadnych osobistych uraz nie ma :-)

Przy okazji nasuwa się taka refleksja ( dość w sumie banalna ) :
na forach , grupach itp. stykają się dwa nurty - amatorski
i zawodowy / profesjonalny. To samo co dla amatora hobbysty bez
regularnego kierunkowego wykształcenia ( takiego jak ja ) jest wielkim
odkryciem i wspaniałym eksperymentem - dla pragmatycznego
zawodowca jest trywialnym wyważaniem otwartych drzwi,
podejściem nieproduktywnym lub czasem wręcz błędnym.
Przy szykowaniu wszelkich publikacji opartych o amatorskie
dokształcanie i konstrukcje mam więc cały czas poczucie, że
bardzo łatwo mogę dać jakąś plamę. I pewnie jeszcze nieraz
tego nie uniknę - z góry proszę profesjonalistów o wyrozumiałość.

Pozdrawiam wszystkich !
Jurek S.

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 23 lis 2005, o 12:44

dwa nurty - amatorski
i zawodowy / profesjonalny.
Jeśli o mnie chodzi to w żadnym wypadku nie roszczę sobie prawa do jakiegoś "zawodostwa" czy tym bardziej do bycia wyrocznią :). Choć moje kształcenie (juz niedługo mam nadzieję wykształcenie :) ) na "zawodostwo" wskazuje, to wciąż wiele do odkrycia przede mną (w sumie przed każdym). Zresztą, jak napisał tomek_j, wszystko się zmienia (choś z drugiej strony są pewne zdrowe zasady stałe).

Serdecznie pozdrowienia :D

tomek_j
-
-
Posty:264
Rejestracja:14 sty 2004, o 09:06

Postautor: tomek_j » 23 lis 2005, o 14:05

woooow ale skoromnością zajechało :| .....nikt tak na prawdę sie nie zna na temacie, nikt nie jest zawodowcem....wiecej wiary w siebie Panie i Panowie. Chwalmy sie sami tym co umiemy, bo inaczej kto nas będzie chwalił :D.
Pozdrawiam
T.

a_antoniak
-
-
Posty:651
Rejestracja:13 sty 2005, o 18:38
Lokalizacja:Krasnystaw
Kontaktowanie:

Postautor: a_antoniak » 24 lis 2005, o 00:37

woooow ale skoromnością zajechało
fakt, dzisiaj faktycznie jakoś nienajlepiej sie czuje :D

Wróć do „PLD/FPGA i inne zagadnienia techniki cyfrowej”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości