Premier Singapuru – Lee 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.
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.
True story.
+1
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ć.
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?
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.
Były by większe propsy gdyby wrzucił źródła na githuba :P
I zrobiłbyś forka? :P
No ba :)
I napisał to w Java Script :P
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
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…
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.
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)
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 :)
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).
>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.
Był pewien test nawet tu, na osworld.pl https://osworld.pl/czy-java-faktycznie-jest-taka-wolna/
Java9 idzie w kierunku aby m.in. oszczędzić tą pamięć na systemach wbudowanych.
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.
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ą.
Prace już trwają, wersję rozwojową Javy9 z otwartym kodem (OpenJDK) można już ściągnąć i sobie testować.
Prostą stronkę Html? A co powiesz o AngularJS, NodeJS, ExpressJS?
„Premier Lee Hsien Loong ma obecnie dwójkę synów i oboje są absolwentami MIT.”
Obaj, nie oboje, do stu beczek bugów!
+1
Poprawione :)
Dziękuję. Podpisano: upierdliwy samozwańczy korektor newsów w internecie:)
Proponuję zatem, abyś znalazł posadkę w jakimś portalu jako korektor ;-P
Wiesz jak to mówią: gdzie zaczyna się praca, tam kończy się zabawa;)
Podszywacz. Mile widziany permaban dla takich śmieci.
Wybacz, ale jaką mam gwarancję, że to Ty nie podszywasz się pode mnie? Masz patent na owe trzy znaki?
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.
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 :-)