Jakie języki dla przyszłego programisty???

0

Witam!

Mam 18 lat, jestem w tech inf. Chciałem się zapytać Was czyli pewnie w większości programistów, jakie języki powinienem opanować bo chciałbym iść na studia w tym kierunku.
Znam podstawy Pascala i C++. Załapałem pewna pasję do programowania i chciałbym sam jak najwięcej się nauczyć bo sprawia mi to dużo przyjemności a i wiadomo teraz trzeba być dobrym w tym co się robi :). Chciałbym w przyszłości umieć niekoniecznie sam ale z pomocą innych zaangażowanych projektować strony, stawiać portale, serwisy, zaistnieć w e-biznesie ale także dosyć konkretnie pracować przy programach i różnych programistycznych projektach.
Chciałbym w miarę opanować zanim pójdę na studia PHP, Javę, HTML, C# oraz podszkolić dalej C++ i oczywiście matma :)
Czy to dobry wybór? Może jakieś luźne rady...

Pozdrawiam!

0

jeżeli interesuje Cię webmasterka to zamiast brać się za Javę, weź się za Javascript (chyba, że o tym mówiłeś), zamiast C# poucz się ASP.NET (chyba, że intersuje Cię tylko PHP)

0

Kiedyś na tym forum były artykuły i w tym artykuł dot. języków programowania. Do tego wielokrotnie było poruszane tematy tego, co się opłaca, jak wyglądają studia, etc. Poszukaj :) Btw. pierwszy i drugi semestr studiów inf to matma - bądź tego świadom ;)

0

No wlasnie . Zalezy co Cie interesuje. Czy apliakcje pod winde np czy webmasterka. Ale pisales o programach wiec przypuszczam ze aplikacje. ( szczegolnie ze pisales juz o pascalu i c++ ).
Powiem tak: Pascal na dzien dzisijeszy do muzeum.
c++ - ok. Trzeba szkolic sie w tym dalej.
C# - uczyc sie go poniewaz wiele ofert pracy w nim jest.
Java - nie zaszkodzi moze jedynie pomoc.

Natomiast napisales tez o HTML ( O_o ) i PHP. Miedzy nimi wymieniles Jave co moze oznaczac ze mylisz javescript z java. ( a to co innego ).
Co dziwnego ze wymieniles PHP? wyglada na to ze jeszcze nie jestes sprecyzowany czy chcesz wlasnie brac sie za webmasterke czy apliakcje. Mozna i za i za to chociaz nie wiem czy to akurat fajne jest.

PHP niemniej jest oblegane na dzien dzisiejszy. Jest duzo ofert pracy ale rowniez zduzo koderow co z kolei oznacza ze płSaca jest zajebiscie niska.

A teraz taka moja filozofia:
Wspomniales o matmie. Dzis widzialem kod zrodlowy tworzacy zajebiste wykresy w c++ liczb zespolonych w 3d. Pieknie to wygladalo.
A wiec koder potrafiacy naprawde niezle matme gdzies tam siegajaca matematyki wyzszej amoze nawet fizyki kwantowej ( bo i takie fajne kody widzialem ) czy innej moze fajne kody tworzyc i pomagac w nauce. Nie wiem jaka tam placa czy cos ale jakie to ciekawe :)
Ale to tylko takie moje spekulacje. Ja w sumie mam lsabosc do roznych wykresow itd szczegolnie robionych na czarnym tle i wlasnie tak fajnie falujacych ach... :::*

Ale w normalnym kodzeniu matma az tak potrzebna nie jest :P bardziej myslenie analityczne ktore z czasem pisania raczej kazdy zdobywa :)

0
dzek69 napisał(a)

zamiast C# poucz się ASP.NET

A zamiast pralki kup lodówkę.
Jak w ogóle można było tak napisać? :|

0

zasugerowałem się tym fragmentem:

Chciałbym w przyszłości umieć (...) projektować strony, stawiać portale, serwisy

czyli - webmasterka. stąd asp.

0

Się najpierw musisz określić trochę. Radzę spróbować wszystkiego po trochu(tworzenia stron, skryptów, programów wysokopoziomowo, niiskopoziomowo) w końcu coś cię bardziej zainteresuję i to dalej rozwijaj.

0
przemo1722 napisał(a)

Mam 18 lat, jestem w tech inf. Chciałem się zapytać Was czyli pewnie w większości programistów, jakie języki powinienem opanować

W pierwszej kolejności przede wszystkim język angielski.
Reszty w miarę potrzeb nauczysz się stąd:
http://www.amazon.com/Computers-Internet-Books/b/ref=bhp_bb0309A_comint2?ie=UTF8&node=5&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=browse&pf_rd_r=1Y81WPKPS131KCGXQDA3&pf_rd_t=101&pf_rd_p=1279304502&pf_rd_i=283155

0

dzek:
Zależy co pisać. Jeśli cała strona ma latać na AJAXie to lepiej użyć GWT, zamiast bawić się z HTMLami i dostosowywaniem kodu pod kilkanaście różnych przeglądarek. ASP.NET jest odpowiedzią (mniej lub bardziej) na JSP i JSF, z tego co czytałem.

autor:
W C++ często korzysta się z milionów trików, aby zbić stałą w złożoności kosztem czytelności. Zresztą taki był cel tego języka - wydajność za wszelką cenę. Drugi cel to dorzucanie mnóstwa ficzerów, które niekoniecznie czynią kod przejrzysty - z powodu punktu pierwszego.

Java jest już dość starą platformą, wiele krowiastych projektów napisanych w Javie jest pisane na jakieś stare wersje Javy, które były toporne w użyciu. Ciąży na niej bierzmo kompatybilności wstecznej (zresztą tak jak w C++, gdzie nowe wersje są maksymalnie kompatybilne z wcześniejszymi). Niemniej jednak jest wieloplatformowa i nie trzeba zanurzać się w szczegóły programowania pod poszczególne systemy operacyjne czy platformy. Java lata na różniastych OSach serwerowych, desktopowych, smartphoneowych, tabletowych, itp itd Przerzucenie się z jednej platformy na inną nie sprawia bólu.

C# jest workiem na językowe ułatwiacze. Wg mnie strasznie niespójny, prawie w ogóle nieortogonalny, tzn wiele ficzerów ma zero elastyczności i pasują tylko do jednej czynności. Dużo ładniej zorganizowana jest Scala - język na JVM, który jest tak sprytnie skonstruowany, że można "rozszerzyć język" (tzn dodać ułatwienia zmieniające trochę wizualnie składnię) pisząc bibliotekę. Programy w C# to raczej programy młode i dzięki temu korzystające z podstawowych struktur językowych, których brakuje w antycznych wersjach Javy.

PHP było zaprojektowane jako zabawka do robienia licznika na stronę czy podobnych pierdół, a nie jako język do pisania poważnych programów. Później pododawano do niego jakieś tam elementy z innych języków. Generalnie język łączy wady wszystkich pozostałych języków, ale ma jakieś tam zalety - jest dobrze przystosowany do HTTP i relatywnie łatwy na starcie - z tym że to ostatnie to raczej nie zaleta, język powinien elastyczny, a nie łatwy i zwodniczy.

Sugerując się moim doświadczeniem na uczelni (WMiI UJ):

  • PHP wystarczy opanować na tyle, żeby obsługiwać formularze, proste zapytania SQL, renderowanie tabelek,
  • z C++ bardzo ważny jest STL,
  • z Javy powinny wystarczyć tutoriale: http://download.oracle.com/javase/tutorial/ , ale przerobienie wszystkich tamtych tutoriali nie jest jest zadaniem na kilka wieczorów,
  • C# był opcjonalny, generalnie ja nic w C# nie programowałem, ale musiałem kiedyś tam poczytać dość sporo kodu C#. .NET Framework szybko się rozwija i pełno rzeczy momentalnie staje się "deprecated" i niewspierane, więc uczenie się na zaś może nie przynieść wielu korzyści,

Jeśli będziesz szedł w nowoczesne technologie i/ lub nietuzinkowe, nowoczesne rozwiązania to później będziesz miał taką samą robotę. Jeśli po prostu nauczysz się Javy czy C++ i trafisz do firmy rozwijającej jakiegoś swojego molocha, to będziesz pionkiem dorabiającym kolejne szczeble w drabinkach ifów.

0
dzek69 napisał(a)

zasugerowałem się tym fragmentem:

Chciałbym w przyszłości umieć (...) projektować strony, stawiać portale, serwisy

czyli - webmasterka. stąd asp.

Żeby robić coś w ASP.NET i tak trzeba znać jakiś (kompatybilny) język. Np. C#. Więc to "zamiast" brzmi bezsensownie.

donkey7 napisał(a)

C# jest workiem na językowe ułatwiacze. Wg mnie strasznie niespójny, prawie w ogóle nieortogonalny, tzn wiele ficzerów ma zero elastyczności i pasują tylko do jednej czynności.

Możesz podać jakiś przykład?

.NET Framework szybko się rozwija i pełno rzeczy momentalnie staje się "deprecated" i niewspierane, więc uczenie się na zaś może nie przynieść wielu korzyści

W zasadzie pierwszy raz słyszę, żeby rozwój miał być wadą, ale to pewno kwestia gustu.
Tu też bym prosił o jakiś konkretniejszy przykład.

0

"Możesz podać jakiś przykład?"

Różnego rodzaju frameworki, np do GUI co jakiś czas się zmieniają chyba. W Javie jest Swing od bardzo dawna i ma się bardzo dobrze.

"Tu też bym prosił o jakiś konkretniejszy przykład."

Generalnie mam sporo wątpliwości albo nie podoba mi się składnia. Np:

  • słowo kluczowe yield - czy może posłużyć do stworzenia dowolnego rodzaju kolekcji? W Scali można stworzyć klasy CanBuildFrom i dzięki temu rozszerzyć naszą klasę o funkcjonalności oparte o map, filter, flatten, itp tak aby np kolekcja.map zwróciło taki sam typ jak kolekcja, np set.map zwraca set. Poza tym, od wprowadzenia domknięć/ lambda to yield jest raczej zbędne i tylko zaśmieca język.
  • propertiesy są trochę bez sensu, w Scali wszystko ma akcesory z automatu, można je ewentualnie dopisać. Skoro w C# dodali specjalną składnię to mogła ona choć trochę przypominać tą z Scali,
  • LINQ jest wielkim kawałem wspawanej logiki w kompilator, w Scali identyczną funkcjonalność można osiągnąć pisząc bibliotekę (np Squeryl), którą można potem dowolnie rozszerzyć na różne typy zbiorów danych,
  • collection initializers - czy działają dla dowolnych, także własnych, kolekcji?
  • nadpisywanie metod to już czysty idiotyzm wg mnie (tzn new function czy coś takiego), w języku obiektowym wszystko powinno być wirtualne,
  • poza tym daleko C# do Scali pod względem np elastyczności, rozszerzalności, zwięzłości itp
0
donkey7 napisał(a)

Różnego rodzaju frameworki, np do GUI co jakiś czas się zmieniają chyba. W Javie jest Swing od bardzo dawna i ma się bardzo dobrze.

W .NET do GUI jest WinForms, już od 10 lat. Doszło parę nowych kontrolek 5 lat temu, od tamtej pory chyba nic nowego, co najwyżej pojedyncze metody czy usprawnienia.
Parę lat temu wpadli na pomysł WPF, czyli konfiguracji GUI w formie XML, niby to promują, ale jakoś nikt nie chce korzystać. Czyżby przez mułowatość? ;) Daje to spore możliwości i ułatwienia, może kiedyś zdobędzie popularność, ale na razie WF na desktopach rządzą.
Generalnie dodawane są nowe klasy i frameworki, jak np. dwa ORMy (LINQ to SQL i Entity Framework), ale nikt nie uznał np. DataSetów czy modelu połączeniowego jako przestarzały. (A szkoda, bo DS to syf straszny akurat). Doszło ASP.NET MVC, ale nikt nie odrzuca WebForms.
Są w .NET jakieś klasy i metody "depreciated", ale to raczej sporadyczne przypadki. Trzeba się naprawdę postarać by na takie trafić.
Więc chyba trochę na wyrost napisałeś. ;)

  • słowo kluczowe yield - czy może posłużyć do stworzenia dowolnego rodzaju kolekcji?

A cholera wie, nigdy nie używałem.

  • propertiesy są trochę bez sensu, w Scali wszystko ma akcesory z automatu, można je ewentualnie dopisać. Skoro w C# dodali specjalną składnię to mogła ona choć trochę przypominać tą z Scali,

W każdym razie propertisy mają większy sens niż metody get*, set* z C++ czy Javy (to chyba lepsze języki do porównywania). Metoda to raczej powinna wykonywać bardziej skomplikowaną operację niż zmiana stanu pola.

  • LINQ jest wielkim kawałem wspawanej logiki w kompilator, w Scali identyczną funkcjonalność można osiągnąć pisząc bibliotekę (np Squeryl), którą można potem dowolnie rozszerzyć na różne typy zbiorów danych,

Nie rozumiem "wspawania logiki w kompilator". LINQ to klasy z metodami rozszerzającymi pozwalającymi operować na kolekcjach przy użyciu lambdy. Zarąbista sprawa, nie trzeba już pisać milionów pętli z milionami ifów do sortowania, filtrowania czy przeszukiwania kolekcji, wszystko da się osiągnąć ładnym, łańcuchowym wywołaniem metod.

Chodzi Ci o słowa kluczowe i składnię from - where - select? Jak sądzę kompilator zamienia to tylko na wywołania metod. Dla mnie taka składnia jest obrzydliwa, ale może komuś pasuje.

Zresztą - same metody rozszerzające są wystarczająco zajebistym pomysłem, żeby przyćmić wszystkie wady. ;)

  • collection initializers - czy działają dla dowolnych, także własnych, kolekcji?

Z tego, co się orientuję, to jak najbardziej.

  • nadpisywanie metod to już czysty idiotyzm wg mnie (tzn new function czy coś takiego), w języku obiektowym wszystko powinno być wirtualne,

Zachowanie metody new jest nieco inne niż override w sytuacji gdy obiekt klasy potomnej przypisujemy do zmiennej typu klasy bazowej. Może i masz rację, nie zastanawiałem się nigdy nad takim niuansem. A czemu tak uważasz?

  • poza tym daleko C# do Scali pod względem np elastyczności, rozszerzalności, zwięzłości itp

O ile się orientuję, to Scala jest po pierwsze młodsza, po drugie funkcyjna, więc nie wiem czy jest sens porównywać ją składniowo z C#.

Co do cukru - właściwości, słówko kluczowe var, LINQ - to wszystko po to, żeby kodu było mniej. Im mniej kodu tym jest on czytelniejszy (sensownego kodu, oczywiście), tym łatwiej go utrzymać. IMHO to ma sens.
W ogóle rozwój ma sens, np. w następnej wersji języka metody będzie można oznaczać modyfikatorem async, przy ich wywołaniu trzeba będzie używać operatora await, dzięki czemu nie trzeba będzie uzywać callbacków i napisać asynchroniczny kod przy zachowaniu niemalże nienaruszonej struktury synchronicznego kodu. Może i cukier, ale jaki praktyczny.

0

Scala jest 2 lata młodsza od C#, ale funkcjonalnie jest daaaleko przed nim. Jeśli chodzi o funkcyjność to akurat C# nie jest tak bardzo w tyle, w końcu ma te lambdy/ domknięcia. Brakuje tylko pattern matchingu w zasadzie, aby C# przypominał język funkcyjny.

Jako dowód na to, że autor C# lekką ręką dokłada kolejne keywordy, które szybko stają się nieużywane, zapodaję statystyki keywordów:
http://carlosqt.blogspot.com/2010/07/how-many-keywords-do-you-type-in-your.html
Jak widać ogólnie w .NETowych językach keywordów jest najwięcej. Delphi jest językiem stworzonym przez autora C# (a w zasadzie odwrotnie).
Współczynnik power/ weight w Scali miażdży :) (Pythona pomijam, bo odrzuca mnie dynamiczne typowanie)

Dobra idę spać :P Dobranoc

0
  • słowo kluczowe yield - czy może posłużyć do stworzenia dowolnego rodzaju kolekcji?

Yield może być używane tylko w metodach zwracających IEnumerable<T> (inaczej mówiąc, tworzy taką kolekcję właśnie), a ponieważ wszystkie znane mi kolekcje standardowe mają konstruktor przyjmujący IEnumerable<T>, odpowiedź na pytanie brzmi tak.

Współczynnik power/ weight w Scali miażdży
A co powiesz na scheme? Trudno tam nawet napisać co jest keywordem, bo spora część tych które są wpisane do kompilatora dla wydajności może zostać rozpisana samodzielnie (na pohybel optymalizacji). Też jest power a jakoś nikt w nim nie pisze... Wniosek: współczynnik p/w nie zawsze jest najważniejszy.

0

ok, nic z tego nie rozumiem ale dzięki (tzn 2. części waszej dyskusji)
dokładnie nie wiem czym chciałbym się zająć czy aplikacjami czy webm myślę że tą decyzję podejmę na ewentualnych studiach....

0

przemo1722 > wniosek dla ciebie jest taki, że zarówno Java jak i .Net mają dużo zagorzałych zwolenników jak i przeciwników :P Jeśli chcesz być super wartościowy na rynku pracy - naucz się tego i tego, a wszędzie sobie miejsce znajdziesz.

0

panowie ogólnie aby byc dobrym programistą i zarabiać w związku z tym godne pieniądze trzeba być geniuszem matematyczno-fizycznym w okularkach czy da się to nadrobić chęcią do pracy i uważaniem na wykładach? ;d

0
donkey7 napisał(a)

Jak widać ogólnie w .NETowych językach keywordów jest najwięcej.

Ale F# w to nie mieszaj, w 100% wspiera OCamla, nawet niektóre keywordy są zarezerwowane specjalnie z powodu kompatybilności 'wstecznej', do tego pozwala robić rzeczy niemożliwe w C#, jest bardziej rozbudowany.

przemo1722 napisał(a)

czy da się to nadrobić chęcią do pracy i uważaniem na wykładach? ;d

Jakich wykładach?

0
przemo1722 napisał(a)

panowie ogólnie aby byc dobrym programistą i zarabiać w związku z tym godne pieniądze trzeba być geniuszem matematyczno-fizycznym w okularkach czy da się to nadrobić chęcią do pracy i uważaniem na wykładach? ;d

Jeśli będziesz geniuszem matematyczno-fizycznym to szkoda Cię będzie na klepacza kodu. Jeśli będziesz uważał na wykładach spokojnie zdasz dyplom ale pracy Ci to nie zagwarantuje.
Gdzieś tu napisałeś że kodzenie Ci się spodobało, skoro masz 18 lat możesz sobie pozwolić na kodzenie w tym co lubisz. Myślenie o zarobkowaniu zostaw sobie na studia.

0

kurcze zaintrygowała mnie jedna kwestia właśnie po obejrzeniu The Social Network, co musiał mieć w bani Mark w wieku 20 lat kiedy zarejestrował FB.com oraz np. Sean Parker w wieku 19 ;/

0

Alex Ionescu w wieku osiemnastu lat zabrał się za rozwój projektu ReactOS, systemu mającego ambicję być kompatybilnym z Windows 2000 (na ambicji się kończyło, rzeczywistość wyglądała inaczej - tony hacków na obsługę konkretnych rozwiązań, udawanie zamiast faktycznej zgodności). Wzmiankowany osobnik w krótkim czasie przepisał/przerobił/dopisał praktycznie połowę kernela, kierując rozwój systemu w stronę faktycznej zgodności z NT 5.2 (Windows Server 2003 i XP 64bit). Warto wspomnieć, poza programowaniem konieczny był także dogłębny reverse engineering. To chyba ciekawy przykład 'młodego programisty', nie uważasz?

0

Tja, nie każdy może być geniuszem ;)
A ja z matmy teraz to już noga jestem, bo to tylko na pierwszym roku było i nie pamiętam połowy rzeczy, na wykłady nie bardzo się chodziło i ogólnie kiepska ta średnia... a jednak jestem dobrym programistą :)
Jak to zrobić?

  • przychodzić do pracy (w mojej firmie plagą są studenci informatyki, którzy leją sobie na godziny)
  • w pracy pracować (nie joemonstera przeglądać)
  • jak czegoś nie wiesz, googlać!
  • jak nie wygooglasz - googlaj dalej
  • pytanie do szefa - ostateczna ostateczność, której należy się wystrzegać jak ognia, wychodząc z założenia, że SZEF NIE MA CZASU

Więcej według mnie nie trzeba, no może poza implikowaną ciągłym googlaniem chęcią do zdobywania wiedzy.

0

pewnie, człowiek całe życie się uczy :) dzięki za odp
a czy będąc na dziennych na prog. da radę jeszcze pracować w weekendy czy lepiej pracować i iść zaocznie?

0

Ja studiuję dziennie na ETI i pracuję na pół etatu co dowodem na to, że się da.
Ale sobie nie wobrażasz jak szalenie strasznie marzę o tym, żeby się kiedyś wyspać :>
Ah, po studiach będzie pięknie...

0
donkey7 napisał(a)

Jako dowód na to, że autor C# lekką ręką dokłada kolejne keywordy, które szybko stają się nieużywane

Co niby jest nieużywane?

W porównaniu z Javą C# ma:

  • struct;
  • out i ref do modyfikacji parametrów metod;
  • delegate - wskaźnik na metodę;
  • event - bo fajnie mieć wzorce projektowe wbudowane w język;
  • foreach i in - j.w.;
  • true, false, null - nie wymagają komentarza;
  • operator, implicit, explicit - bo tu można przeciążać operatory;
  • is, as, typeof - przydatne przy rzutowaniu i sprawdzaniu typów;
  • object, decimal, string, sbyte, ushort, uint, ulong - aliasy na typy danych;
  • params - dla metod z nieokreśloną liczbą parametrów;
  • extern - używanie natywnych bibliotek;
  • virtual, override, internal, readonly;
  • lock - sekcja krytyczna;
  • using - daje wygodniejszą składnię dla dispose'owanych obiektów;
  • sizeof;
  • unsafe, fixed, stackallock - operacje na pamięci;
  • checked/unchecked - kontrola overflowu.

Większość jednak jest przydatna, tylko kilka jest do rzadkich i specyficznych sytuacji.

Java za to ma np. nikomu niepotrzebne i nieczytelne extends i implements.

Można tak długo, tylko czy liczba słów kluczowych jest jakimkolwiek wyznacznikiem czegokolwiek w języku? Wiadomo i tak, że niektórych używa się częściej, innych rzadziej, w zależności od umiejętności i specyfiki pracy. Za to lepiej, gdy język daje możliwości, niż ich nie daje.

To tyle w kwestii wyjaśnienia. Trochę bez sensu mówić o niespójności C# czy starzeniu się .NET.

Współczynnik power/ weight w Scali miażdży :)

Pewno tak. A jak to się przekłada na rynek pracy?
Bo z popularnością języków, które są spoza głównego, cepodobnego nurtu bywa raczej słabo, nawet jeśli mają zwięźlejszą i czytelniejszą składnię, to i tak problemem jest przestawienie się na myślenie w języku innym niż do tej pory znane.

Ogólnie język to tylko narzędzie, jeśli zna się jeden, to bez problemu można się nauczyć podobnego. API, frameworki i biblioteki zazwyczaj mają dokumentację, więc też nie sprawiają kłopotów. Nie trzeba przecież wszystkiego umieć, wystarczy umieć znaleźć. Większym problemem IMHO jest przyzwyczajenie się do innych narzędzi, IDE, itp.
Dobrze jest się uczyć czegokolwiek, co rozwija myślenie, to na pewno zaowocuje za n lat.

aurel napisał(a)
  • pytanie do szefa - ostateczna ostateczność, której należy się wystrzegać jak ognia, wychodząc z założenia, że SZEF NIE MA CZASU

A to kolegów w pracy nie ma?

0

A to kolegów w pracy nie ma?

koleżanek pewnie nie ma, a do kolegów się wstydzi żeby nie wyszło że kobieta programuje słabiej od nich :P

0

Są i koleżanki, ale:

  1. jak ja piszę w dotNecie, a kolega w Javie, to co ja się go pytać będę...
  2. ...koledzy (i koleżanki) swoją pracę mają i też nie mają czasu ;)

Z resztą ogrom mojej pracy to VBA, na który większość programistów się obraziła czy coś :P
Mam tylko jednego kolegę w pokoju, który też w tym pisze, ale on pracuje do 15, a ja często później przychodzę.
Z tych względów pytania me do kolegów z pracy są bardzo rzadkie, prędzej topik na forum zakładam.

0

somekind:
Scala jest oparta na Javie i raczej trudno będzie jej ją zastąpić. System typów jest zresztą trochę za trudny dla n00bów ledwo kumających Javę czy C#.

  • out i ref - paskudne i nieczytelne, krotki w Scali wyglądają przy tym o niebo lepiej,
  • delegate - w Scali można definiować funkcje jako zmienne, dodatkowych słów kluczowych nie trzeba,
  • event - Scala posiada mechanizm aktorów z Erlanga, mechanizm dużooo elastyczniejszy i potężniejszy,
  • foreach - nawet Java nie ma dodatkowego keyworda do takich zastosować, w Scali to jest jedyna forma fora, nie ma tej z C++,
  • is, as, typeof - w Scali to też jest ale nie poleca się stosować takich błędogennych konstrukcji, zamiast tego pattern matching na hierarchiach klas + guardy, znowu narzędzie o rzędy wielkości bardziej potężne,
  • using - w Scali nie wymaga keyworda, może być zwykłą funkcją w jakiejś bibliotece, niestety jednak na razie potrzebne klasy w Javie nie implementują Disposable, to będzie dopiero w JDK7,

Przykłady ułomności Javy czy C# względem Scali można mnożyć. Scala moment krytyczny osiągnęła jednak stosunkowo niedawno, tak z 2 lata temu wydaje mi się, że więcej ludzi zaczęło się nią interesować i samemu pomagać rozwijać.

http://www.scala-lang.org/node/1658 lista firm korzystających ze Scali coraz bardziej się zwiększa,
http://www.scalasolutions.com/ chyba z miesiąc temu czy dwa postawione komercyjne wsparcie dla Scali,

Kiedyś interesowałem się np frameworkiem webowym Apache Wicket. Na początku mało kto mu dobrze wróżył, ludzi byli przyzwyczajeni do zwykłego modelu MVC z kontrolerami do każdej strony. Ci co go używali jednak szybko się do niego przekonali i teraz jest jednym z bardziej popularnych frameworków przy nowych projektach.

To tylko kwestia czasu jak typowe projekty staną się na tyle skomplikowane, że pisanie ich w obecnym C# czy Javie przestanie być opłacalne i lepiej będzie zatrudnić bardziej sprytnych programistów Scali, aby zrobili projekt kilka razy bardziej stabilny kilka razy mniejszym nakładem pracy.

0

na ambicji się kończyło, rzeczywistość wyglądała inaczej - tony hacków na obsługę konkretnych rozwiązań, udawanie zamiast faktycznej zgodności

Windows też ma tonę haków na obsługę konkretnych aplikacji. Dlatego pod systemem, który będzie pisany wyłącznie na podstawie dokumentacji, wiele rzeczy nie ruszy.
Bo to niestety była dokumentacja, a nie specyfikacja.

Mechanizm jest taki: Windows ma buga. Popularna aplikacja Xyz została napisana w taki sposób, że zależy od tego buga. MS w następnej wersji Windowsa buga naprawia. Xyz przestaje działać – mimo, że MS nie zrobił nic „źle”. M$ wydaje betę tego nowego Windowsa. Beciarze bluzgają, że im Xyz nie chodzi. Teraz zależnie czy jest ich tysiąc czy dziesięć milionów, MS sprawę olewa albo „naprawia”.
Tylko jak to naprawić: przywrócić buga, którego od początku powinno nie być? I tak i nie. Windows sprawdza, czy bieżącym procesem jest xyz.exe: jeżeli tak, bug się objawia i program działa. Jeżeli nie – dla wszystkich innych procesów błąd jest naprawiony.
Sprawy się oczywiście nie dokumentuje: poza może dokumentacją wewnętrzną.

0

Tak, to fakt, kilka hacków w systemie jest, wliczając w to nawet wyłączanie DEP (np. w sytuacji, kiedy binarka jest potraktowana moim kochanym StarForcem). Przyznasz jednak, że rozwój Windowsa nie opiera się na samym dodawaniu hacków. Z ROS było tak, że zamiast stworzyć sensowny kod, poprawić zgodność z Windowsem to po prostu dokładano kolejne hacki, przez co system wyłącznie się cofał.

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