kategorie: ANSI C, C++
[#1] Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...
Jak w temacie. Jakie macie swoje przemyślenia?
Ja mam pierwsze proste spostrzeżenia, rzeczy których nie rozumiemy jawią się nam jako trudne. I podobnie jest z Ansi C i tym bardziej C++.
W sumie najlepiej niech napiszą Ci którzy piszą coś więcej niż gry tylko na A500 dlaczego używają lub nie używają C lub C++.
[#2] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Bo ja wiem, tych od C to kilku znajdziesz - asman, Krashan, mateusz_s, ja też, KK pisał Dreada w C łączonego z asmem...
W ceplusplusie też niektórzy dłubią, Krashan z nim ostatnio romansuje, ja właśnie jestem w trakcie dorzucania szczypty cpp do swojej gierki, Pink^Abyss z tego co wiem robi swoje gry w cpp, także chyba aż tak dramatycznie nie jest.

To co warto wziąć pod uwagę to:
- ilu jest faktycznie aktywnych programistów na Amigę, np tutaj na ppa - z wykluczeniem kanapowych znawców którzy co prawda kiedyś coś pisali, ale już nie tworzą żadnych produkcji
- kim są dzisiejsi amigowi programiści - bo jeśli chodzi Ci o popularność basiców i scorpionów to bierze to się z prostego faktu że te środowiska są bardziej przystępne dla osób niebędących zawodowymi programistami - i trudno będzie cokolwiek z tym zrobić na chwilę obecną.

Na chwilę obecną, bo jak się popatrzy co potrafić ma cpp26, to istnieje spora szansa że będzie można w nim praktycznie tworzyć własne języki oraz schować bardzo dużo rzeczy pod maską, upraszczając cały kod.

No i przytoczę też cytat z prezentacji którą wczoraj oglądałem, trochę pasuje do tematu:
"This is why you program in C. Because other languages don't open portals to hell." -- Michał Zalewski
Co tym bardziej się tyczy cpp, bo tam jest jeszcze więcej pułapek i okazji do strzelenia sobie w stopę ;)

Ostatnia aktualizacja: 27.09.2024 20:08:44 przez teh_KaiN
1
[#3] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@teh_KaiN, post #2

No i przytoczę też cytat z prezentacji którą wczoraj oglądałem, trochę pasuje do tematu:
"This is why you program in C. Because other languages don't open portals to hell." -- Michał Zalewski
Co tym bardziej się tyczy cpp, bo tam jest jeszcze więcej pułapek i okazji do strzelenia sobie w stopę ;)

Czytając wątki spod znaku "moje boje z Amosem/Blitzem", mam wątpliwości gdzie jest więcej pułapek.
5
[#4] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Np. ja uzywam C tylko dlatego ze jest dla mnie wystarczajacy do tego co robie.
W sumie to i tak robie niewiele.
2
[#5] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@teh_KaiN, post #2

Bo ja wiem, tych od C to kilku znajdziesz - asman, Krashan, mateusz_s, ja też, KK pisał Dreada w C łączonego z asmem...
W ceplusplusie też niektórzy dłubią, Krashan z nim ostatnio romansuje, ja właśnie jestem w trakcie dorzucania szczypty cpp do swojej gierki, Pink^Abyss z tego co wiem robi swoje gry w cpp, także chyba aż tak dramatycznie nie jest.

Tak zdaje sobie sprawę, że są tu takie osoby, dlatego zachęcam je do wyrażenia swojego zdania, jak również tych co piszą użytki np. w Amiga E.

- kim są dzisiejsi amigowi programiści - bo jeśli chodzi Ci o popularność basiców i scorpionów to bierze to się z prostego faktu że te środowiska są bardziej przystępne dla osób niebędących zawodowymi programistami - i trudno będzie cokolwiek z tym zrobić na chwilę obecną.


Myślę że ta sytuacja raczej jest standardem w świecie amigowym od lat 90tych. AMOS i jego popularność w tamtych latach jest pewnego rodzaju tego dowodem.

Co tym bardziej się tyczy cpp, bo tam jest jeszcze więcej pułapek i okazji do strzelenia sobie w stopę ;)

Proponuję wymieniać takie rzeczy, które uważamy że są np. zdradliwe, które właśnie są strzałem w stopę według nas.

Ja w swoim programistycznym życiu tez miałem etap jak "bałem" się C++, uważałem że Ansi C jest lepsze ... z perspektywy czasu widzę, że nie było się czego bać. A pisanie bezpiecznego kodu w C++ jest dużo łatwiejsze, a w kontraście z brakiem ochrony pamięci w systemach amigopodobnych, zdecydowanie korzystanie z C++ i np. z RAII (Resource acquisition is initialization) pozwala unikać sporo wycieków.
[#6] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #5

A pisanie bezpiecznego kodu w C++ jest dużo łatwiejsze, a w kontraście z brakiem ochrony pamięci w systemach amigopodobnych, zdecydowanie korzystanie z C++ i np. z RAII (Resource acquisition is initialization) pozwala unikać sporo wycieków.


Ja nie bede sie spieral ktory jezyk programowania jest lepszy bo przed czyms chroni czy nie.
Wg mnie problem jest gdzies indziej. Poprostu za malo jest beta-testerow.
Co z tego ze C++ zapobiegnie jakiemus wyciekowi. To sprawi ze program bedzie dzialal poprawnie?
To bardziej zamaskuje problem. Mysle ze lepiej ze program sie wywali w czasie testowania a nie zeby
byl jakis ukryty blad.

(to moja prywatna opinia: to ze jezyk programowania pozwala na cos, powoduje tylko ze programista
czuje sie bardziej pewny tego co robi. A to jest bledne myslenie)

Ostatnia aktualizacja: 27.09.2024 21:34:23 przez Phibrizzo
1
[#7] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #5

Przypomniala mi sie jeszcze taka anegdota opowiedziana mi przez jednego demoscenowca.
Opowiadal on jak przyjmowal sie kiedy do pracy jako programista w pewnej firmie.
Dostal tam na rozgrzewke, zeby sprawdzic co kandydat potrafi jakis program do napisania.
Kolega oczywiscie wykonal zadanie. Podszedl do niego szef czy lider (niewazne), patrzy, widzi ze dziala
i pyta:
- Ile Warningow?
- 50
- 50 Warningow???
- Ale przecierz to tylko Warningi....
- A Ty myslisz ze jestes madrzejszy od tego co pisal ten kompilator?

Pamietam to do dzis.
3
[#8] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #5

"a w kontraście z brakiem ochrony pamięci w systemach amigopodobnych, zdecydowanie korzystanie z C++ i np. z RAII (Resource acquisition is initialization) pozwala unikać sporo wycieków."

[pomijam że ochrona pamięci i wycieki to nie to samo]

Już nie piszę pod AmigaOS, ale przez te wszystkie lata kiedy pisałem to wycieki pamięci nie były wcale największym problemem (były najmniejszym?). Problemem były zwiechy. Od tego po części może cię uchronić po prostu kompilowanie z assertami i używanie kontenerów z c++, ale niestety to tylko jakiś procent. Nie mówię że ten procent nic nie daje, bo daje dużo. Już pod MorphOSem "wbudowany Enforcer" był wybawieniem (plus ubijanie okien aplikacji). Moim zdaniem przenoszenie tego co czyta się w internetach na temat bezpiecznych języków/aplikacji niestety w niewielkim stopniu tyczyło się programowania na amigowe systemy.
1
[#9] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Phibrizzo, post #7

Jeśli ja bym był rekruterem, to bym takiego człowieka pogonił za bycie fleją, bo poprawny i przewidywalnie działający kod to podstawa - warningi są emitowane przeważnie na granicy tego co wolno w języku a co nie i ignorując je ryzykuje się, że ignoruje się poszlakę większego problemu albo zachowanie zależne od użytego kompilatora. Z całym szacunkiem do pana scenowca, ale nieważne jak uzdolniony by nie był i jakiej magii nie odprawiał, to w pracy zespołowej porządek w kodzie to podstawa - bo potem przyjdą inni i patrząc na taki kod będą chcieli sobie żyły otwierać.

Sam buduję swoje gierki z flagą -Wextra włączającą jeszcze więcej warningów i -Werror która powoduje, że są traktowane jak errory. Sam ACE parę warningów emituje, bo nie za bardzo miałem czas by się nimi zająć.

Zdecydowaną większość warningów można obejść pisząc kod w trochę inny, niekoniecznie mniej wydajny, ale w bardziej jednoznaczny składniowo sposób, a jak wszystko zawiedzie, to w każdym w miarę nowym kompilatorze idzie na kilka linii wyłączyć dane ostrzeżenie, co od razu innym programistom daje sygnał że nie, nie jest to przeoczenie i niechlujstwo, tylko intencjonalnie zignorowana dana diagnostyka - choć sam osobiście wolę nie robić takich rzeczy.

Proponuję wymieniać takie rzeczy, które uważamy że są np. zdradliwe, które właśnie są strzałem w stopę według nas.


- Użycie znakomitej większości STLa w systemach wbudowanych jak i na retro sprzętach nie ma sensu, bo wprowadzają znaczny narzut i zbędne (re)alokacje. Wielu ludzi zachłystuje się możliwościami C++ i biblioteki standardowej, przez co nadużywają rzeczy lub używają ich dla samego używania a nie dlatego że są potrzebne. Stepowanie debuggerem po kodzie korzystającym z STLa też nie należy do przyjemnych.
- Typowa maniera pisania C++ to wrzucanie zmiennych na stos, i to się potrafi zemścić na takiej A500 z domyślnie ustawionym rozmiarem stosu 10k. ;)
- Żeby używać tego języka świadomie to niestety trzeba się z niego wręcz prawie doktoryzować - pamiętać o różnych zasadach pisania kodu (rule of 5, 3, zero czy tam ilu jeszcze, wiem że istnieją ale z pamięci ich nie przywołam)
Złotym środkiem wg mnie jest pisanie mniej-więcej jak w C, tylko z dodatkiem tego co wystawia język - referencjami (bo przeważnie nie są potrzebne wskaźniki), RAII, metodami, constexpr oraz za niedługo generacją kodu i statyczną refleksją. Generalnie z tym językiem warto zaczynać powolutku, dodając kolejne jego elementy wtedy gdy staną się potrzebne/niezbędne.

Ostatnia aktualizacja: 27.09.2024 22:26:51 przez teh_KaiN
4
[#10] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@teh_KaiN, post #9

-Werror potrafi kopnąć w dupę jak się wersję kompilatora zmieni. Bo nowe warningi weszły.
1
[#11] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Phibrizzo, post #6

Co z tego ze C++ zapobiegnie jakiemus wyciekowi. To sprawi ze program bedzie dzialal poprawnie?
To bardziej zamaskuje problem. Mysle ze lepiej ze program sie wywali w czasie testowania a nie zeby
byl jakis ukryty blad.


Ale unikanie tych wycieków, to nie jest w sensie, że one są zamaskowane, wręcz przeciwnie, one po prostu dużo trudniej mogą się zdarzyć. C++ ich nie ukrywa. Chodzi o to, że konstrukcje językowe C++ pozwalają np. lepiej zarządzać zasobami, takimi jak alokowana pamięć, otwarte biblioteki, pliki etc, jak również np. operowanie na stringach. Można się skupić na logice danej części kodu, a nie na "zabawie" z funkcjami strlen, strcat, srcpy, ... przy zabawie którymi można sobie zrobić kuku .. niech rzuci kamieniem ten który nigdy korzystając z nich nie miał wycieku/nadpisania danych czy też zwisu.

Phibrizzo jak otwierasz i zamykasz biblioteki w swoim kodzie? Czy używasz takiej dużej "ifologii"? Czy masz potem jedną wielką funkcję do zamykania tego co otworzyłeś?
2
[#12] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@kiero, post #8

[pomijam że ochrona pamięci i wycieki to nie to samo]


Oczywiście masz rację, w sumie chodziło mi zarówno o wycieki jak i ochronę pamięci którą można w dużym stopniu uzyskać w C++. Nie znaczy to że C++ jest remedium na wszystkie problemy.

Już nie piszę pod AmigaOS, ale przez te wszystkie lata kiedy pisałem to wycieki pamięci nie były wcale największym problemem (były najmniejszym?). Problemem były zwiechy. Od tego po części może cię uchronić po prostu kompilowanie z assertami i używanie kontenerów z c++, ale niestety to tylko jakiś procent. Nie mówię że ten procent nic nie daje, bo daje dużo. Już pod MorphOSem "wbudowany Enforcer" był wybawieniem (plus ubijanie okien aplikacji). Moim zdaniem przenoszenie tego co czyta się w internetach na temat bezpiecznych języków/aplikacji niestety w niewielkim stopniu tyczyło się programowania na amigowe systemy.


A ja ponieważ piszę dalej pod AmigaOS i to w większości w C++, to swoje komentarze opieram na własnych doświadczeniach i spostrzeżeniach. I nie są to "internetowe mądrości". Tylko najczęściej realne "pozytywne konsekwencje" korzystania właśnie z C++17 (bo taka najnowsza wersja C++ jest dostępna do kompilacji skrośnej dla klasycznego AmigaOS dzięki gcc 6.5.0 .. choć nie wszystkie elementy C++17 są tam zimplementowane).
Pod MorphOS jest nieco lepiej bo jest nowsze gcc 9.5.0 które obsługuje już pełny standard c++17.
1
[#13] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Osobiście nie używam C/C++ na Amidze, ale to głównie z powodów sentymentalnych. Na E się uczyłem programowania w wieku ok 13-14 lat, przed CEDem spędziłem chyba więcej czasu niż przy wszystkich grach razem wziętych. C/C++ nauczyłem się dopiero kilka lat później już na PC, i pierwsze 10 lat mojego zawodowego życia to właśnie C++.

Moje pierwsze skojarzenie z Amigą to właśnie E, a pierwsze skojarzenie z C/C++ to praca, wymagania, i deadline'y.

Ale gdyby nie moja przygoda z E lata temu, to myślę że dzisiaj nawet nie pomyślałabym o takim egzotyczny języku, i mimo wszystkich jego zalet uzywalbym na Amidze C++.
3
[#14] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Co do C++ na Ami to się nie wypowiem, bo jeszcze nie ogarnąłem tego tematu w taki sposób by się wypowiedzieć.
Co do C i czarnej magii, to uważam, że wiele czynników się składa na to. Być może będzie trochę chaotycznie, ale postaram się ubrać to w jakieś punkty. Zacznijmy od rzeczy okołojęzykowych.

1. Brak literatury. Czy ktoś miał w ręku książkę po polsku o programowaniu w C na Ami ? Za to książek do Amosa po polsku mam bodajże więcej niż 3.
2. Czy jest jakieś darmowe IDE do C na Ami ? Które działa tak od strzała, jak Amos, uruchamiasz i wszystko tam jest: Edytor, Wypasiony help, Debugger.
3. Mnogość narzędzi, które trzeba używać: Kompilator, Linker,
3. Przesiadka z jednego pliku na wiele plików i problemy z tym związane. Jasne że można pisać wszystko w jednym pliku i w edytorze robić FOLD/UNFOLD, bądź skakać po pliku.
- sławny makefile, o co tu chodzi, panie... ja chce pisać programy w C a nie jeszcze muszę ogarnąć makefile. Kto używa (ł) mkmk z SAS C
- dziwne błędy linkera o braku jakiś referencji zmiennych bądź funkcji. A Kto używa (ł) linta ?

A jeszcze nie dotkneliśmy samego języka C, to musi być jakąs magia by to ogarnąć ;)
4
[#15] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@asman, post #14

Ad1. Fakt polskiej literatury praktycznie nie ma. Trzeba sie podpierac angielska.
Po polsku pod Ami spotkalem sie tylko z jedna ksiazka: Amiga OS od Srodka".
Sa tam tylko podstawy: jak okno otworzyc, ekran, klawiature obsluzyc. O zaawansowanych
operacja graficznych czy opisie innych bibbliotek mozna zapomniec. Czyli taka podstawa podstaw.

Ad2. na Aminecie jest ADE (GCC 2.x.x). Sciagasz instalujesz. Za edytor moze ci robic ulubiony edytor tekstu.

Ad3. Urban legend. Pod GCC piszesz w Shellu: gcc plik.c jakies_opcje. Pod SAS/C podobnie lub mozna
wcisnac F4 dla jednoplikowchy zrodel.
Co do MakeFile. Przyznam sie ze odkad cos robie na Amidze to tylko RAZ tego uzylem przy kompilacji ADooma.
Tyle ze ktos go wczesniej napisal. Osobiscie unikam.

C to nie jest magia. Na kazdym komputerze jest taki sam.
Wymaga tylko wiekszej znajomosci danej platformy zeby wiedziec co jest a czego niema.
Co w cale nie znaczy ze programuje sie latwiej niz np w AMOSie.
Wiadomo jezyki programowania wyzszych poziomow maja na zadanie jak najbardziej ulatwiac.
Niestety C zawsze trzeba uwazac.

Ostatnia aktualizacja: 30.09.2024 10:48:31 przez Phibrizzo
1
[#16] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Phibrizzo, post #4

Ja bym dorzucił jeszcze jedno: uczysz się C/C++ i masz możliwość działania nie tylko na platformie AmigaOS ale na wielu, wielu innych. Zysk bezsprzeczny.
Amiga E czy Amos - może są fajne, może (bo i czemu nie) - są przydatne. Ale mają jeden zasadniczy minus .. brak obecności na innych platformach. Obecnie - sztuka dla sztuki.
Wszystkie moje amigowe pchełki to w 100% C. Ale to pchełki.. więc może dlatego.
2
[#17] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

A ja myślę, że po prostu wielu osobom nie chce się uczyć nowych rzeczy. Nauczyli się AMOSa, który dosyć szybko (od momentu rozpoczęcia nauki) daje możliwość tworzenia całkiem fajnych rzeczy, chociaż niesystemowych. A C ma opinię (niesłuszną) bycia językiem trudniejszym od Basica.
Ja trochę rzeczy zrobiłem w ANSI C właśnie z powodu dostępności literatury: "ANSI C" Kernighana i Ritchiego to w mojej opinii najgenialniejsza ze wszystkich książek o programowaniu. Napisana prostym językiem pozwala prosto i szybko zacząć pisanie w C.
Jeśli chodzi o literaturę o C pod Amigą, to przecież jest "Amiga OS od środka" autorstwa Michała Kołodziejczyka. Są tam bardzo zrozumiale i przystępnie opisane podstawy programowania w AmigaOS właśnie pod kątem C (a w innych językach, czy choćby ASM programowanie systemowe wygląda inaczej?): exec, dos, intuition, .... wszystko co trzeba na początek.
Poza tym był w MA kurs w odcinkach, całkiem sporo tam było.
Tyle o C. W sumie to napisałem dlaczego spokojnie można zacząć pisać pod amigą w C, a nie dlaczego wielu ludzi unika C... ;)
Co do unikania, to w moim przypadku stało się to w przypadku C++. I tym razem przyczyną była literatura. Mianowicie postanowiłem uczyć się C++ ze znanej książki Stroustrupa... a przystępną to bym ją nie nazwał. Pewnie gdybym się uparł, to bym ją pokonał... ale się nie uparłem.
Inna sprawa, że C++ jest trudniejszy do opanowania niż C. ANSI C bowiem (moim zdaniem) jest prostsze niż jakikolwiek Basic, a jednocześnie oferuje o wiele więcej. C++ też jest super, ale tu już trzeba przyswoić (i nauczyć się wykorzystywać) mechanizmy dziedziczenia, obiektowości, te wszystkie klasy czy metody. Jeśli ktoś nie jest (tak jak ja) zawodowym programistą, to woli pozostać przy prostym C, bo wymaga to o wiele mniej pracy do rozpoczęcia robienia czegokolwiek, przy małych projektach sprawdza się w zupełności, a stosowanie do pchełek C++ to trochę strzelanie z armaty do wróbla.
Co do plusów i minusów programowania w C++ pod Ami się nie wypowiem, bo tutaj tego nie robiłem (mój jedyny kontakt z C++ to Borland Builder).
1
[#18] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Ja jestem amatorem, więc się nie będę wypowiadał. Za to temat bardzo ciekawy.
1
[#19] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@wali7, post #17

stosowanie do pchełek C++ to trochę strzelanie z armaty do wróbla
Trochę zależy od tego, co program ma robić, ale ogólnie się z tym nie zgadzam.
4
[#20] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Krashan, post #19

Piszę z poziomu laika - nie napisałem pod Amigę nic związanego z C++. Opieram się na zasłyszanych opiniach, że C++ jest bardziej zasobożerny, czy że pod Amigą pisanie w C++ jest średnio wygodne. Ale to tylko zasłyszane opinie.
Ja, jeśli chodzi o Amigę, to zdecydowanie należę do Kościoła ANSI C.
1
[#21] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@wali7, post #20

Opieram się na zasłyszanych opiniach, że C++ jest bardziej zasobożerny, czy że pod Amigą pisanie w C++ jest średnio wygodne.
Obie te opinie są moim zdaniem błędne. Z jednym małym wyjątkiem, sam kompilator C++ jest bardziej zasobożerny niż kompilator C, zwłaszcza pod kątem mocy obliczeniowej.
2
[#22] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Ja zacząłem przygodę z ANSI C na studiach. Potem był też tam C++,
ale mimo iż robiłem wtedy sporo projektów i kodowanie szło mi dobrze,
to miałem sporo braków w wiedzy odnoście C i C++ ale i pewnych zagadnień informatycznych.

Można powiedzieć że w ciągu lat trochę nadrobiłem te braki, programując różne rzeczy głownie
pod Windows. Jednak muszę przyznać że dopiero w ciągu ostatnich 2-3 lat kiedy zaczałem programować
pod Amigą np. Raycaster, jakieś "toolsy" itp, szukając optymalizacji i wydajnych sposobów na osiąganie celów,
naprawę bardzo dużo się nauczyłem. I Język ANSI C traktuje jako taką swoją bazę. Czasami ogladam też rózne materiały na temat różnych trików, co stooosować co nie i materialy ktore dosc mocno sie zaglebiają w C.

Jeśli chodzi o C++ to trzeba poruszyć tutaj samo programowanie obiektowe. Bo to jest chyba główny
powód jakieś ewentualnej przesiadki. JEdnak programowanie obiektowe to jest koncepcja i umiejętność tak naprawdę
któej trzeba się najpierw nauczyć - zeby efektywanie wykorzystywać elementy C++. JA osobiście przyznam że miałem i mam problemy z obiektowością i nie znam jej aż tak dobrze.
Oczywiście w C++ nikt nam nie każe robić każdego programu obiektowo. C++ daje nam sporo narzedzi i bilbiotek
jak STL, które ułatwiają życie.. ale przyznam znowuy osobiście, że wywoływanie czy tworzenie tych struktur, rzutowanie itp jest troche dla mnie nieczytelne w C++ i prawde mowiać przerażające jak nieraz widzę ile tam trzeba nastukać się xD no ale to też kwestia tego że nie znam C++
na tyle na ile C.

Jeśli robie coś w C++ to glownie pod Windowsem, i zwyle omijam jakieś rozbudowane obiektowe struktury, korzyustam też z STL - choć tu się spotkałem z tym że STL nie jest jakoś szczegołnie wydajne i np. lepiej sprawuje się biblioteka BOOST (ale to było dawno wiec nie wiem jak teraz)

Jeśli chodzi o Amigę to mi C do wszystkiego wystarcza i jest przejrzysty i szybki. Chyba łatwiej to debugować.
Nie jestem w stanie powiedzieć jak zmieniła by się wydajność gdyby do projektu ktory ma działać bardzo szybko
zastosować jakaś złożoną obiektowość czy biblioteki STL - pewnie byśmy sporo stracili na wydajności.
Ale z drugiej storny jeśli tworzylibyśmy coś gdzie super wydajność nie ma znaczenia, np. jakaś strategie turową
to obiektowość C++ były by tu plusem..

Podsumowując :)
lubie język ANSI C, chyba zawsze lubiłem, a jako że z czasem nadrobiłem wiele braków, które miałem na studiach
koduje mi się w nim znacznie lepiej :)
2
[#23] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@Rafael/ARMO, post #1

Poczytałem wypowiedzi i jedna rzecz mnie nurtuje.

Jako, że siedzę w Blitz Basicu a kiedyś w Amosie, próbowałem zqrówno ANSI C, jak i czytałem o AmigaE. Języki jak języki. Gdyby się z nimi obyć, to może i by się człowiek przyzwyczaił.

Z drugiej strony zarówno Blitz Basic, jqk i Amos mają swoje edytory, kompilatory i całe środowisko zintegrowane. Wiem. AmigaE ma swoje E-vo, C ma kilka kompilatorów. Jedne lepsze l, inne gorsze.

Teraz dlaczego wybrałem Blitz Basic i go nie opuszczam. Dokumentacja jest jaka jest. Po polsku brak. Po angielsku jest. Moim zdaniem brak jest bibliotek dla C oraz AmigaE. Nie problem stanowi sam język, a hardware Amigi. Kto programował ręcznie copper, blitter, obsługiwał przerwania, ten wie o czym mówię. Zwykły programista amator ma to wszystko gotowe w basicach. W C i AmigaE tego brak. Obsługa banku grafik (boby, shapy, sprajty, zwał jak zwał) też jest zerowa w C oraz E. Jak sobie samemu nie napiszesz, to nie będziesz mieć.

Nauczyłem się coś tam z asemblera dla zaspokojenia własnej ciekawości, ale piszę dalej w BB, bo jednak on sporo robi za mnie. Gdy napisałem sobie ręcznie odgrywanie sampla w Pauli, to nie potrafiłem go później zatrzymać. Cały hardware w Amidze jest okropnie trudny do ogarnięcia. Niby wszystko pisze w hardware reference, ale dla laika to jest bardzo niezrozumiałe.
1
[#24] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@tukinem, post #23

Blitz Basic dobry soft. Amos przynajmniej ten stary nie wykorzystuje AGA. Ale fakt mają przyjemne IDE i wszsytko w jednym.

Przy czym przy czym żeby efektywnie kodować w Blitzu czy w Amosie to jednak trzeba troche wiedziec
jak dziala uklad graficzny Amigi, jakie ma ograniczenia itp. Bez tego to ciężko racej coś sensownego zrobić.

Ja gdy programuje w C to jednak celuje w lepsze procesory i ewentualnie RTG i robie wszsytko od zera rysujac w buforze w pamięci a potem to wywalam na ekran. Więc omijam standardowe operacje na ukladzie graficznym Amigi - jedynie robie chunky to planar żeby było na wyjściu AGA
2
[#25] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@tukinem, post #23

Moim zdaniem brak jest bibliotek dla C


Ale mi teraz smutno. :(

@mateusz_s @wali7
Nie trzeba pisać w C++ ze wszystkimi jego dobrodziejstwami. Można pisać właściwie jak w C. Po co? Ano po to że np stosując referencje zamiast wskaźników uczytelnia nam się kod, i zmniejszamy szanse strzelenia sobie w stopę mając adres elementu - przeważnie go w swoim kodzie przecież nie potrzebujemy. Można też użyć słówka constexpr (i nowszego ceplusplusa) żeby wykosić dużo kodu, zwłaszcza inicjującego, który przeliczyć się może w czasie kompilacji i w kodzie wynikowym może być tylko trzymany jego wynik. Albo sobie w ten sposób przygotowywać tablice matematyczne, czy cuś.

Potem się nagle okaże, że fajnie mieć jakąś funkcję wewnątrz struktury, raz, drugi, aż się w końcu zacznie łapać obiektowego bakcyla.

Ostatnia aktualizacja: 30.09.2024 22:51:59 przez teh_KaiN
2
[#26] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@teh_KaiN, post #25

Wskaźniki są najcudowniejszym elementem języka programowania. W systemach wbudowanych z bezpośrednim dostępem do peryferiów właściwie wszystkie operacje na pamieci, buforach i rejestrach są wykonywane na wskaźnikach. Nie wyobrażam sobie zastąpienia tego czymkolwiek innym.

A C++ przez 20 lat nie udało mi się nauczyć bo nigdy nie zrozumiałem idei tego dobrodziejstwa. Szału dostaję jak muszę wykorzystać stos USB w mikrokontrolerach stm32 bo on jest napisany obiektowo i po kilku linijkach się gubię. Zdarzało mi się tez w pocie czoła backportowac cudze fragmenty kodu napisane obiektowo na prawilne C żeby wszystko było jak należy :D.
1
[#27] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@bfgmatik, post #26

Wskaźniki są najcudowniejszym elementem języka programowania. W systemach wbudowanych z bezpośrednim dostępem do peryferiów właściwie wszystkie operacje na pamieci, buforach i rejestrach są wykonywane na wskaźnikach. Nie wyobrażam sobie zastąpienia tego czymkolwiek innym.


Sam pochodzę z embedded, i tak, w takich scenariuszach są one zasadne. W samej logice aplikacji jednak często przekazuje się wskaźnik nie po to, żeby coś na adresach majtać, tylko żeby podać większy obiekt przez parametr nie kopiując go bez sensu. Wtedy właśnie wchodzi do akcji referencja - pod maską działa tak samo, ale w konstrukcji językowej masz tylko dostęp do wartości przekazanego obiektu. Jak umiejętnie korzystasz i z jednego i drugiego, to to bardzo ładnie dokumentuje kod, bo widząc wskaźnik od razu wiesz że "oho, będzie jechanie po pamięci" a w innych przypadkach nie występują.
3
[#28] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@teh_KaiN, post #27

Referencje z C++ faktycznie pomagają w kilku sytuacjach:
- Chcemy mieć dostęp do przekazanej zmiennej, czy jest w rejestrze czy ramce stosu,
- Chcemy zastosować kod inline, mając dostęp do wszystkich zmiennych.

Ja lubię, że w C++ możemy zdecydować, czy przekazujemy obiekt, referencję czy wskaźnik. W takim języku jak Java nie mamy wyboru - jest tylko referencja.

Ale język C nie jest pod tym względem gorszy. Prawdopodobnie kod inline jest tworzony przez nowsze kompilatory. Ale nawet bez tego mamy do dyspozycji makra, gdzie można traktować parametry jak przekazane przez referencję - bo tak w istocie jest w tym przypadku.

W języku C mamy troszkę pełniejszą kontrolę nad postacią kodu wynikowego, struktur itp.

Przykładowo przeciążanie operatorów jest stosowane do skrócenia kodu. W każdym przypadku możemy przecież napisać funkcję. Bo normalnie każdy operator na typach wbudowanych int czy float jest w sposób naturalny tłumaczony na odpowiednie polecenie procesora.

Bardzo lubię dziedziczenie w C++. Język C++ ma naturalne mechanizmy optymalizujące. Ale preferuję C ze względu na tę kontrolę, szczególnie na Amidze, ale nie tylko.

Z ciekawostek dodam, że program do pracy magisterskiej napisałem w tym roku w języku C.
2
[#29] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@teh_KaiN, post #27

"
bo widząc wskaźnik od razu wiesz że "oho, będzie jechanie po pamięci" a w innych przypadkach nie występują.

ale przeciez to to samo :), odwolanie do elementu obiektu przekazywanego jako referencje tez "jezdzi po pamieci"... Praktycznie jedyna roznica miedzy nim a odwolaniem do elementu przekazanego jako pointer to "." zamiast "->" ... Jesli pointer bedzie konkretnego typu bez typecastowania do/z innego typu I nie bedzie 0, to szansa, ze cos sie posypie sa takie same jak przy referencji.
[#30] Re: Dlaczego dla wielu amigowych progarmistów Ansi C to czarna magia, a C++ to już dzieło szatana ...

@docent, post #29

Ważniejsza różnica jest w możliwości manipulacji wskaźnika (++, --). Czego nie zrobisz z referencją.
1
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem