Jakbym chciał zostać programistą...

mikioli

Well-Known Member
2 770
5 377
Pierwszy przykład z brzegu - założenie folderów w formacie /YYYY-MM-DD/ na rok wprzód, bo debile administratorzy nie byli tego w stanie ogarnąć, a nasza aplikacja wymagała istnienia takich folderów.
Dużo też możesz się nauczyć, jeśli na przykład znajdziesz jakieś dane w internecie, które chciałbyś sobie upakować w swoją bazę danych - chociaż tu z góry uprzedzam, że o wiele bardziej przyjazne będzie ruby, ze względu na więcej możliwości integracji z np. phantomjsem. Ogólnie jak stawiasz piwo a jestem w posen to można przysiąśc ;)

A na marginesie - jestem jednak zwolennikiem uczenia się podstaw programowania w C. Nie dlatego, że 'śmiertelnicy nie przetrwają', po prostu przechodząc warstwę abstrakcji wyżej (i znając struktury danych) człowiek bardziej ogarnia, jaki narzut powoduje jakie działanie.
Nie sądzę. Tym bardziej jak jedziesz potem językami niekompilowanymi tylko interpretowanymi...
 

Brehon

Well-Known Member
555
1 483
że o wiele bardziej przyjazne będzie ruby, ze względu na więcej możliwości integracji z np. phantomjsem.

Pythona też można zintegrować z phantomjs, przez Selenium :) a znajomość Selenium jest raczej przydatna

Tylko zabawa w scrapownie stron to raczej nie jest dobry pomysł na początek, bo wymaga właśnie znajomości bardziej zaawansowanych narzędzi, plus coś tam z HTML, a jak jeszcze chce się scrapować strony z dynamicznie generowanym contentem to już w ogóle to może krwi napsuć

Na początek najlepiej bawić się w czystym języku, jaki by nie był, ewentualnie z wykorzystaniem jakiś podstawowych bibliotek
 
Ostatnia edycja:

viyol

Member
62
46
Ja programuje 3 lata w PHP (Symfony, wzorce projektowe ogarniam), ale czuje że PHP zaczyna mnie nudzić Myślałem, żeby iść w stronę JS (Angular, Veujs itd). Co o Tym sądzicie? Może python?
 

Brehon

Well-Known Member
555
1 483
Myślałem, żeby iść w stronę JS (Angular, Veujs itd)
Jak chcesz iść w front, to teraz na czasie jest raczej React. Próbowałem w front, ale jednak dla mnie JS to rak :). I Angulara i Reacta trochę się uczyłem, i jednak React się wydawał przystępniejszy. Może kiedyś do tego wrócę, bo to jednak przydatne, ale nie bardzo mam na to ochotę.
 

kompowiec

freetard
2 567
2 622
To, że jest to stara rzecz, nie zmienia faktu, że porusza podstawowe tematy, które ulegają przedawnieniu. Owszem, pewne algorytmy tam opisywane nie mają już zastosowania, ale podstawy pozostają. Owszem Wirth posługuje się Pascalem w przykładach, ale tym bardziej polecam to, aby poznać zasadę działania poszczególnych algorytmów i umieć je zaimplementować samodzielnie już w wybranym języku (tu Pythonie), a nie przeklepać je z książki.

Zapewne są nowsze dzieła o podobnej treści, ale nie zauważyłem, abyś polecił coś konkretnego, co mogłoby z tym konkurować, więc prosiłbym, abyś więcej nie zabierał się za ocenianie przydatności czegoś, czego nie znasz.
Bo jeśli chodzi o pythona to brakuje jakichkolwiek polskojęzycznych publikacji, i po za tym co Brehon dodał (z wikibooks, które jest po prostu tłumaczeniem anglojęzycznej wersji) nie ma nic wartego uwagi. Ale w linku do github który podałem jest mnóstwo tutoriali do innych języków, nie tylko pythona.
 

tosiabunio

Grand Master Architect
Członek Załogi
6 980
15 141
Ale @tolep zainteresowany jest generalnie programowaniem, czyli umiejętnością tworzenia algorytmów i ich późniejszej realizacji w różnych językach programowania. A do tego potrzebne są podstawy właśnie algorytmów, a nauka samego języka to kwestia wtórna i idzie raczej łatwo (ja programowałem w Pascalu, Basicu, C, C++, Fortranie, Lua, Pythonie oraz assemblerach 6502, 8080, 8086). Można wytłuc tutoriale różnych języków, ale bez podstaw będziemy lekko kulawi.
 

GAZDA

EL GAZDA
7 687
11 143
mimo że napisałem już działające programy w basicu, to książka o architekturze 6502 dopiero spowodowała że zajarzyłem czym w ogóle jest taki program i jakie procesy powoduje w procesorze
a te procesy, zbiór działań matematycznych w sumie, sie nie zmieniły, w procesorze nadal dzieje sie to samo

jeśli juz do tego pytona podchodzisz to jest jeszcze taka ksiażka z serii head first, są tam podstawy programowania na przykładzie pythona, poszukaj se w necie, oczywiście jak ci nei przeszkadza ze jest po angielsku, ale jest dużo obrazków jakby co :)
aha a learners guide to programming using python czy jakoś tak sie nazywa, w sumie mam gdzieś nawet pdf'a musiałbym poszukać, może by sie tolepowi przydało
co do rubiego to też kiedyś na szaucie zapodałem fajny podręcznik, ale zapomniałem jak sie nazywał, był w formie komiksu i w sumie wtedy przeczytałem ino te historyjki bo były śmiszne, ale rubiego sie nie nauczyłem :/ z tego co wiem to programisci rubiego zarabiają lepszą kase niż ci od pythona
 
Ostatnia edycja:

NoahWatson

Well-Known Member
1 297
3 200
A na marginesie - jestem jednak zwolennikiem uczenia się podstaw programowania w C. Nie dlatego, że 'śmiertelnicy nie przetrwają', po prostu przechodząc warstwę abstrakcji wyżej (i znając struktury danych) człowiek bardziej ogarnia, jaki narzut powoduje jakie działanie.
Przecież w innych językach programowania też można implementować struktury i algorytmy danych od podstaw. Dla celów edukacyjnych można sobie napisać w Javie np. własną implementację Set-ów.
Chyba, że chodzi o narzut związany z warstwami abstrakcji, ale by być tego rzeczywiście świadomym to oprócz znania C, trzeba by się znać jeszcze na kompilatorach, środowiskach uruchomieniowych wykonujących kod pośredni. A nawet jeśli się już ktoś nauczy, to w zasadzie i tak nie powinien robić optymalizacji kosztem czytelności i jakości kodu, oprócz sytuacji gdzie rzeczywiście zajdzie taka potrzeba.
http://www.wou.edu/las/cs/csclasses/cs161/Lectures/rulesofthumb.html
4) Efficiency vs. code clarity (chasing false efficiency)

Never sacrifice clarity for some perceived efficiency. One of the biggest mistakes that new programmers make is tweaking code to remove a couple of textual lines of high level code and replace it with a much more complex single line of code. This is commonly called "bit twiddling". Always remember that most compilers optimize code. Further, there is a corollary to the 90-90 rule known as the "Pareto Principle":

In computer science, the Pareto principle can be applied to resource optimization by observing that 80% of the resources are typically used by 20% of the operations. In software engineering, it is often a better approximation that 90% of the execution time of a computer program is spent executing 10% of the code (known as the 90/10 law in this context).

Given this knowledge, most "bit twiddling" will have no perceivable impact on the runtime of most programs as most of them will likely be in the 90% of code that has little impact on the run-time of the program. The real efficiency gains come from changing the order of complexity of the algorithm, such as changing from O(N^2) to O(NlogN) complexity. Keep your code clearly and cleanly written and it will usually be reasonably efficient. Occasionally, after the program is written and tested, it might prove to be slower than the problem specification calls for. On the these few occasions, and only after you have first optimized the complexity of the algorithm, then instrument or profile the code and find the 10% or less of the code that PROVABLY causes slow runtime and then optimize that small code segment.

Comments on this topic from well respected computer scientists and software engineers:

"More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason — including blind stupidity." — W.A. Wulf

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%. A good programmer will not be lulled into complacency by such reasoning, he will be wise to look carefully at the critical code; but only after that code has been identified" — Donald Knuth

"Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you have proven that's where the bottleneck is." — Rob Pike

"The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet." — Michael A. Jackson
 

Norden

Well-Known Member
723
900
@rawpra
Nie o to chodzi. Można programować nie znając wyżej wymienionych, ale jeżeli ktoś ma zamiar programować czysto hobbystycznie, poznawczo to jednak warto zacząć od podstaw, źródła danej dziedziny (paradoksalnie to jest trudniejsze). Zawodowo to samo, jeżeli ktoś ma zamiar wybić się ponad zwykłego klikacza / klepacza kodu.
 

Mad.lock

barbarzyńsko-pogański stratego-decentralizm
5 148
5 106
Jeśli chcesz wiedzieć coś o programowaniu, to przerób kursy różnych języków. Jeśli się zatniesz w jednym, czegoś nie będziesz w stanie zrozumieć, olej i zacznij inny kurs w innym języku, zawsze możesz wrócić do poprzedniego, gdy będziesz rozumiał więcej.

Co można robić przy pomocy programowania? Generować tekst, przerabiać go, wykonywać zautomatyzowane operacje systemowe (coś z plikami), logować się na strony i wyszukiwać tam różne rzeczy, klikać, wypełniać formularze, możesz robić różne dopasowane do Twoich potrzeb kalkulatory.
 

Finis

Anarcho-individual
439
1 922
Zaraz tam chłopak.... Zgromadziłem już dość materiału, teraz tylko znaleźć czas i ochotę by sie za to zabrać
Radzę się pośpieszyć. Za rok lub dwa może się okazać, że programy będą już pisane przez same maszyny. AI Rulez ;)

BTW - "programowanie" to nie tylko tworzenie jakiś programów/aplikacji od zera. Wszystko idzie fajnie, pięknie jak się robi własny projekcik. Ale jak się trafi do aplikacji komercyjnej, gdzie trzeba głównie poprawiać błędy po swoich poprzednikach i patrzeć na ten sam kod przez rok czasu (lub nawet więcej), to niektórym może się to nie spodobać.

Teraz o problemach... Wuj z tym, że widać, iż coś źle działa lub nie działa. To jeszcze mały pikuś. "Zabawa" zaczyna się np. gdy funkcjonalnie jest wszystko ok, ale aplikacja nie jest stabilna, są problemy z wydajnością i zużywaniem zasobów (pamięć, hdd, szybkość działania). Także w myśl chińskiego przysłowia: "Uważaj, o co prosisz".
 
Ostatnia edycja:

NoahWatson

Well-Known Member
1 297
3 200
'Trochę' dziwny: Haskell, Erlang, Lisp (+ Clojure, + Racket), Assembly... chłopak się potnie jak będzie próbował to przerobić.
Pytanie: do kogo był skierowany ten post Tosi. Osób zainteresowanych programowaniem na tym forum jest więcej niż tylko tolep i niektórzy mają spore sukcesy w nauce programowania takie jak np dostanie pracy developera.
 
Do góry Bottom