Co powinienem przestudiować?

4

Witajcie,
od lipca z przerwami szukam jak dobić się do wiedzy, której szukam i ciągle nic, nadal Komputer wydaje mi się wielką magią.Było też kilka wątków moich na ten temat, ale chciałbym tutaj domknąć temat na amen.

Swoją przygodę w IT rozpocząłem z myślą o dobrej pracy i w ogóle pracy. Skończyło się na tym, że rąbię całymi dniami nawet nie czyste CRUDy, bo jakaś logika też jest, ale to jest po prostu walenie JSONami w koło Macieju od klienta do serwera i nazad... Używam Springa, Angulara, Mongo, baz SQL i różnych pierdół lepszych bądź gorszych, które co rusz się pojawiają nowe.
Dwa lata temu o tej porze, nawet w snach nie marzyłem o takiej pracy i, że w ogóle będę tworzył software.

I wiecie co? Jestem nie szczęśliwy i nie mogę zaznać spokoju... Nie uważam się za programistę, tylko za gościa, który zna wierzchołek góry lodowej i SKŁADA (a nie programuje) gotowe komponenty. Przecież ludzie... to nie jest programowanie (przynajmniej tak myślę).
W pracy otaczają mnie ludzie, którzy są seniorami i robią to samo, składają Springa z jakąś DB, do tego Angular albo inny Android i heja.

Fajnie by było zrobić coś innego, zrozumieć jak działa komputer i popisać coś niskopoziomowego.
Zacząłem się uczyć ANSI C i jak na razie przerobiłem z 200 stron, ale to są rzeczy w sumie które już nam na wylot z modyfikacjami ewentualnie, także muszę jeszcze poczekać.

Miał ktoś tak? Może ktoś powiedzieć jak ugasił w sobie to pragnienie wiedzy?
Czuję się jak koleś, który wkręca skrzynię biegów do samochodu i tyle, a chciałbym pójść do kopalni, wykopać rudę żelaza, przetopić ją, wykuć elementy i samemu je składać.

To wszystko jest zabawne, bo wielkie korporacje jak ORACLE, Microsoft czy Google dają nam jakiś gotowy software, bez którego by nie było niczego, a Polskie programowanie z dnia na dzień przestałoby istnieć, bo pewnie ludzi zdolnych do napisania OS, maszyny wirtualnej czy środowiska GUI jest (strzelam) 5% spośród wszystkich programistów, a reszta to mili ludzie, którzy podniecają się Clean Code i SOLIDEM (nie ujmuję tym zagadnieniom).

Chciałem zacząć coś niskopoziomowego działającego na sieci. Potrzebuję jakiś projekt, który przeczytam i nagle mnie olśni, jak od Hello Worlda przejdę do własnego programu, którym skomunikuję dwa komputery przez sieć. Od zera, from scratch, bez żadnych bibliotek, wszystko sam.
Wziąłem cURL, ale trochę jednak za trudno dla mnie na ten moment. Też nie chcę już się zanudzać jakimiś biznesowymi aplikacjami.

Może https://github.com/madnight/nano sobie zacznę analizować, tak lubię się uczyć.

Wskazówki, sugestie?

A może myślicie, żeby odpuścić, bo i tak świat ITmagii nie odsłoni nigdy przede mną tajemnicy? :D

0

Zmień pracę na ciekawszą? :)

0

@Shalom: ja nic nie umiem oprócz CRUDów dla przysłowiowego "ZUSU" :D

0

tez miewam podobne dylematy, dlatego zaczynam czytac o winapi32 i ogolnie o hackowaniu kernela windowsowskiego, bo takie powolne zdobywanie "fortecy" jaką jest zamknięty i niedostępny soft microsoftu wydaje sie byc bardzo sexi :) shellcoder handbook
mozesz sie tez pouczyc assemblera, programming from ground up to calkiem niezla ksiazka, uzywa standardowego asm linuxa wiec nie powinienes miec problemow z postawieniem "srodowiska" :)
bardziej zwiazane z praca: czesto frameworki/narzedzia jakiegos jezyka sa napisane w tym jezyku i maja kod powszechnie dostepny, wiec mozesz poczytac githuba, issues lub dokumentacje jak nie wiesz jak cos dziala "od srodka" :)

1

Schodź coraz niżej w abstrakcji ale jak dojdziesz do bitów to już nic niżej nie znajdziesz a na bitach to pisano... ja wiem... pewnie ze 30 lat temu, dziś użycie asm jest od święta a najniżej jak się schodzi to do C by pisać kod pod microkontrolery, ale nawet i tam już zaczynamy dostawać abstrakcje. Czas to pieniądz, to co dziś piszesz i uważasz, że nudne to pisząc na najniższym poziomie byś... cóż nie wiem czy by ci życia starczyło by to napisać.

0

@lambdadziara: dzięki, książka jest w PDFie ogólnodostępna, więc sobie ją przeczytam z nadzieją, że krok po kroku zrozumiem komputry

@mr_jaro: dzięki za wypowiedź, ale mi nie do końca chodzi o to, żeby jakieś REST API w Assemblerze pisać. Chciałbym tylko zrozumieć to wszystko, jak od bitów i bajtów można zagrać w Wiedźmina. Chcę tylko wiedzieć jak.

Poza tym myślisz, że jakby Linus Torvalds miał za zadanie napisać apkę w Angularze, to nie zrobiłby tego?

1

w sumie troche mnie to trapi, wiec zapytam przy okazji... dlaczego C nie ma "breaking change" i mozna sie go uczyc z Kerrighana z lat 80, a np frameworki JS sie zmieniają co pare miesiecy i kilkumiesieczny kod przestaje dzialac? Najlslynniejszy przyklad to chyba: print vs print() w pythonie, co za roznica czy print to funkcja czy statement? albo mysql vs mysqli w php 7, Dajcie wiecej przykladow!

2

@NeutrinoSpinZero myślę że linus tak samo by napisał w angularze jak ja siadam i piszę w c czy asm. Żaden problem tylko, że z racji doświadczenia w tej technologii wyjdzie dłużej gorzej. Tutaj dochodzimy do sedna, że prawdziwy programista a nie klepacz napisze kod we wszystkim. Sam robie sporo crudów, angulari, vue, ale jak mam taka fanaberie to sobie coś i na arduino pomodze bo tak, bo fajnie jest czasem pozarządzać pamięcią.

0

Zanim rzucisz się na oferty pracy z gatunku embedded spróbuj może najpierw coś porobić w tym temacie w domu samemu.
Kilka przydatnych stron:
https://hackaday.io/
https://projects.raspberrypi.org/en/
https://www.instructables.com/id/Raspberry-Pi-Projects/

0

A próbowałeś wyjechać z Polski?

Mnie czasem nachodzą takie myśli, żeby spróbować. Skoro Polska to dla... wielu? większości? wszystkich? Mexico of Europe, drugie Indie i generalnie jakieś zad**ie na końcu świata, do którego wysyła się to, czego na miejscu nikt nie będzie chciał robić, ale na czym wymiękną / wymiękli już spece z Bangalore... no to może trzeba zebrać manatki i szukać ciekawej pracy gdzie indziej ;)

W Polsce mogę sobie zmienić pracę i co? Zamiast dostawać po głowie od jakiegoś Jasia Fasoli będę dostawać przez łeb od Helmuta, Jacquesa albo Olsena. Zamiast klepać semi-enterprise FizzBuzz będzie trzeba rzeźbić w semi-enterprise BuzzFizz. Spróbuję szczęścia w jeszcze jednym stacku (już piątym! choć na czwarty musiałem przejść nie do końca z własnego wyboru), znowu wyzeruję sobie HR-owy licznik dupogodzin expa i co na tym zyskam? Prawdopodobnie tylko to, że znów będę mógł przechodzić questa "zostać programistą 3k", bo projekt znowu okaże się jeśli nie FizzBuzz, to jakimś innym FooBar z formularzami, żonglowaniem tabelkami, dyskusjami o tym po czym użytkownicy chcą filtrować itd. :D

1

Można napisać własny system operacyjny, https://wiki.osdev.org/Main_Page zawiera wiele pomocnych na starcie informacji, a pisząc OS można się wiele nauczyć jak to działa na najniższym poziomie :)

0
NeutrinoSpinZero napisał(a):

@mr_jaro: dzięki za wypowiedź, ale mi nie do końca chodzi o to, żeby jakieś REST API w Assemblerze pisać. Chciałbym tylko zrozumieć to wszystko, jak od bitów i bajtów można zagrać w Wiedźmina. Chcę tylko wiedzieć jak.

A mógłbyś wyjaśnić czy masz jakieś wykształcenie kierunkowe? Bo nie wiem czy dobrze rozumiem - czy chcesz się nauczyć czegoś bardziej niskopoziomowego, czy raczej brakuje ci wiedzy przekrojowej tj. architektury komputerów, konstrukcji i sposobu działania systemu operacyjnego, modelu działania sieci czy tego typu rzeczy?

0

@superdurszlak: Twoje zdanie ostatnie jest mistrzowskie :D Jutro też mnie czeka rozmowa, gdzie biznes chce mieć przycisk do blokady konta użytkownika ^^ I płomienne 3godzinne dyskusje :D
A mógłbym sobie coś poczytać i poprogramować.

2

To może idź na informatykę? ;) Pięć lat wiedzy ciężko będzie upchnąć w weekendowe czytanie w wygodnym fotelu. Choć jak sobie przypomnę ile zbędnych rzeczy się uczyłem no to może wyjdą ze 3 lata. A na serio, jeśli czujesz taką potrzebę, to warto zainteresować się klasycznymi pozycjami w tym zakresie:

Richard Stevens - Programowanie zastosowań sieciowych w systemie Unix
Silberschatz A., Peterson J. P., Galvin P.B., Podstawy systemów operacyjnych

Szczególnie ta druga może ci sporo wyjaśnić; zasady działania systemu wielowątkowego, synchronizacja procesów, zarządzanie pamięcią.
Są to dość stare książki, ale jak pisałeś - brak ci podstaw. A Unix to podstawa wszystkiego ;)

Co do architektury komputerów, to w tej chwili nic mi nie przychodzi do głowy. My się uczyliśmy ze slajdów ;) a architekturę procesora 8086 to wałkowaliśmy przez pół semestru.
Może znajdziesz jakieś materiały uczelniane, które przynajmniej naświetlą jakiś obraz - Google: architektura komputerów skrypt

0

@robertos7778: Dzięki za drogowskaz. O to mi właśnie chodziło. Tą książkę o systemach operacyjnych już kiedyś trochę ruszyłem, ale odpuściłem, a później wrócę, bo właśnie zacząłem czytać Programming Ground Up.
Tyle, że w sumie rozumiem podstawy, wydaje mi się to całkiem logiczne i poukładane, jak są przetwarzane dane z pamięci przez CPU itd. Jak działa kod maszynowy, assembly language i języki wysokopoziomowe, ale nie jestem w stanie pojąć tego przeskoku od zer i jedynek do np. pięknych aplikacji w JS, albo gier w C++.

0
NeutrinoSpinZero napisał(a): ale nie jestem w stanie pojąć tego przeskoku od zer i jedynek do np. pięknych aplikacji w JS, albo gier w C++.

Pod spodem to nadal 0 i 1, tylko my widzimy je w wyższej abstrakcji. js to inne podejście bo ma pośrednika w postaci interpretera.

0

Bo to nie jest żaden nagły przeskok, od kodu binarnego do efektu wizualnego to długa droga i wiele warstw pośredniczących. Jeśli chcesz zdobywać wiedzę tego typu, to po poznaniu zasad działania systemu operacyjnego przejdź np. do urządzeń wyjściowych. Tj. jak jest tworzony obraz, w jaki sposób są zapisywane kolory, jakie są techniki generowania obrazu 2D i 3D, w jaki sposób system operacyjny wspiera programistę w tworzeniu komponentów wizualnych. Do tego urządzenia wejścia, szczególnie dyski i macierze RAID, wady i minusy ;) dysków magnetycznych i SSD, rodzaje interfejsów itd.

1

Obczaj From NAND to Tetris na Courserze (chyba jest też strona).

1
NeutrinoSpinZero napisał(a):

Zacząłem się uczyć ANSI C i jak na razie przerobiłem z 200 stron, ale to są rzeczy w sumie które już nam na wylot z modyfikacjami ewentualnie, także muszę jeszcze poczekać.
...
Chciałem zacząć coś niskopoziomowego działającego na sieci. Potrzebuję jakiś projekt, który przeczytam i nagle mnie olśni, jak od Hello Worlda przejdę do własnego programu, którym skomunikuję dwa komputery przez sieć. Od zera, from scratch, bez żadnych bibliotek, wszystko sam.

Temat gniazd sieciowych to jest dokładnie to czego chcesz ;)

0

Dzięki wszystkim, proszę o jeszcze więcej propozycji do mojej TODO listy, mam nadzieję, że po nitce do kłębka dojdę do wiedzy.
@Cr0w chyba już mi kiedyś polecałeś ten kurs. Jednak odstraszyło mnie to, że używają swojego własnego języka i robione jest wszystko na symulatorach, a chciałbym coś realnego.

@robertos7778 to jest tak, że ja nie chcę aż tak do metalu schodzić. Interesuje mnie to: używam Swinga, JavaFX czy GTK+ albo QT. Dwoma linijkami kodu wywołuję sobie czarne okienko, po którym mogę sobie 'malować'. I właśnie chciałbym się dowiedzieć, co musi się zadziać, żeby takie okienko wywołać, co tam właściwie się wydarza. Chciałem sprawdzić, jak to jest zrobione w GTK+ np. ale nie rozumiem jeszcze ANSI C zbyt dobrze no i zmienne w tych niskopoziomowych projektach to jakiś dramat, w ogóle nie wiadomo o co chodzi.

0

nikt nie zabrania olac ich jezyka i napisac po "bozemy" z pomoca bardziej profesjonalych tool'ie...

bardziej lista, ale od geohot'a:
https://github.com/geohot/fromthetransistor

0

A może od góry do dołu?
Nie wiem w czym tam kodzisz, ale jesli jakaś java to jak jest zbudowany jvm, .Net. Zarzadzanie pamięcią, struktury danych. Taki struct w .NET jaką ma przewage nad zwykłym typem referencyjnym. Długość słowa procesora. Obiekty - wtf ?! jak ten obiekt wygląda jak jest interpretowany?

Mnie ostatnio zaciekawiły niskopoziomowe rzeczy ale pod kątem optymalizacji właśnie. A potem można schodzić coraz niżej. Czemu by nie machnąć swojego VMa 😂😂

1

Kup c64 i wbijaj na demoscenę.

6

Zauważ, że sama biegłość w programowaniu (choćby największa), to za mało żeby powstał samodzielny liczący się na rynku program (z jednym wyjątkiem - tj. programu, który służy do tworzenia innego oprogramowania :-) ).
Jeśli chciałbyś napisać program do komponowania muzyki - musisz choć trochę "znać" się na muzyce, komponowaniu, zapisie nut, itd.
Jeśli chcesz napisać program księgowy - no to księgowość, prawo, itd. nie mogą Ci być obce. Itd.

Dlatego ktoś, kto się na czymś zna tworzy koncepcje, a Ty to składasz z klocków, jak napisałeś.
I tak - masz rację - to nie jest programowanie :-). Nie widzisz całości, nie znasz koncepcji. To jest kodowanie tego, co ktoś wymyślił.

Teraz odpowiedz sobie na pytanie - czy jak już przeczytasz ileś tam kolejnych książek o programowaniu i już poznasz te bity na samym dnie procesora, to sytuacja się zmieni?
Nie - co najwyżej będziesz mógł samodzielnie napisać kolejny kompilator, kolejną bibliotekę :-). Sam je wymieniałeś i nie dziw się, że jest ich tyle i powstają nowe co pół roku :-). Co ma napisać programista, który nie zna się na niczym innym niż na programowaniu? No cóż - najłatwiej skrzyknąć się w kilka osób i w ramach "odreagowania" stworzyć nową, lepszą, wydajniejszą bibliotekę :-).

Nie tędy droga. Odłóż na chwilę programowanie, znajdź inne "hobby" i stań się specjalistą (a przynajmniej zaawansowanym amatorem) w innej dziedzinie (w sumie dowolnej, w takiej, która Cię pociąga poza programowaniem).

A potem - to już z górki - zaczniesz pisać program dla profesjonalistów z tej dziedziny. Pisząc ten program oczywiście będziesz stawał przed kolejnymi wyzwaniami i wtedy sięgniesz do konkretnych podręczników.

Ja np. zajmuję się grafiką. Pisanie programów dla tego segmentu rynku oczywiście wymusiło (w sensie pozytywnym) poznanie na poziomie bitów operacji na grafice.
Aktualnie pracuję nad interpreterem PostScriptu. W efekcie dość biegle programuję w PostScripcie :-) i to wymusiło zapoznanie się z 1200-stronicową dokumentacją do tego języka :-). Po co miałbym to czytać, gdybym nie robił tego Interpretera?

0

Miałem to samo.. i zapaliło się światełko w tunelu!

Podobno Robert Lewandowski i Sławomir Peszko otwierają bootcamp "Od zera do football playera w 3 miesiące." Czekam na więcej informacji i rozglądam się za kredytem. Już się widzę na murawie #pilkarz10mlneuro

0

Ze Sławkiem Peszko to przyda się kredyt na przeszczep wątroby bo 'szkoleniu'

0 użytkowników online, w tym zalogowanych: 0, gości: 0