Premier Singapuru Lee Hsien Loong potrafi programować w C++

Premier Singapuru Lee Hsien Loong potrafi programować w C++

    przez -
    33 5213
    Programowanie
    Premier SingapuruLee Hsien Loong to jedna z niewielu osób, które potrafią na swoim stanowisku poszczycić się znajomością technologii. Nie tak dawno przyznał, że potrafi programować w języku C++, a kilka lat temu napisał prosty program do rozwiązywania Sudoku. Kilka dni temu został poproszony o udostępnienie źródeł, co też uczynił: Sudoku solver. Aplikacja dostępna jest na licencji MIT.

    Program jest bardzo prosty i został skompilowany pod Windows (command line). Tuż po uruchomieniu, należy wpisać linię z danymi do Sudoku np. 1-3-8—6. Na samym końcu, program wypisze wszystkie możliwe rozwiązania dla danych liczb oraz kilka statystyk.

    C:\CPP>sudoku2
    Row[1] : ---------
    Row[2] : -----3-85
    Row[3] : --1-2----
    Row[4] : ---5-7---
    Row[5] : --4---1--
    Row[6] : -9-------
    Row[7] : 5------73
    Row[8] : --2-1----
    Row[9] : ----4---9
    
     --- --- ---
     --- --3 -85
     --1 -2- ---
    
     --- 5-7 ---
     --4 --- 1--
     -9- --- ---
    
     5-- --- -73
     --2 -1- ---
     --- -4- --9
    
     987 654 321
     246 173 985
     351 928 746
    
     128 537 694
     634 892 157
     795 461 832
    
     519 286 473
     472 319 568
     863 745 219
    
    Level Counts:
    
    (3, 9):   1 (8, 9):   2 (4, 9):   4 (5, 9):   8 (6, 9):  15 (1, 9):  23
    (3, 8):  33 (8, 8):  46 (4, 8):  79 (1, 8): 119 (5, 8): 182 (6, 8): 250
    (9, 8): 287 (4, 7): 347 (6, 7): 478 (6, 5): 588 (6, 1): 732 (6, 3): 828
    (6, 4): 862 (6, 6): 895 (4, 5): 795 (4, 3): 761 (5, 5): 843 (7, 5): 829
    (2, 5): 616 (1, 5): 594 (2, 7): 543 (2, 3): 565 (7, 3): 551 (2, 4): 577
    (3, 6): 565 (3, 4): 590 (1, 4): 572 (1, 6): 595 (7, 4): 612 (5, 4): 576
    (7, 6): 476 (7, 7): 389 (7, 2): 262 (4, 2): 184 (2, 2): 140 (2, 1):  95
    (5, 6):  56 (8, 7):  34 (8, 6):  18 (3, 1):  13 (8, 1):  10 (3, 7):   7
    (3, 2):   8 (1, 7):  10 (5, 1):  10 (5, 2):   6 (8, 2):   4 (8, 4):   2
    (9, 1):   1 (1, 1):   1 (9, 2):   1 (9, 3):   1 (9, 4):   1 (4, 1):   1
    (9, 6):   1 (9, 7):   1 (1, 3):   1 (1, 2):   1
    
    Count = 17698
    
    
    Total Count = 24395
    
    C:\CPP>

    Premier Lee Hsien Loong ma obecnie dwójkę synów i obaj są absolwentami MIT. Gdy tylko odejdzie na emeryturę, zamierza zgłębić język programowania Haskell, który został mu polecony przez jednego z jego synów.

    • dfgsdfgsdg

      U nas “chu. du.. i kamieni kupa”, sprzedawanie lasów itp.
      I jeszcze na to głosujecie.
      Komor nawet nie chce pokazywać się w publicznych debatach, żeby miliony głupków nie zajarzyło jak są strzyżeni przy skórce.

      • satan

        True story.

      • o_O

        +1

      • o_O

        Tylko rewolucja i ścięcie tego ścierwa pomoże. Choć społeczeństwo też jest wyjątkowo durne i oporne na rozsądek, więc równie dobrze może nic się nie zmienić. Ale wychodzę z założenia, że warto próbować.

      • Anarchist

        Nie ma co głosować, to jak oddawanie głosu na jedną wielką partię. I tak po wyborach wszyscy zaczynają pieprzyć to samo, a czy coś się zmienia?

      • o_O

        Więc trzeba głosować widłami. Zapamiętają na 50 lat.
        A przede wszystkim zmieni się władza, czy raczej “reprezentanci narodu”. To już nie będą “oni”, tylko “my”.
        Po latach komuny do obecnej władzy zdrajców (będącej zresztą bezpośrednim spadkobiercą i przedłużeniem władzy komunistycznej) absolutnie to nie dociera.

    • Piotr

      Były by większe propsy gdyby wrzucił źródła na githuba :P

    • dex4er

      DOS? Jaki znowu k^&^# DOS?!

      $ file Sudoku2.exe
      Sudoku2.exe: PE32 executable (console) Intel 80386, for MS Windows
      $ strings Sudoku2.exe | head -n1
      !This program cannot be run in DOS mode.
      $ g++ -o Sudoku2 Sudoku2.cpp
      $ file Sudoku2
      Sudoku2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32

    • Szyk Cech

      Jak widać, ten jego synalek do najbystrzejszych nie należy (pomimo skończenia MIT). Bo jasne jest, że żaden język nie ma takich możliwości jak C++. A jak chce się uczyć skryptów to Python jest również bezkonkurencyjny. Ogólnie, to: do programowania: C++, do skryptów Pyhon i do reszty Bash. Po za tym można się nauczyć JavaScript by zrobić oryginalną stronkę w Html…

      • Phz

        Widać, że ***** się znasz.

        Java i C# w testach wydajności już się zbliżają do C++. Python ze względu na brak kompatybilności wstecznej wersji 3 z 2.7 ma bardzo mocną konkurencję w postaci Ruby’ego (który oferuje świetny system Gemów i bdb framework webowy RubyOnRails). Kiedy trzeba napisać coś niskopoziomowego to C++ ssie – tylko czyste C, a do FPGA i ASIC Verilog.
        A Haskell… bardzo ciekawy język funkcyjny (nie mylić z proceduralnym), ale wymaga dobrej znajomości matmy. Polecam raczej Scalę – prostsza, kompiluje się do bytecodu jak Java i ma fajne frameworki.

      • Szyk Cech

        Nie piszę, o wydajności C++ w porównaniu do Java czy C# bo wiadomo, że i tak C++ jest lepsze i zawsze będzie, ale piszę o możliwościach języka. Piszesz, że siłą Ruby mają być biblioteki, ale do Pythona zawsze nowe biblioteki można dopisać, a z języka Ruby Pythona nie zrobisz (chyba że przez zerwanie kompatybilności). Przy niskopoziomowym programowaniu C++ wcale nie ssie tylko trzeba umieć w nim pisać. Za to czyste C to masakra jeśli ktoś się przyzwyczaił do obiektówki. A co do Skali to tylko frajerzy mogą wybierać języki oparte na wirtualnych maszynach i dlatego ich jedynym zastosowaniem jest oprogramowanie biznesowe, bo o tym w czym piszą programiści decydują nie programiści tylko “sfrajerowani technicznie” dyrektorzy. Wiem o czym piszę, bo próbowałem się nauczyć Java i przepisałem kilka programików z C++ i Python do Java tak by mieć potrzebne mi narzędzia. I ta Java okazała się zakręconym pomieszaniem z obiektowaniem w którym i tak to co powinno być rozwiązane przez dziedziczenie nie jest tak zrobione (np. kodowanie plików tłumaczeń trzeba robić na około żeby wciągać pliki w UTF-8 bo inaczej to w ogóle nie ma polskich znaków, albo źle działające layouty)

      • Krzysztof Filipek

        Dopisać bibliotekę można zawsze, każdy język ma swoje zastosowania. Java powstawała jako język do programowania sieciowego czy jak się tam to nazywa. Nie ma lepszego języka, są różne potrzeby :)

      • asd

        Różnice pomiędzy językami stają się coraz mniejsze, a o technologiach wybieranych w korpo nie decydują tylko kwestie techniczne, ale też polityczne. C++ nie ma platformy do pisania apek biznesowych (chodzi mi o taki pełny zestaw ‘bibliotek’ jak Spring czy JavaEE). Ruby i Python to CGI, i też nie mają tak rozwiniętej platformy jak Java (nie ma porównania).

      • o_O

        >Java i C# w testach wydajności już się zbliżają do C++

        Chyba testach sponsorowanych przez literki O i MS.

        Wielkie kobyły, które gdy już zeżrą 1GB RAMu i pokompilują już wszystko co trzeba JITem, to może i faktycznie osiągają wyniki zbliżone (tzn. 2-3 razy wolniej) do C++.

        Ale przy małych programach albo innych wymagających zastosowaniach szczególnie na low-endowym lub wbudowanym sprzęcie maszyna wirtualna z kodem bajtowym to porażka i spowolnienie o rzędy (!) wielkości.

        I tak będzie zawsze, bo wynika to z samej koncepcji tych cudactw. Interpreter bajtkodu napisany w C++ nie będzie szybszy od C++. A Garbage Collector działający jako magiczny proces w tle zawsze będzie wolniejszy od ręcznego (lub smartowego, a więc nadal przewidzianego przez kompilator) zwalniania pamięci. Więc albo będzie muliło (przez GC), albo będzie zapchany RAM – innej opcji nie ma.

      • tomangelo

        Był pewien test nawet tu, na osworld.pl http://osworld.pl/czy-java-faktycznie-jest-taka-wolna/

      • asd

        Java9 idzie w kierunku aby m.in. oszczędzić tą pamięć na systemach wbudowanych.

      • o_O

        Idzie, ale chyba z marketingiem.

        >Więc albo będzie muliło (przez GC), albo będzie zapchany RAM – innej opcji nie ma.
        Oraz:
        >Interpreter bajtkodu napisany w C++ nie będzie szybszy od C++.
        Tyle na ten temat.

      • O_o

        Nie wiesz jednak, czy na marketingu się skończy. Wątpię, byś pracował w Oracle. Szału nie będzie, to Java pod wodzą Oracle, jednakże zmiany są – swoim tokiem, ale są.

      • asd

        Prace już trwają, wersję rozwojową Javy9 z otwartym kodem (OpenJDK) można już ściągnąć i sobie testować.

      • Peter Maciejko

        Prostą stronkę Html? A co powiesz o AngularJS, NodeJS, ExpressJS?

    • a

      “Premier Lee Hsien Loong ma obecnie dwójkę synów i oboje są absolwentami MIT.”
      Obaj, nie oboje, do stu beczek bugów!

      • o_O

        +1

      • Poprawione :)

      • a

        Dziękuję. Podpisano: upierdliwy samozwańczy korektor newsów w internecie:)

      • o_O

        Proponuję zatem, abyś znalazł posadkę w jakimś portalu jako korektor ;-P

      • a

        Wiesz jak to mówią: gdzie zaczyna się praca, tam kończy się zabawa;)

      • o_O

        Podszywacz. Mile widziany permaban dla takich śmieci.

      • o_O

        Wybacz, ale jaką mam gwarancję, że to Ty nie podszywasz się pode mnie? Masz patent na owe trzy znaki?

      • o_O

        Masz taką gwarancję: spójrz w lustro i zobacz jakim jesteś zerem. Gotowe.

        Jakoś nie zauważyłem, żeby absolutnie ktokolwiek w Internecie podpisywał się o_O. To podobnie jak bardzo unikalny nick-name. Ale co będę kretynowi tłumaczył oczywiste rzeczy…
        Wolisz być sobie bezwartościowym zerem – bądź nim.

      • o_O

        Ja się podpisuję takim nickiem.

        Nie wiem jak bardzo trzeba mieć wyprany mózg, aby nazywać kogoś zerem za nick internetowy. Wyłącz komputer, odetnij połączenie internetowe na tydzień, zacznij żyć realnym życiem.

        Nick nie jest unikalny – to bardzo popularna emotikona :-)