People of Lava pokazuje telewizor z Androidem

Zgodnie z zapowiedziami sprzed pół roku, firma People of Lava wypuściła telewizor, którego oprogramowaniem jest zmodyfikowany Android.

Telewizor Scandinavia nie jest częścią projektu Google TV – Android został dostosowany do specyficznego urządzenia, jakim jest telewizor, w całości przez firmę People of Lava.

Scandinavia bazuje na Androidzie w wersji 1.5. Jak zapewnia producent, w przyszłości telewizor obsłuży Flasha 10.1, więc można spodziewać się szykującej się wersji 2.2 Androida w wersji na Scandinavię. Telewizor wyposażony jest w procesor Cortex A8 o częstotliwości taktowania 833 MHz.

Wideo prezentujące produkt jest dostępne poniżej:

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar oO
    oO

    Na początku przeczytałem „People of Java” i już się przeraziłem. Gorsze mogłoby być chyba tylko „People od .net”.
    Ale na szczęście to nie to 😉

    1. Awatar makak
      makak

      Niby czemu? Wielu profesjonalistów używa .net (mono) i javy. Pewnie wszystkobyś pisał w przestarzałym c. LoL

      1. Awatar michuk
        michuk

        Nie zdziwiłbym się gdyby java i .net stała się niedługo przestarzała, podczas gdy C będzie nadal trzymać się mocno w swoich niszach.

        1. Awatar Budyń
          Budyń

          A Javę/.NET co wyprze ?
          Clojure :OD ?

        2. Awatar michuk
          michuk

          Jakbyś 15 lat temu napisał „a visual basic co wyprze? java :OD?”, też pewnie wszyscy by się śmiali :>

          Być może w zastosowaniach w jakich obecnie są wykorzystywane dane języki, wiele się nie zmieni, ale wchodzą zupełnie nowe nisze, które w krótkim czasie stają się mainstreamem. Obecnie to programowanie na urządzenia mobilne (gdzie rządzi Objective-C i Java aktualnie) czy programowanie w chmurze (tu nie ma jeszcze chyba lidera), ale takich nowych obszarów będzie się pojawiać więcej i nowe języki będą przejmować kontrolę.

        3. Awatar Królik
          Królik

          Każdy język po jakimś czasie zostaje zepchnięty do niszy.
          Jednak na razie nic nie wskazuje na to, aby Javie to groziło w ciągu najbliższych 10 lat. Wiadomo już, że .NET jej nie zabił, wiadomo też że języki skryptowe takie jak Ruby też nie. Bardziej możliwe, że Java zostanie zjedzona przez jakiś język na JVM, ze względu na zachowanie kompatybilności z dotychczasowym kodem. Clojure jest zbyt egzotyczny, ale Scala… teoretycznie ma jakieś tam szanse.

        4. Awatar sprae
          sprae

          Królik: Chciejstwo też można leczyć.

        5. Awatar Królik
          Królik

          Jakie chciejstwo? Ja wcale nie chcę aby Scala stała się następną dużą rzeczą, choć już narobiła dużo szumu. Scala i Clojure powinny pozostać IMHO niszowe. Przynajmniej będą postrzegane jako języki dla pro, a nie dla dzieci klepiących frontendy web.

        6. Awatar Bastian
          Bastian

          Królik: ja klepie frontendy webowe. Chcesz się zmierzyć na dowody osobiste ?

        7. Awatar sprae
          sprae

          Chciejstwo to głoszenie przepowiedni na najbliższe 10 lat.

        8. Awatar Królik
          Królik

          Jakich przepowiedni? Między przepowiednią a stwierdzeniem, że obecnie nie widać jakichkolwiek oznak wypierania Javy skądkolwiek, jest duża różnica. Raczej widać trendy odwrotne. Dzięki Googlowi Java może się rozpanoszyć nieźle na urządzeniach mobilnych.

          @Bastian: Nie bierz tego do siebie, ale generalnie pisanie frontendów webowych, czy w ogóle jakichkolwiek aplikacji w oparciu o gotowe frameworki to nie jest zajęcie wymagające wybitnego intelektu. Wiem, bo niegdyś pisałem. Mam też ciągle styczność z ludźmi, którzy wpisują sobie takie rzeczy w CV, a jako programiści są tragiczni (rekrutuję). Wystarczy zahaczyć o jakiekolwiek rzeczy trącące podstawową algorytmiką, programowaniem współbieżnym czy inżynierią oprogramowania i leżą. Być może Ty jesteś wyjątkiem. Na szczęście programowanie na sklejaniu gotowców się nie kończy i są ciekawe wyzwania. Do takich wyzwań właśnie Java i C++ się nadają… słabo.

        9. Awatar Reddie
          Reddie

          Dzięki Googlowi Java może się rozpanoszyć nieźle na urządzeniach mobilnych.

          Jeszcze kilka pozwów ze strony Oracle i Java na urządzeniach mobilnych będzie oznaczała, jak wcześniej, jedynie gry w J2ME.

        10. Awatar Królik
          Królik

          A Ty wierzysz w to, że Google się obrazi, spakuje zabawki i pójdzie do innej piaskownicy?

        11. Awatar Reddie
          Reddie

          @Królik: ale wiesz, że Oracle pozwało Google o patenty związane z obsługą Javy, np. plików class, prawda?

          To, czy Google się obrazi czy nie, może nie mieć znaczenia.

        12. Awatar Królik
          Królik

          Skończy się na tym, że Google zapłaci Oraclowi aby się odczepił (czyli wykupi licencję) i tyle. Tak jak większość tego typu spraw.

      2. Awatar oO
        oO

        Raczej powiedziałbym, że NIEwielu profesjonalistów używa Javy czy .neta. Najczęściej są to prości wyrobnicy klepiący nieskąplikowany kod.
        Profesjonaliści używają najczęściej C i C++ albo języków bardziej ukierunkowanych na ich konkretne potrzeby.

        Poza tym Java czy .net nie nadają się ani na desktopy, ani do małych i średnich aplikacji webowych. Są po prostu masakrycznie wolne i zbyt zasobożerne.
        Jedyny target tych rozwiązań to duże webserwisy gdzie takie rzeczy jak trzymanie obiektów w pamięci w czasie sesji ma znaczenie dla wydajności.
        Java i .net to zdecydowanie przereklamowane platformy.

        Przy czym Java ma jedną jedyną zaletę: wieloplatforomowość.
        .net sromotnie tu przegrywa, bo oficjalnie wspierany jest tylko windows, a mono zawsze jest do tyłu i jest obłożone ryzykiem nagłego zniknięcia z rynku za sprawą patentów microsoftu.

        Ale przecież wieloplatformowe jest także C++, o ile używa się odpowiednich bibliotek (np. Qt) i tylko w niezbędnych przypadkach odwołuje się do API systemu (szczególnie, że konstrukcja np. takiego WinAPI jest bardziej niż archaiczna, więc tylko idiota pisałby w tym CAŁY program).

        1. Awatar Reddie
          Reddie

          @Oo: chcesz powiedzieć, że aplikacje webowe piszesz/pisałbyś w C++?

        2. Awatar Królik
          Królik

          Poza tym Java czy .net nie nadają się ani na desktopy, ani do małych i średnich aplikacji webowych. Są po prostu masakrycznie wolne i zbyt zasobożerne

          Java ma pewne wady, ale zupełnie nie takie, o jakich piszesz. Ale po kolei:

          1. Masakrycznie wolne? Mit obalany wielokrotnie, Java jest w tej samej lidze co C/C++; pewne operacje wykonuje wielokrotnie szybciej (new, przekazywanie stringów), na innych nieco dostaje (sprawdzanie tablic, zbyt częsta alokacja na stercie). Jednak gra jest nierówna, bo Java musi być fail-fast, a C++ może oszukiwać za pomocą „undefined behaviour”. Mimo to różnice rzadko przekraczają 2x przy dobrze napisanym kodzie.

          2. Zbyt zasobożerne? Po czym wnosisz? Zbyt zasobożerne to mogą być pewne aplikacje jak się nie umie programować albo dołącza się tony zbędnych bibliotek. Sam JVM nie daje narzutów większych niż kilka MB. Co to jest kilka MB, kiedy większość ludzi ma zainstalowane po 1 – 4 GB RAMu?

          Ale przecież wieloplatformowe jest także C++, o ile używa się odpowiednich bibliotek (np. Qt)

          Nie było, nie jest i nie będzie. Zacznijmy od tego, że nie jest nawet w pełni „jednoplatformowe”, tzn. na jednej platformie przy upgradzie wersji Qt albo kompilatora masz duże szanse się wysypać. Patrz: migracja KDE z Qt 3 na 4. Albo spróbuj zmigrować jakiś duży projekt kompilowany GCC 3.x na GCC 4.x.

        3. Awatar krzychos7
          krzychos7

          C/C++ jest jak najbardziej wieloplatfomowe. Jedynie gotowe biblioteki nie zawsze są dostępne na wszystkie platformy, ale nie trzeba z nich korzystać, oczywiście przysparza to masę roboty ale właśnie dzięki C/C++ można napisać cały system z oprogramowaniem na każdy sprzęt. To zasadniczo jest właśnie profesjonalizm, tworzenie systemów wbudowanych. Zaś pisanie aplikacji z niewykorzystaniem gotowych bibliotek to jak wspomniał @oO zwykłe wyrobnictwo. Oczywiście nie jest też proste i nie ujmuje nakładu pracy takich ludzie, jednak nie jest to bardzo zaawansowane i profesjonalne programowanie.
          Java i .Net potrzebują środowisk najczęściej właśnie napisanych w C/C++. Tak naprawdę ciężko porównywać tak różne technologie, C/C++ kompiluje się do postaci w pełni binarnej dostosowanej do architektury danego sprzętu. Można zoptymalizować taki program dowolnie. Zaś przy Java i .Net jesteśmy ograniczeni tym co przygotowali nam autorzy środowiska. Jakby się nie kombinowało nie uzyska się większej wydajności niż w pełni natywny kod.

        4. Awatar krzychos7
          krzychos7

          P.S. Co do „Mit obalany wielokrotnie” to te dowody bardzo słabe. Z reguły przedstawiali je programiści Java który nie potrafili zoptymalizować programów w C/C++ (bądź specjalnie tego nie robili).

          @makak C nie jest przestarzałe, to że coś jest dla Ciebie trudne nie znaczy że jest zacofane. Przy C/C++ liczy się efekt końcowy, lepsza optymalizacja, wydajność i mniejszy rozmiar programu, jest to postawione ponad wygodę programisty. Wiadomo że przy C/C++ trzeba się wielokrotnie bardziej napracować niż przy Java i .Net ale to nie programiście ma być dobrze tylko odbiorcy programu.

        5. Awatar Królik
          Królik

          C a C++ to dwa różne języki i nie należy ich mylić. C++ jest wieloplatformowe, jeśli zgodzisz się na ograniczenie się do niewielkiego podzbioru języka, z którym poradzą sobie co bardziej egzotyczne kompilatory. Nawet przenoszenie kodu z VS na GCC i na odwrót potrafi przysporzyć niezłych problemów. I to całkowicie abstrahując od bibliotek. Popatrz sobie na Mozilla C++ portability guide.

          C++ można napisać cały system z oprogramowaniem na każdy sprzęt

          No zgoda i co z tego?
          JVM też można napisać na każdy sprzęt.

          To zasadniczo jest właśnie profesjonalizm, tworzenie systemów wbudowanych

          Tworzenie systemów wbudowanych jest względnie łatwe. W ogóle programowanie niskopoziomowe jest dość łatwe. Nie wiem, jak to może świadczyć o profesjonalizmie bądź jego braku.

          http://www.yosefk.com/blog/low-level-is-easy.html

          Jakby się nie kombinowało nie uzyska się większej wydajności niż w pełni natywny kod.

          Truizm. I zarazem tautologia, bo Java kompiluje się do kodu natywnego.

        6. Awatar Królik
          Królik

          P.S. Co do “Mit obalany wielokrotnie” to te dowody bardzo słabe. Z reguły przedstawiali je programiści Java który nie potrafili zoptymalizować programów w C/C++ (bądź specjalnie tego nie robili)

          Często spece od C/C++ nie potrafili podać lepszych implementacji.
          http://blog.zabiello.com/2009/03/28/scala-lang

          A nawet jeśli jest tak jak twierdzisz, to i tak nie ma to znaczenia. Żyjemy w czasach, gdzie aplikacje pisze się w takich wynalazkach jak:
          – JavaScript
          – ActionScript
          – PHP
          – Python, Ruby

          Wszystko to języki o rząd wielkości powolniejsze niż Java i nikomu to nie przeszkadza. Z kolei na serwerach coraz bardziej liczy się skalowalność a nie surowa wydajność na jednym rdzeniu. Tu C++ jest zjadany na śniadanie przez choćby Erlanga, Scalę czy nawet Javę. Może pochwalisz się, jakie to cudowne optymalizacje kompilatory C++ potrafią robić na kodzie wielowątkowym?

        7. Awatar Reddie
          Reddie

          C++ jest wieloplatformowe, jeśli zgodzisz się na ograniczenie się do niewielkiego podzbioru języka, z którym poradzą sobie co bardziej egzotyczne kompilatory

          Analogicznie – Java jest wieloplatformowa, jeśli zgodzisz się na ograniczenie do niewielkiego podzbioru języka, z którym poradzą sobie co bardziej egzotyczne JVM.

          Truizm. I zarazem tautologia, bo Java kompiluje się do kodu natywnego.
          A nie do bytekodu, wykonywanego przez JVM?

        8. Awatar Królik
          Królik

          Analogicznie – Java jest wieloplatformowa, jeśli zgodzisz się na ograniczenie do niewielkiego podzbioru języka, z którym poradzą sobie co bardziej egzotyczne JVM.

          No i właśnie to jest bzdura. Każda JVM certfikowana przez Suna (Oracle), jest w 100% zgodna ze standardem (licząc z dokładnością do bugów, ale są one niezmiernie rzadkie). Jeżeli jesteś producentem JVM, to żeby mieć prawo do nazywania tego Javą, musisz poddać swój produkt oficjalnej certyfikacji.
          Ostatnio bez ani jednej zmiany odpaliłem aplikację pisaną i skompilowaną pod Windows, która z założenia nie miała być przenośna, pod… AIXem. Więc to nie jest tylko teoria.

          Ponieważ nie ma certyfikacji na kompilatory C++, to każdy sobie rzepkę skrobie. Ba, nie wiadomo nawet jaki to jest dokładnie bezpieczny podzbiór C++. Wyjątków można używać? Dużo osób twierdzi, że nie. hash_map można? Też nie. Pokaż mi JVM, na której nie wolno używać wyjątków albo na której nie działa HashMap.

          Do tego dochodzi problem bibliotek. Biblioteka standardowa C++ jest niezmiernie uboga (nawet licząc Boosta), stąd bez zewn. bibliotek nie da się sensownie programować. Teraz bierzesz 5 różnych bibliotek od różnych producentów i się nagle okazuje, że cała wieloplatformowość ogranicza się do Windows + Linux.

          A nie do bytekodu, wykonywanego przez JVM?

          Dla obu języków sekwencja jest identyczna:
          1. kod źródłowy -> bajtkod
          2. bajtkod -> kod natywny

          W C++ obie czynności robi za jednym zamachem kompilator, w Javie jest to rozdzielone pomiędzy javac i JVM HotSpot 1 lub HotSpot 2.

        9. Awatar Reddie
          Reddie

          No i właśnie to jest bzdura. Każda JVM certfikowana przez Suna (Oracle), jest w 100% zgodna ze standardem (licząc z dokładnością do bugów, ale są one niezmiernie rzadkie).
          (…)
          Pokaż mi JVM, na której nie wolno używać wyjątków albo na której nie działa HashMap.

          J2ME/CLDC.

          Ponieważ nie ma certyfikacji na kompilatory C++

          Na całe szczęście. Kojarzysz Apache Harmony?

        10. Awatar Speaktrap
          Speaktrap

          GTAIV używa .NET, więc coś w tym musi być 🙂

        11. Awatar Królik
          Królik

          Sorry Reddie, ale w J2ME są zarówno wyjątki jak i hashmapy. J2ME to jest osobna specyfikacja. Też wiadomo, co jest dostępne, a co nie, też jest certyfikowana.

          Apache Harmony nie jest certyfikowane, ale jest w 99.9% zgodne. Nie słyszałem, żeby programiści Androida skarżyli się na jakieś problemy z kompatybilnością. Prawdopodobnie jeśli zapadnie ugoda między Oracle i Google, będzie w 100% kompatybilna i certyfikowana.

        12. Awatar Reddie
          Reddie

          @Królik: uops, faktycznie. Tzn. dokładnie rzecz biorąc to jest hashtable, ale odpowiada mniej więcej za to samo. Tym niemniej chyba nie powiesz, że to co jest tutaj daje pełną zgodność z innymi JVM:
          http://download.oracle.com/javame/config/cldc/ref-impl/cldc1.1/jsr139/allclasses-frame.html

          Co do Apache Harmony: wątpię, bo Google IIRC nie miało zbyt wiele wspólnego z tym projektem. Duża część zasobów

        13. Awatar Królik
          Królik

          Napisałem, że to jest osobna specyfikacja. Taka okrojona Java. Ale w ramach tej okrojonej Javy znowu, język wszędzie obowiązuje taki sam. W C++ problemy zaczynają się na poziomie składni języka. Do tej pory są problemy z pełną zgodnością z ANSI/ISO C++ 2003.

        14. Awatar tomaszkubacki
          tomaszkubacki

          @królik Google zostało pozwane przez Oracle za Jave a Novell za Mono nie…czyli java jest bardziej zagrożona patentami nie ? Tym się nie przejmują antymonowi hipokryci 😉 ?

        15. Awatar Reddie
          Reddie

          @Królik: język wcale nie jest taki sam. W J2ME nie ma np. generics.

        16. Awatar Królik
          Królik

          Język jest taki sam. Jest zgodny z Java 1.4.

          Natomiast kompilatory C++ nie są zgodne z __żadną__ wersją standardu. Zawsze są jakieś głupie odstępstwa – albo czegoś nie robią do końca dobrze (zwykle w zakresie templates), albo dopuszczają coś o co nikt ich nie prosił (np. alokacja tablic o zmiennym rozmiarze na stosie). Jakoś dziwnym trafem nikt nie robi „Java portability guides” ani „Java style guides”, tak jak robią Google i Mozilla (i pewnie wiele innych firm) dla C++, w których zabraniają np. alokacji w konstruktorach.

        17. Awatar ufoludek
          ufoludek

          Wiadomo że przy C/C++ trzeba się wielokrotnie bardziej napracować niż przy Java i .Net ale to nie programiście ma być dobrze tylko odbiorcy programu.

          Odbiorcy programu zazwyczaj jest dobrze, jak mniej zapłaci. A czas pracy programisty jest znacząco bardziej kosztowny od dodatkowego procka w komputerze, na którym soft chodzi.

        18. Awatar el.pescado
          el.pescado

          Odbiorcy programu zazwyczaj jest dobrze, jak mniej zapłaci.

          Ewnetualnie jak dostanie więcej ficzerów lub ładniejsze GUI. Co sprowadza się do jednego.

        19. Awatar trasz
          trasz

          @tomaszkubacki: Brawo, wlasnie odkryles, ze Stallman bredzil i/lub sial FUD odnosnie Mono. Zaskoczony?

      3. Awatar Królik
        Królik

        @makak: C nie jest przestarzałe. C jest ponadczasowe.
        Przestarzałe jest C++, i gdyby nie polityka MS aby z C++ zrobić główny język do tworzenia softu na Windows, to C++ miałby obecnie popularność ObjectiveC sprzed epoki iPhone. C++ nie oferuje nic ponad parę: (C + )

        1. Awatar Królik
          Królik

          Zjadło mi nawiasy.
          Miało być:

          C++ nie oferuje nic ponad parę (C + jakiś wysokopoziomowy język), gdzie jakiś wysokopoziomowy język to np. {Python, Ruby, Clojure, Scala, F#}.

        2. Awatar mc
          mc

          C może i jest ponadczasowe, ale na skalarne procesory, bo C to przenośny assembler na takie właśnie procesory. A te zaczynają powoli być przestarzałe. Ponadczasowy to jest lisp.

        3. Awatar Mikołaj
          Mikołaj

          @królik to napisz z zespołem jakąś większy program w C to zrozumiesz dlaczego lepiej pisać w C++ lub Javie. A składanie aplikacji z modułów C w połączeniu z językiem skryptowym to dopiero gehenna (wyszukiwanie błędów i pisanie testów same problemy). C jest świetny do sterowników lub gdy czas jest mniej ważny niż wydajność aplikacji (chociaż takie benchmarki jak http://shootout.alioth.debian.org/ dają do myślenia).

          Przy C/C++ liczy się efekt końcowy, lepsza optymalizacja, wydajność i mniejszy rozmiar programu, jest to postawione ponad wygodę programisty. Wiadomo że przy C/C++ trzeba się wielokrotnie bardziej napracować niż przy Java i .Net ale to nie programiście ma być dobrze tylko odbiorcy programu.

          A jak klientowi zależy na szybkim wprowadzeniu aplikacji bez bugów?
          Aplikacje korporacyjne pisze się prawie tylko w językach zarządzanych.

        4. Awatar Królik
          Królik

          Mikołaj: ten post to chyba nie do mnie. Jakie jezyki skryptowe? Wymieniłem tylko 2, żeby zwolennicy skryptowych się nie obrazili. Pozostałe 3: Clojure, Scala i F# nie są językami skryptowymi (choć można powiedzieć, że łączą zalety Javy/C# ze skryptowymi, ale są statycznie typowane). Chodziło mi tylko o pokazanie, że jestem raczej zwolennikiem pisania całości w językach wysokopoziomowych (blisko LISPu), a tam gdzie trzeba zejść do sprzętu, można skrobnąć jakiś mały modulik w C.

          A C++ lepiej unikać, bo tam masz praktycznie wszystkie te samy problemy co w C i na dodatek złudne poczucie bezpieczeństwa – nie skaluje się to do dużych aplikacji. Proteza na protezie zamiast porządnie zaprojektowanego wysokopoziomowego języka.

        5. Awatar Królik
          Królik

          @mc: W zestawie, który wymieniłem jest jeden z rodziny LISPów – Clojure jest bardzo blisko LISPa. Scala też, w sensie mechaniki, tylko ma inną składnię.

    2. Awatar oO
      oO

      Sorry za rozpętanie flejma. Myślałem, że umiecie zrozumieć żart.

      Choć skoro już komentujecie, to przynajmniej nie ośmieszajcie się mówiąc, że Java czy .net nie są wolne i zasobożerne. Takie po prostu są i żadne trollowanie tego nie zmieni.

      Oczywiście mają za to inne zalety. Głównie prostotę programowania, uwalniają programistów od ręcznego usuwania obiektów z pamięci, mają fajne gotowe klasy (choć przerośnięte), itd. – dzięki czemu w swojej klasie aplikacji tworzonych przez duży zespół prostych klepaczy kodu sprawdzają się idealnie.

      Ale kosztem jest szybkość i zużycie zasobów.

      Jeśli taka aplikacja będzie działać na serwerze, to pół biedy, bo cierpi twórca/zamawiający (choć niższe koszty mogą to wynagrodzić).
      Ale jeśli to aplikacja desktopowa, to używanie Javy/.neta jest po prostu bezczelnym sraniem na użytkownika końcowego.

      1. Awatar Mikołaj
        Mikołaj

        Nazwanie programistów Javy prostymi klepaczami kodu, ciekawe. W żadnym chyba języku programowania nie ma tylu nowoczesnych technologi i takiego dużego parcia na ciągłe poznawanie nowości.

        1. Awatar adamk
          adamk

          Te nowoczesne (proste w użyciu dla klepaczy kodu i myślące za nich) technologie na potrzeby np. JVM pisane są właśnie w C++ 😉

        2. Awatar Królik
          Królik

          Tak, a kompilatory C++ w C, a pierwsze kompilatory C w assemblerze. To nie jest żaden argument.

          Ale jeśli to aplikacja desktopowa, to używanie Javy/.neta jest po prostu bezczelnym sraniem na użytkownika końcowego.

          Możesz rozwinąć? Używam kilku desktopowych aplikacji Javowych i uważam, że nie mają sobie równych. Np. JEdit albo IntelliJ IDEA. Zasobożerności czy powolności nie zauważyłem. Za to zauważyłem ślamazarność OpenOffice’a. Kurna, to g*** się przycina jak piszę tekst na slajdach. Nigdy, ale to nigdy najcięższe IDE Javowe na starej Javie i starym kompie tak mnie nie wpieniło zacinaniem się.

          Kiepscy programiści zwalają winę na język. A prawda jest taka, że zarówno w Javie jak i w C++ można pisać szybkie i lekkie aplikacje dekstopowe. Tylko trzeba umieć.

        3. Awatar Królik
          Królik

          Te nowoczesne (proste w użyciu dla klepaczy kodu i myślące za nich) technologie na potrzeby np. JVM pisane są właśnie w C++

          To weź sobie otwórz katalog z JRE i zobacz ile kodu jest natywnego (skompilowanego C++) a ile napisanego w Javie (archiwa .jar). Tylko niewielki trzon JVMa jest napisany w C++. Cała otoczka jest napisana w Javie. Dlatego dużo łatwiej przenieść JVM na nowa platformę niż .NET – mniej kodu do portowania.

        4. Awatar Rsh
          Rsh

          Fakt 1) Wszystkie biblioteki GUI w Javie ssą pod Uniksami, co do jednej. – Skutek: Prawie nikt nie pisze normalnych aplikacji w Javie. Ja przynajmniej nie odczuwałem potrzeby na żadną taką aplikację od długieeeeego czasu. Kiedyś testowałem Azureus, ale był mega wolny. Eclipse również mega wolny. Netbeans – używalny, ale ślamazarny. Ssą to znaczy, że nie tylko są wolne, ale i także się nie integrują, jednak to nie jest problem Javy jako języka.

          Fakt 2) Języki zarządzalne w teorii nie muszą być wcale wolniejsze (ale to zależy też od języka) od natywnych odpowiedników. Czy kod się kompiluje statycznie, czy JITuje w trakcie uruchomienia – to nie ma większego znaczenia. Kompilatory dla tych nowoczesnych języków nie zdążyły jeszcze po prostu dostatecznie dojrzeć. Mono oferuje nawet tryb kompilacji zwany AOT – z programu w C# powstaje *całkowicie statyczna* binarka, podobnie do takiej jaka by powstała po uruchomieniu GCC. Powtarzam: w teorii nie wolniejsza od czegoś skompilowanego przez GCC. Nawet pewnie by się dało zrobić kompilator C#a dla backendu GCC – wyłączając pewne dynamiczne funkcje tego języka. Kontynuacja w kolejnym podpunkcie.

          Fakt 3) Niektóre języki zawsze będą wolniejsze od innych – nie ważne jak dobry kompilator powstanie. Np. brak silnego typowania ogranicza możliwość kompilatora do podjęcia decyzji w trakcie samej kompilacji – Javascript, Python do pewnego stopnia zawsze będą wolne. Nie lubię też Javy z powodu jakie ograniczenia narzuca na programistę np. brak możliwości tworzenia struktur, wszystko na stercie, brak wskaźników, dziwne rozróżnianie int od Integer – ogólnie czuć te ograniczenia – wiesz jak coś zrobić dobrze i szybko, a język na to nie pozwala. C# te rzeczy poprawia – według mnie C# w teorii może być dużo szybszy od Javy właśnie przez to, że można napisać kod, który jeden w jeden będzie działać binarnie tak jak taki napisany w C++. Pewną przeszkodą w porównywaniu wydajności może być odśmiecacz (Garbage Collector), który w pewnych przypadkach przyspiesza, a w innych wadzi – ale odśmiecacz można też dorzucić i do C i C++ – w D jest by design.

          Fakt 4) Wprawdzie mówi się, że C jest szybkie, ale pokuszę się o stwierdzenie, że C++ jest jeszcze szybsze. C zachęca używania wskaźników, gdzie C++ potrafi wstawić po prostu struktury. (templates vs. macros) C++ jest szybszy, bo pozwala robić te same rzeczy jakie potrafi C, ale w łatwy i wygodny sposób. W C programista (np. ja ^^) często nie wybiera najwydajniejszego rozwiązania z takich właśnie powodów. Ktoś mi kiedyś zarzucił po takim stwierdzeniu, że chyba kompletnie nie znam się na programowaniu. Chciałbym przypomnieć, że C++ to nadbudówka C – większość „bardzo poprawnych” programów w C się poprawnie skompiluje. Nie używając RTTI, polimorfizmu … używjąc szablonów mamy całkiem szybki arsenał. 😉

          Opinia: Według mnie korporacyjność Javy i .NET są dużymi przeszkodami dla szerokiej adaptacji tych środowisk – osobiście przekonałem się do C#’a, ale szczerze mówiąc nie palę się do używania tych rozwiązań właśnie przez to nakierunkowanie na Windows – z powodu Microsoftu, niedokończone implementacje w postaci Mono… Java z kolei nie używa technicznie pociągających rozwiązań. Zaletą dla niektórych może być prostota – nie dla mnie. Ze swoimi wadami i ograniczeniami nadal przyjemnie mi się programuje w C/C++ – wszelkie moje potrzeby GUI realizuje Qt, które bez jednej zmiany w kodzie pozwala zrobić binarkę zarówno na Windows jak i Linuksa – po co mi więcej? 😉

          Uff 🙂

        5. Awatar oO
          oO

          @Rsh
          Nic dodać, nic ująć.

          Ale fakty do wyznawców javy czy .neta nie dotrą.

        6. Awatar el.pescado
          el.pescado

          Np. brak silnego typowania ogranicza możliwość kompilatora do podjęcia decyzji w trakcie samej kompilacji – Javascript, Python do pewnego stopnia zawsze będą wolne

          Niekoniecznie. Po prostu inaczej się je kompiluje – wykorzystuje się tracing – nie wiem jak to przetłumaczyć na polski. Przykładem może być kompilator TraceMonkey Mozilli.

          Nie lubię też Javy z powodu jakie ograniczenia narzuca na programistę np. brak możliwości tworzenia struktur, wszystko na stercie, brak wskaźników, dziwne rozróżnianie int od Integer

          Nie wszystko jest tworzone na stercie – w pewnych przypadkach JVM może zdecydować się zaalokować obiekt na stosie. Typy proste („int”) zostały wprowadzone właśnie ze względu na wydajność. Z resztą autoboxing został dodany już do Javy 5.

          Pewną przeszkodą w porównywaniu wydajności może być odśmiecacz (Garbage Collector)

          Polecam poczytać artykuły dot. JVM. Sporo ich można znaleźć np. na stronach IBM.

          Ale fakty do wyznawców javy czy .neta nie dotrą.

          Fakty, czyli benchmarki? O ile średnio rzeczywiście może wyjść że kod napisany w C++ jest nieco szybszy od kodu w Javie, trzeba też wiedzieć jak to się przekłada na rzeczywistą szybkość oprogramowania. Gdyby numeryczna wydajność miała decydujące znaczenie, pewnie do dzisiaj pisałoby się w Fortranie. Tymczasem wydajność wielu aplikacji jest IO-bound, czy wręcz user-bound i kwestia użytego języka programowania niewiele tu wnosi.

        7. Awatar el.pescado
          el.pescado

          Post Scriptum.

          Opinia: Według mnie korporacyjność Javy i .NET są dużymi przeszkodami dla szerokiej adaptacji tych środowisk

          Java i .NET zostały szeroko zaadaptowane. Spójrz chociaż na ogłoszenia o pracę.

        8. Awatar Rsh
          Rsh

          Java i .NET zostały szeroko zaadaptowane. Spójrz chociaż na ogłoszenia o pracę.

          Oczywiście źle to sformułowałem. 😀 Zgadza się, jest dużo ofert o pracę, ale ja myślę o takich środowiskach geekowskich bardziej i adaptacji 4fun. Widzę mój desktop i widzę C/C++. Spójrz na pulpit Windowsa, nadal większość C/C++. Pulpit MacOSX? To są wybory programistów bez narzucania przez firmę. To jest adaptacja poprzez wybór …

          @el.pescado: Możesz podlinkować do co ciekawszych artykułów może? Byłbym wdzięczny.

        9. Awatar Królik
          Królik

          Jeśli chodzi o środowiska geekowskie to wystarczy popatrzeć na projekty OpenSource. Większość to C i Java (przynajmniej na Ohloh i SourceForge). Natomiast jeśli chodzi o środowiska hackerskie powiązane z uczelniami, to dominują wszelkiej maści języki funkcyjne: CL, Clojure, Scala, F#, OCaml, Haskell.

          W C++ programowałem kiedyś dużo i dziękuję: fajnie się robi w tym proste rzeczy, ale robienie czegoś poważniejszego, w zespole, to masakra. Języki, w których przez pomyłkę dowolny fragment kodu może niejawnie uszkodzić dowolną strukturę danych, nie skalują się do dużych projektów. W ogóle ten język to prowizorka, trudno w nim znaleźć jakiś feature, który by nie był pod jakimś względem problematyczny (niestety projektanci C++ chyba nie słyszeli o czymś takim jak ortogonalność). Jeśli ktoś wybiera programowanie w C++ z powodu rzekomego „braku ograniczeń” w C++, to oznacza, że albo nie zetknął się jeszcze ze złożonymi problemami programistycznymi, albo nie zna żadnych innych elastyczniejszych języków, albo lubuje się w skomplikowanych rozwiązaniach (jest taki typ programistów, którzy myślą, że jak napiszą jakiś skomplikowany kawałek kodu, to że są tacy pro).

          Można się spierać, że Java nie ma paru rzeczy jakie ma C++, ale już w przypadku porównania C++ ze Scalą (na JVM) w kategorii „język wysokiego poziomu” C++ to zabawka.

          PS: Swing w Javie to porażka dla użytkownika. Pełna zgoda. Sun totalnie olał swojego czasu GUI w Javie. Traktował GUI bardziej jako dodatek aby można było robić narzędzia konfiguracyjne a nie porządne aplikacje. No, ale jest przecież SWT… a ono się integruje bardzo ładnie.

        10. Awatar oO
          oO

          @el.pescado
          „Java i .NET zostały szeroko zaadaptowane. Spójrz chociaż na ogłoszenia o pracę.”

          W tym właśnie problem, bo powinny być stosowane w wąskim segmencie rynku, a nie wpychane na siłę wszędzie gdzie się da, od tak, bo są trendy i jest dużo słabo wykwalifikowanej siły roboczej.

          A brak wskaźników w Javie to tragedia tej platformy. Po prostu katastrofalny błąd projektowy, który uniemożliwia normalne tworzenie w tym czegokolwiek.

        11. Awatar Królik
          Królik

          A brak wskaźników w Javie to tragedia tej platformy. Po prostu katastrofalny błąd projektowy, który uniemożliwia normalne tworzenie w tym czegokolwiek.

          LOL. Java ma wskaźniki, dziecko. Java nie ma arytmetyki wskaźnikowej. Pokaż mi uzasadnione użycie arytmetyki wskaźnikowej w C++.

        12. Awatar Królik
          Królik

          A co do słabo wykwalifikowanej siły roboczej, to nie zauważyłem, aby koderzy C++ byli jakoś lepiej wykwalifikowani. Wystarczy spojrzeć na denną w działaniu jakość kodu OpenOffice czy co niektórych aplikacji KDE. Niestety najczęściej są to zadufani w sobie kolesie, którzy myślą, że skoro rozkminili wskaźniki i dziedziczenie wirtualne, to potrafią programować. Tacy goście są bardziej niebezpieczni w projekcie, niż koderzy Javy, którzy nauczyli się Javy dla kasy. 😛

        13. Awatar Królik
          Królik

          W tym właśnie problem, bo powinny być stosowane w wąskim segmencie rynku, a nie wpychane na siłę wszędzie gdzie się da, od tak, bo są trendy i jest dużo słabo wykwalifikowanej siły roboczej.

          Nikt Javy na siłę nigdzie nie wpycha, tylko po prostu Java potrafi lepiej wykorzystać drogie zasoby niż C++.

        14. Awatar ufoludek
          ufoludek

          @Królik:

          Tacy goście są bardziej niebezpieczni w projekcie, niż koderzy Javy, którzy nauczyli się Javy dla kasy.

          Pełna zgoda. Co gorsza jak już rozkminią, to czują silną wewnętrzną potrzebę użycia każdej psychodelicznej, zaciemniającej kod, konstrukcji C++ w projekcie. Szczególnie zabawny jest kod gościa, który przeżywa akurat fascynację template’ami.

        15. Awatar Rsh
          Rsh

          Powinni nakręcić film p.t. „Java – Zamknięty umysł”. 😛

        16. Awatar Królik
          Królik

          Widzisz, zaawansowani programiści Javy i ich zabawki się szybko rozwijają. Mamy różne fajne nowe rzeczy jak JavaFX, Groovy, Clojure czy już wspomniana przeze mnie wcześniej Scala. W ramach nich z kolei jest rozwijanych wiele technologii jak choćby ScalaZ, Lift albo Squeryl, które swoją innowacyjnością popychają całą dziedzinę do przodu.

          Natomiast jak programiści C++ pakowali zapytania SQL w (non-unicode) stringi 20 lat temu, tak będą pakowali je przez kolejne 20 lat. 😛

        17. Awatar Królik
          Królik

          BTW: Cały czas czekam na uzasadniony przykład użycia arytmetyki wskaźnikowej w C++. No, oO, dawaj.

        18. Awatar el.pescado
          el.pescado

          W tym właśnie problem, bo powinny być stosowane w wąskim segmencie rynku

          Właśnie C++ powinno być stosowane w wąskim segmencie rynku.

          a nie wpychane na siłę wszędzie gdzie się da

          Java nigdzie nie jest wpychana na siłę. Może .NET trochę, ale raczej na obszarze zastosowań Javy.

          od tak, bo są trendy i jest dużo słabo wykwalifikowanej siły roboczej.

          Wiem, że czasy kiedy bajty były cenniejsze od złota, wszystko pisało się w asemblerze a Fortran był największą ekstrawagancją były romantyczne, ale świat się zmienia i trzeba pogodzić się z faktem że nie trzeba być nie wiadomo jakim h4xxorem żeby napisać notatnik. Podobnie jak 90% softu użytkowego.

        19. Awatar el.pescado
          el.pescado

          @Rsh: co do artykułów, Java theory and practice: Garbage collection and performance – kilka ciekawostek odnośnie garbage collectora. Co do zamkniętego umysłu – w tym wypadku akurat obóz C++ zamyka się na wszelkie alternatywy;)

        20. Awatar Rsh
          Rsh

          @el.pescado: Dzięki za linka, zaraz przeczytam, ale chciałem się odnieść do tego co mówiłeś o tracingu. Temat jest niezwykle ciekawy owszem i niecierpliwie będę oczekiwał rozwoju w tej dziedzinie – jednak z tego co piszą ludzie nawet zajmujący się tym temat, nie ma żadnego hurra optymizmu na temat ostatecznej optymalizacji ani czy lepszy jest tracing czy inne rozwiązania … i nie wiem czy to jest problem tej samej natury, ale śmiem podejrzewać, że sprowadzenie takiego dynamicznego kodu do postaci względnie statycznej jest równoznaczne z którymś z problemów NP-trudnych z jakimi boryka się aktualna algorytmika. Rozwiązania jakie istnieją nie są optymalne i nigdy prawdopodobnie nie będą, więc o ile w teorii pewnie można zrobić taki odpowiedni tracing, to zapomnij o sensownej złożoności. Przy czym chętnie będę wyprowadzony z błędu. 😉 Natomiast w przypadku silnie typowanych języków z nutką dynamizmu sprawa jest dużo bardziej komfortowa – szczególnie C# tak jak pisałem. Java może i zgadywać czasami co wrzucić na stos, ale ja jej nie ufam. (wybaczcie)
          Pozdrawiam.

        21. Awatar mc
          mc

          Arytmetyka wskaznikow to jeszcze pikus. Ale C++ ma cos lepszego – swoj wlasny duplikat arytmetyki wskaznikow (jak ktos np. czytal C++ FQA, to wie, ze niezbyt udolne duplikowanie funkcjonalnosci C to takie hobby tworcow jezyka). Zdarzylo mi sie osobiscie zrobic obsuwe releasujac nastepujacy kawalek kodu:

          costam = *(wektor.begin() + a1 – a2);

          Oczywiscie a1 i a2 sa dobrane tak, ze odwolujemy sie do elementu istniejacego w naszym std::vectorze. Dobrze znajacy C++ od razu dostrzega, ze cos tu moze pojsc nie tak – od czasu do czasu kod klienta wysypywal sie (jakis runtime-check, chyba nawet nie wyjatek). Dalem ciala. Ale nie znam innego jezyka, ktory potrafilby tak mocno kopnac w dupe za cos tak idiotycznego.

          PS Oczywiscie powinno byc *(wektor.begin() + (a1 – a2)) – niech zyje przeladowywanie operatorow i sensowne runtime-checki!

        22. Awatar borizm
          borizm

          Coście się do Java przyczepili? Że rt.jar ma dużo klas i ogólnie JVM to głównie sam bytecode?
          A kompilatory dla C/C++ optymalizujące w trakcie wykonywania to co innego robią niż JIT w JVM?
          A widzieliście z czego się FireFox głównie składa? Z JavaScriptu + XUL pracującego na jego własnej „maszynie wirtualnej”.

      2. Awatar jacek2v
        jacek2v

        @oO

        Prostotę programowania to ma np. Python 🙂 Java to przy nim szczyt (taki niższy od C++:)) komplikacji 🙂 Zerknij na np. http://shootout.alioth.debian.org/ i porównaj ilość oraz klarowność kodu Javy i Phython.
        Ja cenię Javę za przebogate i dobrze poukładane (w większości przypadków) biblioteki, oraz to, że zmusza do pisania obiektowego 🙂 Python niestety pozwala na pisanie nie obiektowe, ale to nie zawsze jest złe 🙂 Dzięki temu świetnie nadaje się do pisania skryptów.

        Co do szybkości kodu i zużycia pamięci to moim zdaniem optymalizacja powinna być OSTATNIM krokiem w pisaniu aplikacji, a nie pierwszym 🙂

        Co do srania na użytkownika końcowego to się nie zgodzę. Wymienioną tu czynność porównałbym raczej do tego, gdy programista napisze „parchate” GUI, które tylko on oraz garstka jego znajomków może używać. Takie GUI napisane bez wczucia się w potrzeby użytkownika i tłumaczenie, że to się inaczej nie da bo np. combo box tak działa – to jest sranie 🙂 Oczywiście szybkość działania dla end usera też jest istotna, ale bez przegięć – tu polecam zasadę Pareto 80% wyników za 20% roboty 🙂

        Pzdr.

    3. Awatar Mikołaj
      Mikołaj

      A jednak Java w tym siedzi, jako język do pisania pod valvic 🙂

  2. Awatar marcinsud
    marcinsud

    tylko mi się strona rozjechała?

    1. Awatar b.YISK
      b.YISK

      Znowu wideo się źle dodało. Już poprawiłem.

  3. Awatar krzabr
    krzabr

    Jego pewnie też dadzą do statystyk iOS vs Android 🙂

    1. Awatar lolek
      lolek

      Gdyby wszystkie telewizory z linuksem na pokładzie liczyć do desktopów to Linux mógłby atakować próg 2% 😉

      1. Awatar krzabr
        krzabr

        Zwłaszcza te wolnorynkowe bzdety o wyborze rynku i klijentów .

  4. Awatar cookie
    cookie

    No dobra, rozumiem że android, YouTube itd…. Ale czy przy pomocy tego urządzenia da się w ogóle oglądać telewizję? Już nie koniecznie analogową, ale przynajmniej cyfrową lub podpiąć takie urządzenie jak dekoder telewizji kablowej?

    1. Awatar Reddie
      Reddie

      Chciałbyś podpiąć telewizor jako dekoder? Sporo masz miejsca 😉

      Za samo wyświetlanie obrazu odpowiadają komponenty sprzętowe.

  5. Awatar jann
    jann

    „Android 1.5 and earlier versions of the platform were designed to support a single screen configuration — HVGA (320×480) resolution on a 3.2″ screen”

    Jakim cudem oni tego używają 20-30 calowym telewizorze? Jaką on ma rozdzielczość?

    1. Awatar jacek2v
      jacek2v

      @jann
      Cudem OpenSource 🙂

    2. Awatar jolo
      jolo

      Czy to jest telewizor? Chyba ktoś myli pojęcia. Czy pracuje w standardzie DVB-T? Czym to się różni od konsoli czy smartfona podłączonego do monitora?
      Czy Android bierze tutaj udział w obróbce sygnału TV?
      Przykładem mogą być telewizory panasonic gdzie od dawna siedzi Linux.

      1. Awatar dodo
        dodo

        Telewizor zintegrowany z STB. STB na bazie Androida.

  6. Awatar jerry
    jerry

    Gdyby numeryczna wydajność miała decydujące znaczenie, pewnie do dzisiaj pisałoby się w Fortranie.

    Właśnie od jakiegoś czasu klepię programy w Fortranie, może to niektórych zdziwi ale ten jężyk żyje. Przyznaje na poczatku sam byłem zaskoczony 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *