Zmiana języka - luźne rozważania

Odpowiedz Nowy wątek
2019-07-08 08:12
1

Cześć wszystkim.
Znudzony już trochę tym jak wygląda kod produkcyjny w C++[tona zaszłości, wskaźniki na wskaźniki, wskaźniki na funkcje, new i delety, brak STL'owych struktur danych bo lepiej zrobić alokacje przez new], pomyślałem sobie o zmianie ścieżki kariery. Broń boże nie jest to temat na zasadzie "jest tyle języków, nie wiem co wybrać", ani też nie "który język przyniesie mi największe zarobki". Wybrałem kilka języków, potrzebuję dowiedzieć się o realiach pracy w tych technologiach. C++ bardzo lubię, od 11'stki da się w nim pisać naprawdę super kod, ale mam wątpliwości, że jak będę zmieniał firmę, to w innych projektach jest dużo bardziej "nowoczesny" kod, mniej bałaganu, mniejsza ilość definów i innych dupereli, których w tym języku, od co najmniej 8 lat, nie trzeba kompletnie używać - niemniej, jeżeli się mylę, i ktoś osobiście zna krakowskie firmy, w których standardy kodowania w tym języku są całkiem wysokie, chętnie się o nich dowiem, bo ten język znam zdecydowanie najlepiej ze wszystkich, i sporo czasu na rozwijanie tej wiedzy poświęciłem.

Selekcja dotyczy kilku języków, które mniej lub bardziej znam, a w których bym się widział:

C - Rezygnacja z C++ na rzecz tego języka to pewnie byłby trochę ból, z uwagi na konieczność pożegnania się z STL'em i brakiem alternatywy dla niego, ale z drugiej strony język jest relatywnie prosty, i ta rezygnacja z STL'a ma taką korzyść, że i dziwnych problemów można uniknąć. Mam jednak wątpliwości czy byłaby tu jakaś wielka zmiana względem C++'a pod względem standardów kodzenia, a i najwięcej ofert widzę w embedded, a trochę nie jestem fanatykiem programowania na bare metal i malutkie urządzenia.

C# - Super język, naprawdę bardzo lubię pisać w C#, mimo ogólnego nielubienia się z technikami MS. Problem jaki widzę to niestety konieczność pracy na Windowsie - dużo wygodniej pracuje mi się na macOS/Linux. Widziałem kilka ofert, gdzie oferowano możliwość pracy na Linuxie czy Maku, ale generalnie takich ofert było niewiele - może ktoś się spotkał, bo trochę mnie interesuje jak to wygląda.

Scala - Cenię sobie możliwości Scali, ciężko sobie rozpisywać, ale bardzo przyjemnie jest dla mnie pisanie w tym języku. Tutaj jedyne wątpliwości, to w zasadzie fakt, czy dla kogoś bez doświadczenia w Javce, jest w ogóle szansa na wbicie się na rynek Scali.

Go - Patrz avatar. Brak sensownych ofert na ten moment i to jest główny problem.

Chciałbym poznać wasze doświadczenia z tymi językami, w opozycji do tego, co skromnie opisałem na temat moich doświadczeń z C++. Można ten temat potraktować luźno, obecnie nie pali się mi się grunt pod nogami, nie mam potrzeby zmieniania pracy "na już", a i zdaję sobie sprawę, że moja doświadczenie z pracą przy C++, nie jest żadnym wyznacznikiem i rzeczywistość może się okazać zupełnie inna.


tak zle z tym cpp w polsce? myslalem ze tu juz wiekszosc jedzie na c++11 :/ kurna, ja tu emulator zaczalem pod cv - Cr0w 2019-07-10 10:08
No ja mam nawet C++17 w pracy, ale to nie kompilator, tylko ludzie piszą, i jak ktoś wychodzi z ISO C++, do tego był wtedy oczarowany tym językiem, to ciężko mu porzucić nawyki. - Tenonymous 2019-07-10 14:06

Pozostało 580 znaków

2019-07-08 08:25
1

Super język, naprawdę bardzo lubię pisać w C#, mimo ogólnego nielubienia się z technikami MS. Problem jaki widzę to niestety konieczność pracy na Windowsie - dużo wygodniej pracuje mi się na macOS/Linux. Widziałem kilka ofert, gdzie oferowano możliwość pracy na Linuxie czy Maku, ale generalnie takich ofert było niewiele - może ktoś się spotkał, bo trochę mnie interesuje jak to wygląda.

W każdej pracy w której pracujesz tylko na ASP.NET Core nie ma konieczności pracy na Windows, bo akurat te technologie równie dobrze działają wszędzie indziej. Głównie to będą nowe produkty (bo dość nowa technologia) i jest to back-end webowy zazwyczaj.

Pokaż pozostałe 3 komentarze
spoko jest rider, ale podejrzewam że znalazły by się potrzebne api /oprogramowanie z ktorego korzysta firma wraz z ASP.NET'a których nie ma na linuxa ;/ - nullpt4 2019-07-08 10:40
Jak core to raczej nie. Stary ASP to windiws only. Ridera nie używałem. - somedev 2019-07-08 10:41
NuGet jest wieloplatformowy. Fakt, czy paczka jest wieloplatformowa zależy czy targetuje .NET Core, czy nie - coraz więcej robi to bez problemu. VS nie jest na Linuksie, ale możesz pisać w czymś innym. - Ktos 2019-07-08 13:04
@Ktos: chyba większość paczek z nugeta ma w dependencies NETStandard. - Aryman1983 2019-07-09 08:15

Pozostało 580 znaków

2019-07-08 08:26
1

C# - Super język, naprawdę bardzo lubię pisać w C#, mimo ogólnego nielubienia się z technikami MS. Problem jaki widzę to niestety konieczność pracy na Windowsie - dużo wygodniej pracuje mi się na macOS/Linux. Widziałem kilka ofert, gdzie oferowano możliwość pracy na Linuxie czy Maku, ale generalnie takich ofert było niewiele - może ktoś się spotkał, bo trochę mnie interesuje jak to wygląda.

E tam. Dla chcącego nic trudnego. Problemem nie jest niemożliwość przesiadki na Linux tylko często ograniczenie głów w firmie jak to Linux!?. Szukaj projektów w .NET Core, i problem nie będzie istnieć ;-)

Scala - Cenię sobie możliwości Scali, ciężko sobie rozpisywać, ale bardzo przyjemnie jest dla mnie pisanie w tym języku. Tutaj jedyne wątpliwości, to w zasadzie fakt, czy dla kogoś bez doświadczenia w Javce, jest w ogóle szansa na wbicie się na rynek Scali.

Yup. Ale musiałbyś najpierw sam into Scala tak żeby już wiedzieć co nieco (im więcej tym lepiej). Widziałem na przestrzeni kilkunastu miesięcy kilka ciekawych ofert żeby w to wejść.


"Trolling is a art"

Pozostało 580 znaków

2019-07-08 08:29
0
Ktos napisał(a):

W każdej pracy w której pracujesz tylko na ASP.NET Core nie ma konieczności pracy na Windows, bo akurat te technologie równie dobrze działają wszędzie indziej. Głównie to będą nowe produkty (bo dość nowa technologia) i jest to back-end webowy zazwyczaj.

Znam oczywiście Cora i wiem co to za sobą niesie. Zastanawiam się bardziej, czy przypadkiem większym problemem nie będzie stack, z którego korzystają firmy[jakieś poczty windowsowskie i inne tego typu rzeczy].

Hispano-Suiza napisał(a):

E tam. Dla chcącego nic trudnego. Problemem nie jest niemożliwość przesiadki na Linux tylko często ograniczenie głów w firmie jak to Linux!?. Szukaj projektów w .NET Core, i problem nie będzie istnieć ;-)

Scala - Cenię sobie możliwości Scali, ciężko sobie rozpisywać, ale bardzo przyjemnie jest dla mnie pisanie w tym języku. Tutaj jedyne wątpliwości, to w zasadzie fakt, czy dla kogoś bez doświadczenia w Javce, jest w ogóle szansa na wbicie się na rynek Scali.

Yup. Ale musiałbyś najpierw sam into Scala tak żeby już wiedzieć co nieco (im więcej tym lepiej). Widziałem na przestrzeni kilkunastu miesięcy kilka ciekawych ofert żeby w to wejść.

Co do C#, to tak jak wyżej. Co do Scali - widziałem właśnie parę interesujących ofert, gdzie generalnie nie wymagali komercyjnego doświadczenia - ciekawe jak to jest później w rzeczywistości. :D


Pozostało 580 znaków

2019-07-08 08:33
1

.net Core się rozwija więc coraz więcej jest ofert gdzie nie ma przywiązania do Windowsa (aczkolwiek nie rozumiem chęci pracy na Linuxie, a macOS jest zwyczajnie nie wygodny - pracowałem na nim jakiś czas). Co więcej pojawiają się projekty, które NIE są backendem webowym, a są pisane w .net core, sam rozwijam parę takich. Niemniej w C# też możesz napotkać g**no podobne do C++ - jakieś jakieś for i iteracje po listach z usuwaniem elementów i dekrementacją licznika, pełno statycznych klas i pól, singletony, realizowanie komunikacji przez n formatów bo komunikacje między klasami robił programista A, między instancjami po TCP programista B, a po schowku systemowym programista C. Ofc. można tego zapobiec ale zdarza się taki kod. Ja bym rekomendował C#, bo C to głównie systemy osadzone, coś w okół linuxa i generalnie mam wrażenie, że mało sensownych ofert. Co do Scali i Go się nie wypowiem, bo linijki kodu w tym nie napisałem.

macOS jest zwyczajnie nie wygodny - pracowałem na nim jakiś czas nie miałeś przypadkiem na myśli że macOS jest dla Ciebie nie wygodny? xd - nullpt4 2019-07-08 09:31

Pozostało 580 znaków

2019-07-08 08:37
1
somedev napisał(a):

.net Core się rozwija więc coraz więcej jest ofert gdzie nie ma przywiązania do Windowsa (aczkolwiek nie rozumiem chęci pracy na Linuxie, a macOS jest zwyczajnie nie wygodny - pracowałem na nim jakiś czas). Co więcej pojawiają się projekty, które NIE są backendem webowym, a są pisane w .net core, sam rozwijam parę takich. Niemniej w C# też możesz napotkać g**no podobne do C++ - jakieś jakieś for i iteracje po listach z usuwaniem elementów i dekrementacją licznika, pełno statycznych klas i pól, singletony, realizowanie komunikacji przez n formatów bo komunikacje między klasami robił programista A, między instancjami po TCP programista B, a po schowku systemowym programista C. Ofc. można tego zapobiec ale zdarza się taki kod. Ja bym rekomendował C#, bo C to głównie systemy osadzone, coś w okół linuxa i generalnie mam wrażenie, że mało sensownych ofert. Co do Scali i Go się nie wypowiem, bo linijki kodu w tym nie napisałem.

Dziwna uwaga z tym systemem. :P Mi jest natomiast wygodniej pracować, i na macOSie i na Linuxie.

Tak generalnie, to nie spodziewam się drastycznych różnic między tym co mam w C++, a tym co będzie w innych językach - po prostu zapewne wybór projektów, w takim C#, będzie znacznie większy, to i łatwiej o coś mniej dziadowskiego.

Co do C - mnie akurat praca w okół Linuxa by mocno odpowiadała.


Pozostało 580 znaków

2019-07-08 08:45
0

No jeśli miał bym pisać przy samym linuksie jako jądrze to mi tez, bo lubię niskopoziomowe zagadnienia (aczkolwiek pewnie bym postawił to na VM na W10 ;) ), natomiast w Polsce baaaardzo mało ofert tego typu, a jak juz to jakies doraźne skompilowanie jądra po jakieś zastosowanie czy lekkie modyfikacje. Tutaj o wiele ciężej o pracę dobrą niż w C#. Najłatwiej to poprzez dostanie się do firm, które sponsorują rozwój linuxa - Novel, RedHat, Intel, Microsoft etc. . Ale to też kwestia czy lubi się takie firmy i czy są osiągalne.

Pozostało 580 znaków

2019-07-08 08:49
1

Znowu argument o wskaźnikach w C++ :D . Miałem okazję pracować z C i C++. W obu językach da się zrobić ładny i brzydki kod. Wujek Martin w książce "Czysta Architektura" podał ładny przykład na to, że w C też można całkiem nieźle kodzić obiektowo i zrobić coś, czego klasy w C++ nie umieją. Ja bym na samej rozmowie spytał jak wygląda sprawa ze stylem kodowania, czasem można otrzymać satysfakcjonującą odpowiedź.

Nie no, to tylko takie luźne wymienianie. Zdaje sobie sprawę, że można pisać ładnie i brzydko, ale z racji tego, jak wiele jest osób przy projektach, a raczej jak wiele było na przestrzeni lat - trafi się jednak sporo syfu. - Tenonymous 2019-07-08 09:04

Pozostało 580 znaków

2019-07-08 08:55
0

Co zrobisz w C a nie w C++? Przecież istnieje dość duża kompatybilność tych języków? Co do wskaźników - nie poradzisz nic jak musisz utrzymywać 20 letni kod z kilka kk LOC.

Pokaż pozostałe 13 komentarzy
spoko, nie wiedziałem. Podasz jakiś przykład? - nullpt4 2019-07-09 14:00
kurcze widze tylko "hello word" w wxwidgets. Myślałem raczej, że zapodasz jakiś kod z makrami w C który nie skompiluje się pod g++. - nullpt4 2019-07-09 16:43
Nie to miałem na myśli. Makra C działają w C++, ale raczej nie uznaje się ich za akceptowalne użycie C++. - Krolik 2019-07-09 17:23
nie da się w C++ zrozumiałem inaczej. Spoko dzięki :) - nullpt4 2019-07-09 19:14

Pozostało 580 znaków

2019-07-08 08:56
1

Najbezpieczniej byloby wejsc w Scala. Masz wtedy cale JVM do dyspozycji, i na dobra sprawe inne jezyki oraz wynalazki + gigantyczne zaplecze narzedziowe + mozesz siedziec na Linux.

MS zejdzie jeszcze z dekade zanim przeniesie wszystkie swoje narzedzia do wersji Core (w satysfakcjonujacej jakosci).

Moze niech @Wibowit Ci poopowiada. Albo @jarekr000000 o ile nie zacznie kolejnego wykladu na temat Springa, i JEE oraz @Trollsactional :P


"Trolling is a art"
edytowany 1x, ostatnio: Hispano-Suiza, 2019-07-08 08:59
Czekam na ich odpowiedź w temacie Scali, szczerze mówiąc. :D Z tym językiem pewnie faktycznie byłoby najlepiej/najciekawiej/najbardziej elegancko. Zresztą relatywnie niskopoziomowy kod w C++, potem Scala i mamy idealną drogą do Golangu. :D - Tenonymous 2019-07-08 09:07

Pozostało 580 znaków

2019-07-08 09:07
2

@somedev: Napisałem, że w C można coś czego nie umieją klasy. W samym C++ też można to zrobić. Chodzi o hermetyzację. Robisz np. nagłówek

struct Point;
struct Point* makePoint(double x, double y);
double distance (struct Point *p1, struct Point *p2);

i implementację

#include "point.h"
#include <stdlib.h>
#include <math.h>
struct Point {
double x,y;
};
struct Point* makepoint(double x, double y) {
struct Point* p = malloc(sizeof(struct Point));
p->x = x;
p->y = y;
return p;
}
double distance(struct Point* p1, struct Point* p2) {
double dx = p1->x - p2->x;
double dy = p1->y - p2->y;
return sqrt(dx*dx+dy*dy);
}

Klasy C++ nie umieją mechanizmu tego typu. Czy to źle to inna sprawa. W każdym razie da się tu i tu robić fajne rzeczy.

Przecież to jest ekwiwalent klasy z prywatnymi polami. - Patryk27 2019-07-08 09:10
Jak nie umieją? Przecież to poprawny kod w C++. Poza tym, jest też PIMPL, jeśli synonimizujesz "klasy" z operatorem. i ->. - kq 2019-07-08 09:11
o @kq. Skrobnij coś od siebie, w wolnej chwili, na temat C++. :P Masz nieporównywalnie więcej doświadczenia, więc pewnie mógłbyś coś napisać o realiach pracy z tym językiem, z perspektywy kilku projektów. ;) - Tenonymous 2019-07-08 09:27
'Klasy C++ nie umieją mechanizmu tego typu', 1) bzdura 2) taka hermetyzacja to jeden z raków c/c++a, a potem sie ludzie dziwia ze codebase jest nieprzyjemnie napisany - amd 2019-07-22 11:42

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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