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
Moderatorzy:Jacek Bogusz, Moderatorzy
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 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ść );
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
-
- -
- Posty:175
- Rejestracja:10 paź 2003, o 20:44
- Lokalizacja:Białystok
- Kontaktowanie:
Re: Kij w mrowisko
O, dobrze że są poprawki gdy coś popisałem niezgodnie z kanonami.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.
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.
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
Podejście wcale nie jest nowatorskie a znane od dawna. Ja np. spotkałem je po raz pierwszy w popularnym "C51primerze":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
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
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
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++).
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++).
Re: Kij w mrowisko
Ja bym sie tym nie przejmowal wcale . 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......
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.
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
Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs.
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
Re: Kij w mrowisko
A kto pisał, że ma się przejmować?Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs.
Re: Kij w mrowisko
Nikt nie pisał, ale wskoczyliście na niego tak , że zaczął się przejmować.A kto pisał, że ma się przejmować?Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs.
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
Re: Kij w mrowisko
Jeśli tak to wyglądało to oczywiście wielkie sorry i na pocieszenie . Nikt tu nie miał zamiaru na Jurka "wskakiwać" .Nikt nie pisał, ale wskoczyliście na niego tak , że zaczął się przejmować.A kto pisał, że ma się przejmować?Nie przejmuj sie Jurek i pisz dalel spokojnie swój kurs.
Jurek - trzymaj się mocno i rozwijaj spokojnie to co robisz !
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 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).
-
- -
- Posty:175
- Rejestracja:10 paź 2003, o 20:44
- Lokalizacja:Białystok
- Kontaktowanie:
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.
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.
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
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).dwa nurty - amatorski
i zawodowy / profesjonalny.
Serdecznie pozdrowienia
-
- -
- Posty:651
- Rejestracja:13 sty 2005, o 18:38
- Lokalizacja:Krasnystaw
- Kontaktowanie:
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 27 gości