Jak wy rozpoczynacie pisanie programu

Jak wy rozpoczynacie pisanie programu
pol90
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:1181
0

Jak wy rozpoczynacie pisanie programu czy robicie najpierw model konceptualny programu czy od razu piszecie kod, ja wiem, że powinno się najpierw projektować model konceptualny programu jednak tego nie robię jako nie potrafię, a jak wy robicie model konceptualny to w czym ?

MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:dzień
  • Postów:644
0

"model konceptualny" dot. bazy danych więc jak program nie korzysta z bazy to go nie trzeba robić.

pol90
Ale nam dr. mówił na 1 roku studiów gdzie jeszcze nie mieliśmy bazy danych, że trzeba robić model konceptualny czyli relacje pomiędzy poszczególnymi funkcjami i klasami.
Patryk27
@pol90: relacja = tabela (https://pl.wikipedia.org/wiki/Model_relacyjny). To, o czym mówisz, nazywa się związek.
Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
11

Ja zawsze piszę System.out.println("Hello World"); a potem już nic, ponieważ zastanawiam się w którym frameworku JS zrobić front.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 1x, ostatnio: Haskell
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0

Czasami rysuję sobie jakiś wstępny diagram powiązań między modułami, czasami schodzę niżej i robię to samo dla klas.
A czasami nie.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0

Pisze notatke co ma ten program robic. Np. w Markdown.

GN
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad rok
  • Postów:274
0

Ja tam lubię sobie rozpisać wszystko na kartce papieru - jakiś wstępny koncept, który prawie zawsze ulega zmianie już na tej kartce papieru.


“Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.” ~ Eric S. Raymond
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

kod się jakoś sam układa, za to na kartce rozrysowuje sobie projekt interfejsu, bo to jest zawsze problematyczne.


It's All About the Game.
edytowany 1x, ostatnio: mr_jaro
czysteskarpety
czysteskarpety
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
1
mr_jaro napisał(a):

kod się jakoś sam układa, za to na kartce rozrysowuje sobie projekt interfejsu, bo to jest zawsze problematyczne.

Jeśli chodzi o rozrysowanie na szybko to ja używam tego https://www.draw.io


mr_jaro
wiem, że sa takie narzedzia, ale jakoś prościej mi otworzyć zeszyt, rozrysować sobie koncepcje i na niej bazować
A9
  • Rejestracja:ponad 8 lat
  • Ostatnio:9 dni
  • Postów:408
0

Ja wypisuję sobie w punktach co ma robić program i jak. W jednym przypadku napisałem na kartce schemat blokowy pokazujący działanie pewnej najważniejszej funkcji w programie, ponieważ po prostu nie mogłem sobie dokładnie ogarnąć "w głowie" jak ma to działać.

AC
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:33
0
0

Jak piszę dla siebie, to przeważnie są to proste programiki/toole i uprawiam radosną twórczość, i później najwyżej poprawiam/przepisuję.

Jak mam napisać coś bardziej złożonego to już się zastanawiam co i jak, i zawsze mam zapisanych kilka kartek A4.

1

ja zaczynam od throw new NotImplementedException();

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:18 dni
0

Niczego nie rozpisuję. Od razu kod. Tyle tylko że zaczynam od minimalnej wartościowej funkcjonalności. Przeważnie na początku jako prototyp w jakimś szybkim język, przeważnie bash lub awk. Potem iteracyjnie, krok po kroku. Gdy przyjdzie pora można zakodować coś w bardziej wydajnym języku jeśli zachodzi konieczność. Może też się zdarzyć, że na przykład po drodzę zmodyfikuję kod któregoś programu składowego, bo nie pasuje do oczekiwań :)


edytowany 3x, ostatnio: elwis
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 3 godziny
  • Postów:8410
0

projektować model konceptualny programu jednak tego nie robię jako nie potrafię, a jak wy robicie model konceptualny to

Dla mnie bardzo ważne jest mieć pewien model mentalny w głowie, tzn. rozumieć swój program na głębszym poziomie, umieć wyobrazić sobie, jak działają jego poszczególne części. Wtedy można sobie spokojnie rozplanować poszczególne moduły, sposób w jaki się między sobą komunikują, jak będzie wyglądać format danych itp. Wyobraźnia przede wszystkim i ogarnianie tego umysłem.

Jeśli wyobraźnia nie wystarcza, to są jeszcze kartki papieru, narzędzia do diagramów (np. draw.io), czy inne tego typu rzeczy - kiedyś nawet w Blenderze (programie do robienia 3D) zrobiłem wizualizację architektury programu.

Czasem też warto stworzyć na szybko działający prototyp programu, który też pomoże odpowiedzieć na wiele pytań i wykryć wiele problemów (wiele problemów po prostu nie jest widocznych, zanim człowiek nie ruszy d**y i niezaprogramuje czegoś w praktyce).

Jak wy rozpoczynacie pisanie programu czy robicie najpierw model konceptualny programu czy od razu piszecie kod

Przy porzuceniu waterfalla okazuje się, że wcale nie jest aż takie ważne od czego się zacznie, skoro i tak w następnej iteracji można zacząć od czegoś innego.

(czasem przyjmuje się, że 1 iteracja = 1 sprint, ale dla mnie to zbyt sztywne pojmowanie koncepcji iteracji. Sprint to kupa czasu, a dla mnie już w ciągu dnia powinna być widoczna iteracyjność, inaczej mamy do czynienia z waterfallem na mniejszą skalę).

Ilustrując - mogę np. siąść do kompa i nie myśląc i napisać od razu kod (taki na brudno, taki prototyp). Ale to mnie nie wiąże specjalnie, ponieważ np. po 2 godzinach, mogę odejść od kompa i zacząć myśleć nad rozwiązaniem. A potem znowu do kodu, może będę kontynuował to, co napisałem, może będę pisał od nowa (bo po przemyśleniu się okaże, że istnieje lepszy sposób na napisanie czegoś).

I efekt jest taki, że na koniec dnia* coś tam zrobię, jakiś progres zostanie osiągnięty, zarówno jakiś kodzik napisany, jak i moja wiedza o projekcie ("model mentalny") się powiększy. Jednak czy będzie miało znaczenie, czy zacząłem od pisania kodu, czy zacząłem od projektowania, jeśli wszystko się przeplata i nic nie jest definitywne (raz napisany kod można przecież skasować czy zrefaktoryzować, raz rozplanowaną rzecz można zawsze zmienić, jeśli w trakcie implementacji okazuje się, że plan był zły).

* śmieszy mnie popularność tej kalki z angielskiego, bo to jakby po angielsku mówić "thank you from the mountain", ale tutaj akurat pasuje, bo faktycznie chodzi o koniec dnia.


edytowany 3x, ostatnio: LukeJL
cerrato
@LukeJL "śmieszy mnie popularność tej kalki z angielskiego" - a czemu cię śmieszy? Moim zdaniem śmieszna jest "mapa drogowa" (ang. roadmap w znaczeniu plan rozwoju, harmonogram), natomiast "koniec dnia" to koniec dnia i nieważne, czy w Polsce, czy w Anglii. Moim zdaniem to ma sens - czy możesz wyjaśnić, co Ci nie pasuje w tym zwrocie?
LukeJL
Problem tylko, że po angielsku jest to idiom, który oznacza mniej więcej tyle co "koniec końców" https://www.merriam-webster.com/dictionary/at%20the%20end%20of%20the%20day po polsku też jest to kalka, którą wiele ludzi używa. Do tej pory myślałem, że ironicznie, ale od niedawna mam wrażenie, że nawet sobie nie zdają sprawy z obcego pochodzenia tego zwrotu.
WeiXiao
@LukeJL TIL(:D), dzięki.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12167
0

Z reguły pomysł na daną funkcję siedzi i kwitnie w głowie, ale często pomagam sobie rozpiskami na kartkach (gdy jest więcej informacji do zapamiętania lub gdy problem jest nieco bardziej skomplikowany).


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
0

Ja piszę program, dzięki któremu wiem jak ten program ma wyglądać.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
2
LukeJL napisał(a):

Przy porzuceniu waterfalla okazuje się, że wcale nie jest aż takie ważne od czego się zacznie, skoro i tak w następnej iteracji można zacząć od czegoś innego.

Agile w praktyce - nie wiemy co robimy, nie wiemy po co, nie wiemy czy będą warstwy, ile będzie modułów, czy będzie baza danych, czy relacyjna, czy obiektowa, czy z czymś się trzeba integrować, nic nie wiemy tylko siedzimy i napieprzamy w klawiaturę jak małpki. :D

edytowany 1x, ostatnio: somekind
LukeJL
jeśli chodzi o mnie akurat, to akurat pisałem w poście przeciwko bezmyślnemu napieprzaniu w klawiaturę ;)
somekind
I napisałeś, że nieważne od czego się zaczyna... jak Leszek Miller normalnie. :P
RK
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:8
1

Zdecydowanie od zrobienia dobrej kawy ;)

nalik
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:1039
0
  1. Spisuje co ma robić program.
  2. Robię poglądowy szkic architektury, przepływu danych, etc. ( jak i w czym? ołówkiem w zeszycie :) )
  3. Zaczynam kodowanie. Czasami wracam do punktu 2.
edytowany 1x, ostatnio: nalik
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:około 3 godziny
  • Postów:8410
0

@somekind

I napisałeś, że nieważne od czego się zaczyna... jak Leszek Miller normalnie.

Ale ja pisałem w kontekście wielu dni. Każdy dzień to rozpoczęcie czegoś na nowo. Więc nie ważne, czy jednego dnia zacznę od kodowania, czy od myślenia, bo i tak będzie tu i myślenie i kodowanie.

Ale jeśli miałbym powiedzieć od czego zaczynam projekt tak od samego początku, to pewnie od zrozumienia problemu, bo to jest najważniejsze, żeby rozumieć problem, co jest do zrobienia, jak to zrobić itp.

Tylko, że w praktyce proces zrozumienia u mnie to nie jest coś na zasadzie "siedzę i myślę nad każdym szczegółem, a potem mam wszystko ustalone i tylko napieprzam w klawiaturę". To by się nie sprawdziło i tak, ponieważ i tak każdy najdoskonalszy plan idzie w p...u wcześniej czy później. Jak czegoś nigdy nie robiłem, to zwykle nie mam na tyle dużej wiedzy o problemie, żeby dobrze zaprojektować rozwiązanie (mało kto ma).

Raczej jest tak, że robię sobie w głowie wstępny plan, ale potem jednak siedzę i koduję - np. może robię proof of concept, czy jakiś prototyp, może jeden z modułów, może robię szkielet aplikacji.

Potem jednak znowu się zatrzymuję i patrzę na to, co zrobiłem. Być może pierwsze założenia były złe. Może trzeba będzie dalej przemyśleć problem.

Wolę więc się posuwać powoli, ostrożnie. Planując każdy krok i mieć przemyślane wszystko, co zakoduję (więc myślenie i kodowanie będą się przeplatać), niż po prostu wymyślić sobie jakiś naiwny skomplikowany plan raz a dobrze i go tylko realizować wierząc, że pierwszy plan był dobry (bo zwykle nie jest).


somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0
LukeJL napisał(a):

Więc nie ważne, czy jednego dnia zacznę od kodowania, czy od myślenia

No tak, niektórym jest wszystko jedno ;)

Wolę więc się posuwać powoli, ostrożnie. Planując każdy krok i mieć przemyślane wszystko, co zakoduję (więc myślenie i kodowanie będą się przeplatać), niż po prostu wymyślić sobie jakiś naiwny skomplikowany plan raz a dobrze i go tylko realizować wierząc, że pierwszy plan był dobry (bo zwykle nie jest).

Nie chodzi o to, żeby zaprojektować każdą metodę w aplikacji od razu, a potem zacząć implementować, tylko o zaprojektowanie sensownego kawałka pracy. Dzień w dzień może to być zestaw klas czy metod do napisania na dany dzień, ale na początku projektu, siadając przed pustym IDE, trzeba mieć chociaż zgrubny plan jakichś modułów i warstw oraz interakcji ze światem zewnętrznym.
Brak tego wygląda na brak wiedzy o tym, co się ma zamiar zrobić.

edytowany 1x, ostatnio: somekind
KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:około 16 godzin
  • Postów:2964
2
  1. Jeśli wiem co i jak napisać, to siadam i piszę.
  2. Jeśli nie wiem, to myślę / pytam / gadam z ludźmi, aż będę wiedział. A potem goto 1.

http://programming-motherfucker.com

W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 8 godzin
  • Postów:3554
0

Bardzo dużo zależy od kontekstu, tj. im większy projekt tym ważniejsza jest robota na starcie i projektuje się na wyższym poziomie.

Zazwyczaj jednak to jest tak, że trzeba doklepać jakiś kawałek do czegoś istniejącego, wtedy po prostu określam, w jaki sposób coś ma współdziałać z resztą świata.

katelx
  • Rejestracja:prawie 10 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Hong Kong
2

zwykle zaczynam od pograzenia sie na pare chwil w infantylnych marzeniach jak to bedzie fajnie dzialac i od razu zabieram sie do kodowania.
po okolo tygodniu wywalam i startuje od nowa, z wiedza czego mam nie robic :)

pol90
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:1181
0

W sumie ja źle zaczynam pisanie programu bo jeszcze za nim nie mam ustalonej kategorii co ma robić program to ja już pisze kod.

Julian_
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:1703
0

przełożony: siadaj i pisz
programista: ale co mam pisać?
przełożony: pisz, pisz, potem ci powiem.

vpiotr
u mnie w ostatnim pkt. było tak: zobacz w agendzie wczorajszego spotkania (a tam jedno zdanie hasłowo).
Shalom
@Julian_: a nie zaczynasz od modlitwy do św. Judy Tadeusza? ;)
xxx_xx_x
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 15 godzin
  • Postów:365
0

Prywatne projekty rozrysowuje w umlu w stylu DDD. Jak mam wszystko rozrysowane to staram się pisać testy BDD, następnie koduje modele.
Jak już wszystko pod spodem działa jak należy i przechodzi testy to zaczynam tworzyć UI.
W pracy staram się robić podobnie, ale zwykle najpierw tworze minimum testów, i dopisuje je stopniowo. Niestety w pracy nie zawsze mamy od razu wszystkie wymagania wiec podejście jest bardziej agile ;)

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)