Programowanie: Różnice pomiędzy wersjami
M (Etapy wytwarzania oprogramowania) Znacznik: edytor wizualny |
Ostrzyciel (dyskusja • edycje) M (dr. red., akt.) |
||
Linia 1: | Linia 1: | ||
'''Programowanie''' – czynność polegająca na pisaniu [[kod źródłowy|kodu źródłowego]], w językach [[A]], [[B]], [[D]], lecz najczęściej [[C (język programowania)|C]], rzadko w [[asembler]]ze. W wyniku tych przekształceń rzadko, choć czasem powstaje [[program]] wykonywalny. |
'''Programowanie''' – czynność polegająca na pisaniu [[kod źródłowy|kodu źródłowego]], w językach [[A]], [[B]], [[D]], lecz najczęściej [[C (język programowania)|C]], rzadko w [[asembler]]ze. W wyniku tych przekształceń rzadko, choć czasem powstaje [[program]] wykonywalny. |
||
Programowanie jest sztuką. Powstający [[program]] (jaki by nie był) jest produktem ubocznym tej sztuki, więc należy się cieszyć, że w ogóle powstał. |
Programowanie jest sztuką. Powstający [[program]] (jaki by nie był) jest produktem ubocznym tej sztuki, więc należy się cieszyć, że w ogóle powstał. |
||
Linia 7: | Linia 8: | ||
* '''Zebranie wymagań klienta''' – klient w sposób niezrozumiały opisuje przedstawicielowi producenta swoje niesprecyzowane, niespójne i wewnętrznie sprzeczne wymagania co do programu. |
* '''Zebranie wymagań klienta''' – klient w sposób niezrozumiały opisuje przedstawicielowi producenta swoje niesprecyzowane, niespójne i wewnętrznie sprzeczne wymagania co do programu. |
||
* '''Analiza''' – analitycy producenta próbując wykrystalizować wymagania klienta tworzą szereg nowych wymagań, ich zdaniem niezbędnych do realizacji wymagań podstawowych. W rzeczywistości dodatkowe wymagania są rezultatem przyjęcia błędnego założenia, że klient wie, czego chce. |
* '''Analiza''' – analitycy producenta próbując wykrystalizować wymagania klienta tworzą szereg nowych wymagań, ich zdaniem niezbędnych do realizacji wymagań podstawowych. W rzeczywistości dodatkowe wymagania są rezultatem przyjęcia błędnego założenia, że klient wie, czego chce. |
||
* '''Projekt''' – projektanci próbują przełożyć stworzony przez analityków [[strumień świadomości]] na język zrozumiały dla programistów. Zafascynowani |
* '''Projekt''' – projektanci próbują przełożyć stworzony przez analityków [[strumień świadomości]] na język zrozumiały dla programistów. Zafascynowani technologiami [[big data]], [[uczenie maszynowe|uczenia maszynowego]] i przetwarzania chmurowego, przerabiają aplikację zarządzającą biblioteką szkolną w rozproszony system przetwarzania strumieniowego rekordów bibliotecznych o wielkiej przepustowości, sterowany centralnie przez [[sztuczna inteligencja|sztuczną inteligencję]]. |
||
* '''Implementacja''' – programiści wklepują w swoim ulubionym języku programowania kod wymyślony przez projektantów, ucząc się w międzyczasie |
* '''Implementacja''' – programiści wklepują w swoim ulubionym języku programowania kod wymyślony przez projektantów, ucząc się w międzyczasie ww. technologii. Empiryczne badania dowodzą, że w projekcie średniego ryzyka o średniej złożoności opóźnienie związane z dochodzeniem po co właściwie powstała połowa modułów zajmuje zwykle około sześciu tygodni. |
||
* '''Testowanie''' – tester przygląda się pracy |
* '''Testowanie''' – tester przygląda się pracy ww. osób i udowadnia im dlaczego są debilami, którzy zmarnowali czas i pieniądze firmy na realizację swoich kretyńskich pomysłów. |
||
== Zasady programowania == |
== Zasady programowania == |
||
* Pisz dużo programów, nie zwracaj uwagi na to, że one nic nie robią. |
* Pisz dużo programów, nie zwracaj uwagi na to, że one nic nie robią. |
||
* Nie liczy się funkcjonalność napisanego programu – liczy się ile linii kodu zawiera. |
* Nie liczy się funkcjonalność napisanego programu – liczy się ile linii kodu zawiera. |
||
* Jeśli nie rozumiesz kodu napisanego przez siebie, nie martw się inni swoich też nie rozumieją. |
* Jeśli nie rozumiesz kodu napisanego przez siebie, nie martw się, inni swoich też nie rozumieją. |
||
* Normy wytwarzania oprogramowania są elementem świata wyidealizowanego. |
* Normy wytwarzania oprogramowania są elementem świata wyidealizowanego. |
||
* [[Programowanie ekstremalne]] |
* [[Programowanie ekstremalne]] jest podstawą świata rzeczywistego. |
||
* Jeżeli przeczytałeś jakieś książki [[David Parnas|Parnasa]] i nie zamierzasz pisać |
* Jeżeli przeczytałeś jakieś książki [[David Parnas|Parnasa]] i nie zamierzasz pisać pracy magisterskiej z [[Inżynieria oprogramowania|inżynierii oprogramowania]] – zapomnij o nich. |
||
* [[Model kaskadowy wytwarzania oprogramowania]] jest mrzonką a wszelkie próby jej realizacji kończą się nieograniczonym zwiększaniem kosztów. |
* [[Model kaskadowy wytwarzania oprogramowania]] jest mrzonką a wszelkie próby jej realizacji kończą się nieograniczonym zwiększaniem kosztów. |
||
* Kiedy programu napisanego przez ciebie zacznie ktoś używać, to znaczy, że gdzieś popełniłeś błąd. |
* Kiedy programu napisanego przez ciebie zacznie ktoś używać, to znaczy, że gdzieś popełniłeś błąd. |
||
* Pisz kod jak najbardziej nieczytelny – jeżeli ktoś zacznie w nim grzebać, nie doszuka się źródła błędu i nie nazwie cię głupkiem. |
* Pisz kod jak najbardziej nieczytelny – jeżeli ktoś zacznie w nim grzebać, nie doszuka się źródła błędu i nie nazwie cię głupkiem. |
||
* Nadawaj zmiennym dziwne nazwy typu ''XFGRRTEF___DGFF'', ''R2D2' czy ''Michal_Wisnewski''. |
* Nadawaj zmiennym dziwne nazwy typu ''XFGRRTEF___DGFF'', ''R2D2'' czy ''Michal_Wisnewski''. |
||
* Jeśli twój [[język programowania]] pozwala na identyfikatory [[Unicode]], to dobrym pomysłem będzie ''gżegżółka'', zerknij też w tablice znaków dla gruzińskiego i chińskiego tradycyjnego. |
|||
* Jeśli dane są w jakiś sposób ze sobą związane, to zamiast tworzenia tablic zastosuj zmienne o podobnych nazwach: aaaa, aaab, aaac... |
* Jeśli dane są w jakiś sposób ze sobą związane, to zamiast tworzenia tablic, zastosuj zmienne o podobnych nazwach: aaaa, aaab, aaac... |
||
* Używając makrodefinicji, zmiennych tekstowych i szablonów emuluj różne języki programowania. |
* Używając makrodefinicji, zmiennych tekstowych i szablonów emuluj różne języki programowania. |
||
* Operacje matematyczne wyrażaj w [[Odwrotna notacja polska|odwrotnej notacji polskiej]]. |
* Operacje matematyczne wyrażaj w [[Odwrotna notacja polska|odwrotnej notacji polskiej]]. |
||
Linia 34: | Linia 36: | ||
* Jeżeli to nie pomoże, wyłącz i włącz ponownie kompilator. |
* Jeżeli to nie pomoże, wyłącz i włącz ponownie kompilator. |
||
* Jeżeli przed rozpoczęciem kodowania sporządziłeś jakieś plany – wyrzuć je. |
* Jeżeli przed rozpoczęciem kodowania sporządziłeś jakieś plany – wyrzuć je. |
||
* |
* Po godzinach spędzonych na analizie kodu i powtarzaniu ''przecież to jest dobrze i powinno działać!'' zastanów się i sprawdź, czy plik instalacyjny twojego kompilatora nie jest uszkodzony. Być może twój komputer stoi za blisko innego urządzenia elektrycznego, i pole magnetyczne zakłóca działanie procesora komputera, przez co twój program się zawiesza. |
||
* W ostateczności skonsultuj się z [[astrologia|astrologiem]]. |
|||
== Prawdy o programach == |
== Prawdy o programach == |
||
Linia 41: | Linia 44: | ||
* Złożoność programu rośnie do momentu przekroczenia zdolności programisty ten program konserwującego. |
* Złożoność programu rośnie do momentu przekroczenia zdolności programisty ten program konserwującego. |
||
== Prawdy o |
== Prawdy o programistach == |
||
* Bluzganie to jedyny język |
* Bluzganie to jedyny język opanowany w pełni przez wszystkich programistów. |
||
== Jak zacząć? == |
== Jak zacząć? == |
||
Najlepiej nie zaczynać. |
|||
Najlepiej nie zaczynać, ponieważ grozi to zjednoczeniem się ze swoją [[komputer osobisty|maszyną]]. Zaczniesz ją [[miłość|kochać]], pisać dla niej programy – stworzysz swój własny świat, odizolujesz się od społeczeństwa. |
|||
== Zastosowania == |
== Zastosowania == |
||
Prawdziwi programiści piszą programy nie posiadające wartości użytkowej, a jedynie roztrząsające pewne problemy teoretyczne, których rozwiązanie niczemu nie służy. Interesuje ich głównie problematyka: |
Prawdziwi programiści piszą programy nie posiadające wartości użytkowej, a jedynie roztrząsające pewne problemy teoretyczne, których rozwiązanie niczemu nie służy. Interesuje ich głównie problematyka: |
||
* Co by się stało, gdyby |
* Co by się stało, gdyby czterech twoich kolegów zakaziło się grypą: czy cała populacja może wyginąć? |
||
* Rozwiązywania układów różniczkowych wysokich rzędów. |
* Rozwiązywania układów różniczkowych wysokich rzędów. |
||
* Czy za pomocą dwóch stosów talerzy da się symulować kolejkę sklepową? |
* Czy za pomocą dwóch stosów talerzy da się symulować kolejkę sklepową? |
||
Linia 56: | Linia 59: | ||
* Zaspamować [[YouTube]]. |
* Zaspamować [[YouTube]]. |
||
* Zaspamować twoją skrzynkę pocztową. |
* Zaspamować twoją skrzynkę pocztową. |
||
* Zaspamować twoje ulubione forum. |
|||
* Zaspamować cały Internet. |
* Zaspamować cały Internet. |
||
* Zainstalować ci programy, które robią złe rzeczy, w sposób widoczny jedynie dla [[informatyk]]a albo i niewidoczny w ogóle. |
* Zainstalować ci programy, które robią złe rzeczy, w sposób widoczny jedynie dla [[informatyk]]a albo i niewidoczny w ogóle. |
||
Linia 69: | Linia 71: | ||
* [[programista]] |
* [[programista]] |
||
* [[inżynieria oprogramowania]] |
* [[inżynieria oprogramowania]] |
||
* [[programowanie zwinne]] |
|||
* [[program]] |
|||
[[kategoria:Programowanie| ]] |
[[kategoria:Programowanie| ]] |
Wersja z 17:46, 9 paź 2021
Programowanie – czynność polegająca na pisaniu kodu źródłowego, w językach A, B, D, lecz najczęściej C, rzadko w asemblerze. W wyniku tych przekształceń rzadko, choć czasem powstaje program wykonywalny.
Programowanie jest sztuką. Powstający program (jaki by nie był) jest produktem ubocznym tej sztuki, więc należy się cieszyć, że w ogóle powstał.
Programują głównie linuksowcy. Użytkownicy Windowsa, jak i sami jego twórcy nie posiadają takich umiejętności.
Etapy wytwarzania oprogramowania
- Zebranie wymagań klienta – klient w sposób niezrozumiały opisuje przedstawicielowi producenta swoje niesprecyzowane, niespójne i wewnętrznie sprzeczne wymagania co do programu.
- Analiza – analitycy producenta próbując wykrystalizować wymagania klienta tworzą szereg nowych wymagań, ich zdaniem niezbędnych do realizacji wymagań podstawowych. W rzeczywistości dodatkowe wymagania są rezultatem przyjęcia błędnego założenia, że klient wie, czego chce.
- Projekt – projektanci próbują przełożyć stworzony przez analityków strumień świadomości na język zrozumiały dla programistów. Zafascynowani technologiami big data, uczenia maszynowego i przetwarzania chmurowego, przerabiają aplikację zarządzającą biblioteką szkolną w rozproszony system przetwarzania strumieniowego rekordów bibliotecznych o wielkiej przepustowości, sterowany centralnie przez sztuczną inteligencję.
- Implementacja – programiści wklepują w swoim ulubionym języku programowania kod wymyślony przez projektantów, ucząc się w międzyczasie ww. technologii. Empiryczne badania dowodzą, że w projekcie średniego ryzyka o średniej złożoności opóźnienie związane z dochodzeniem po co właściwie powstała połowa modułów zajmuje zwykle około sześciu tygodni.
- Testowanie – tester przygląda się pracy ww. osób i udowadnia im dlaczego są debilami, którzy zmarnowali czas i pieniądze firmy na realizację swoich kretyńskich pomysłów.
Zasady programowania
- Pisz dużo programów, nie zwracaj uwagi na to, że one nic nie robią.
- Nie liczy się funkcjonalność napisanego programu – liczy się ile linii kodu zawiera.
- Jeśli nie rozumiesz kodu napisanego przez siebie, nie martw się, inni swoich też nie rozumieją.
- Normy wytwarzania oprogramowania są elementem świata wyidealizowanego.
- Programowanie ekstremalne jest podstawą świata rzeczywistego.
- Jeżeli przeczytałeś jakieś książki Parnasa i nie zamierzasz pisać pracy magisterskiej z inżynierii oprogramowania – zapomnij o nich.
- Model kaskadowy wytwarzania oprogramowania jest mrzonką a wszelkie próby jej realizacji kończą się nieograniczonym zwiększaniem kosztów.
- Kiedy programu napisanego przez ciebie zacznie ktoś używać, to znaczy, że gdzieś popełniłeś błąd.
- Pisz kod jak najbardziej nieczytelny – jeżeli ktoś zacznie w nim grzebać, nie doszuka się źródła błędu i nie nazwie cię głupkiem.
- Nadawaj zmiennym dziwne nazwy typu XFGRRTEF___DGFF, R2D2 czy Michal_Wisnewski.
- Jeśli twój język programowania pozwala na identyfikatory Unicode, to dobrym pomysłem będzie gżegżółka, zerknij też w tablice znaków dla gruzińskiego i chińskiego tradycyjnego.
- Jeśli dane są w jakiś sposób ze sobą związane, to zamiast tworzenia tablic, zastosuj zmienne o podobnych nazwach: aaaa, aaab, aaac...
- Używając makrodefinicji, zmiennych tekstowych i szablonów emuluj różne języki programowania.
- Operacje matematyczne wyrażaj w odwrotnej notacji polskiej.
- Logikę osadzaj w wyjątkach.
- Nie używaj iteracji. Rekurencja uczyni twój program bardziej zagmatwanym.
- Osadzaj język w języku.
- Korzystaj z Basha. Większość ludzi go nie rozumie, lub wydaje im się, że go rozumieją.
- Stosuj paradygmat funkcyjny i na potęgę używaj domknięć.
- Jeżeli program nie działa, zmień nazwy wszystkich zmiennych na inne, najlepiej zgodne z modną w przypadku danego języka konwencją.
- Jeżeli dalej nie działa – skasuj wszystkie komentarze i wpisz je na nowo w innych miejscach.
- Jeżeli to nie pomoże, wyłącz i włącz ponownie kompilator.
- Jeżeli przed rozpoczęciem kodowania sporządziłeś jakieś plany – wyrzuć je.
- Po godzinach spędzonych na analizie kodu i powtarzaniu przecież to jest dobrze i powinno działać! zastanów się i sprawdź, czy plik instalacyjny twojego kompilatora nie jest uszkodzony. Być może twój komputer stoi za blisko innego urządzenia elektrycznego, i pole magnetyczne zakłóca działanie procesora komputera, przez co twój program się zawiesza.
- W ostateczności skonsultuj się z astrologiem.
Prawdy o programach
- Pisanie kodu jest rozkoszą. Kompilacja kodu jest jak zimny prysznic. Pielęgnacja kodu jest piekłem.
- Pełną, spójną i poprawną dokumentację mają tylko programy bezużyteczne.
- Złożoność programu rośnie do momentu przekroczenia zdolności programisty ten program konserwującego.
Prawdy o programistach
- Bluzganie to jedyny język opanowany w pełni przez wszystkich programistów.
Jak zacząć?
Najlepiej nie zaczynać.
Zastosowania
Prawdziwi programiści piszą programy nie posiadające wartości użytkowej, a jedynie roztrząsające pewne problemy teoretyczne, których rozwiązanie niczemu nie służy. Interesuje ich głównie problematyka:
- Co by się stało, gdyby czterech twoich kolegów zakaziło się grypą: czy cała populacja może wyginąć?
- Rozwiązywania układów różniczkowych wysokich rzędów.
- Czy za pomocą dwóch stosów talerzy da się symulować kolejkę sklepową?
Źli programiści używają programowania aby:
- Zaspamować YouTube.
- Zaspamować twoją skrzynkę pocztową.
- Zaspamować cały Internet.
- Zainstalować ci programy, które robią złe rzeczy, w sposób widoczny jedynie dla informatyka albo i niewidoczny w ogóle.
- Zainfekować twój komputer, doprowadzając go do stanu, w którym potrzebne będzie wezwanie informatyka.
Dobrzy programiści, walczący ze złymi, używają programowania aby:
- Napisać program antywirusowy, który zajmie całą pamięć twojego komputera.
- Napisać firewall, który zablokuje ci dostęp do internetu.