Wpis z mikrobloga

Suchajcie mirki programujce, jestem szalony!

tl;dr


Prawdę mówiąc z tym programowaniem w HTML to zgrywa. Tak naprawdę pracuję programując w PHP (tak, większość z was i tak uzna to za żart... ale ja nie o tym). Wkurza mnie w php ta jego nieskładność, rozbieżności, słabe, dynamiczne typy (najgorsze połączenie!) i to, że jest zbyt prosty, przez co przyciąga wielu partaczy i pozwala na robienie burdelu poprzez wprowadzanie nieprzemyślanych zmian "na szybko". Jednocześnie debugowanie tego to koszmar (xdebug tutaj trochę pomaga, ale i tak większość znanych mi ludzi używa jako głównego narzędzia... var_dump!).

Stąd właśnie postanowiłem coś z tym zrobić. Zrobić coś, żeby nie zwariować do końca. W pracy zajmuję się PHP, za to w domu tworzę sobie frameworka w C! Czemu akurat C? Bo to jest język, który nie pozwala na robienie tego, co mnie wkurza w PHP właśnie. Język stabilny, z długą, siwą brodą. Każdy wie, że istnieje coś takiego jak C albo C++.

Trochę opisu co to ma być: wzoruję się na codeigniterze (pokochałem go za prostotę, mimo wszystko, oraz za wyjątkowo niski narzut). Kontrolery i modele opierają się na bibliotekach dynamicznych, przez co tak naprawdę programista wybiera, w jakim języku pisze, chociaż oczywiście najbardziej wspierany ma być C/C++. Nie wykluczam mimo wszystko zrobienia wrapperów, które pozwolą na pisanie w PHP czy w Pythonie, bo wiem, jak bardzo takie języki przydają się przy prototypowaniu.
Widoki będą w stylu handlebars. Jedna rzecz mnie wyjątkowo w tym urzeka - nie da się wsadzić zbędnej mechaniki do widoku, jak to nagminnie spotykałem w php.

A teraz chciałbym powiedzieć po co w zasadzie to piszę. Otóż, potrzebuję tej odrobiny psychicznego wsparcia. Krytyka samej metody i pomysłów jest jak najbardziej mile widziana, ale nie chciałbym też być zbytnio od tego pomysłu odwodzony. Po prostu chcę to zrobić, dla samego siebie, dociągnąć projekt i opublikować, a zbyt często takie rzeczy ginęły gdzieś w odmętach dysku.
W związku z czym zaczynam prowadzić regularnego bloga o postępach, wnioskach, o nauce, o tym wszystkim co związane. Napisałem - o nauce, bo tak głównie traktuję ten projekt, jako próbę wejścia na wyższy poziom tego pięknego języka. Jeśli kogoś to nie interesuje absolutnie, proszę się nie krępować tylko czarnolistować. Wszyskto będzie pod tagiem #backendwc.

No i trochę jak daleko już zaszedłem - bardzo blisko powiedział bym. Zrobiłem kilka niezbędnych w takich projektach rzeczy - jak napisanie własnej obsługi tablic i stringów (chcę polegać na jak najmniejszej ilości niestandardowych bibliotek), przetworzenie danych z cgi na przyjaźniejszą strukturę zapytania, zalążek obsługi wyjścia (obsługuje już nagłówki, koślawe cookies i buforowanie wyjścia). Ogólnie jest jeszcze przede mną baaardzo długa droga.

Pozdrawiam wszystkich maniaków programowania dla zabawy, życzcie mi jak najmniejszej ilości wycieków. Liczę na porady od bardziej zaawansowanych ode mnie, w razie, gdyby istniało jakiekolwiek zainteresowanie, to na pytania też chętnie odpowiem.

#webdev #webdesign #nerd #programowanie #backendwc
  • 23
@alex-fortune: Wiem, ale to wzorowanie to trochę za dużo powiedziane. Inspiruję się raczej, chodzi o samą strukturę folderów i konfiguracji, mniej więcej. Urzekła mnie łatwość nauki i to też chciałbym przenieść

@Ginden: Po prostu lubię sobie utrudniać życie ( ͡° ͜ʖ ͡°). W C++ dużo rzeczy kompilator "robi za nas", w C o wielu więcej trzeba samemu pamiętać. Ma się dużą jasność co się w danej
@Artrix: Wiedziałem, że ktoś powie, że to już istnieje. No cóż, wiele rzeczy już ktoś zrobił wcześniej. Zdziwiło mnie gdyby to była innowacja. Zdecydowanie motywuję się bardziej zdobywaniem doświadczenia i czystą radością z pisania.

aplikacja w C która daje endpointy

@Jojne_Zimmerman: Nie za bardzo rozumiem stwierdzenie

frontent w angularze

Jeszcze go nie znam, poza tym to ma być czysto backendowy framework. Chcę się kiedyś nauczyć angulara, ale to już w
@Jojne_Zimmerman: Och, rozumiem, ale nie tego szukam. Jakoś nie zgadza się to z moją wizją - planuję kompletny twór, a sam silnik szablonów jest czymś, co już wiem, sprawi mi dużo frajdy przy pisaniu.

Prawdę mówiąc póki co robię to pod CGI, po przejściu pierwszej fazy mam zamiar zrobić obsługę FastCGI, a w przyszłości, jeśli dalej będzie dobrze szło, to może nawet pokuszę się o wbudowany serwer http, tak, że będzie
@matador: Dzięki, chętnie sprawdzę!
A czy nie pozwala na coś - wiesz, chodzi mi raczej o to, że w C trzeba wszystko skompilować i nie wdrożysz do produkcji czegoś z błędem składniowym chociażby. Do tego masz świadomość typów zmiennych w czasie kompilacji, dostajesz ostrzeżenia. Nie można go pomieszać z htmlem w ten sposób, w jaki się to robi w PHP, co sprawia, że potem wszystko jest paskudnie nieczytelne. Chodzi właśnie o
@ProgramistaHTML: Osobiście, jestem zwolennikiem dynamicznego typowania, ale jeśli za wyższość C nad PHP uważasz...

w C trzeba wszystko skompilować i nie wdrożysz do produkcji czegoś z błędem składniowym chociażby.


php -l odpala Ci linter phpa, który błędy składniowe wykrywa. Niemal każde IDE PHPowe (polecam PHP Storma) odpali Ci lintera przy każdym zapisie, a nawet podczas pisania.

Do tego masz świadomość typów zmiennych w czasie kompilacji, dostajesz ostrzeżenia.


Facebookowa wersja phpa pozwala
@matador: No dobra, przyznam, masz w pewnych kwestiach dużo racji - ale ja to wszystko, co napisałeś, wiem. Problem w tym, że php -l możesz użyć (ale nie musisz), hhvm to alternatywa dla php, a nie samo php, słuszna z resztą, ale to nie o to tutaj chodzi. Postawiłem tylko C w opozycji do php i wymieniłem rzeczy, które mi się nie podobają, a potem poszedłem w skrajność, nie w prostote.
Dalej najważniejszym argumentem jest chęć lepszego poznania C, pewne wyzwanie i czysta radość z pisania


@ProgramistaHTML: Spoko, fajnie i rób to! Jest jedno ale:

Spędzi więcej czasu, więc być może przemysli każdą linijkę, którą wpisuje. Być może będzie wręcz przepisywał wcześniejszy prototyp z PHP czy Javascriptu czy Pythona czy czegokolwiek innego

to kompletnie nie ma sensu. Dlaczego ma w C się przyłożyć bardziej niż np. w pythonie?
@stacktrace: żebyśmy się zrozumieli, nie wiem, czy przyłoży się bardziej. Po prostu w C niektóre rzeczy wymagają więcej kodu. Zauważy to każdy, kto pisał kiedyś w C i w Pythonie. Tam tablice po prostu sie tworzy i używa, tutaj trzeba je zaalokować, realokować, pamiętać ile mają elementów a na końcu zwolnić, żeby uniknąć zwolnienia pamięci.