Compi Opublikowano 25 Listopada 2012 Udostępnij Opublikowano 25 Listopada 2012 Tytuł: Slap Gatunek: Kompilator/Interpreter do wirtualnej maszyny DM+ Opis: Zagłębiając się w asemblera, dla treningu stworzyłem sobie interpretowalny język, składnią przypominający pascala i pythonga. Wyewoulował z interpretera wirtualnej maszyny. Pracuje nad wsparciem dla klas i wizualnych komponentów. Slap jest w stanie tworzyć "samostojące" pliki exe dla Windowsa. Pracuję także nad rozbudowaniem standardowej biblioteki o lepsze i ciekawsze funkcje. Zastosowanie? Myślę, że każdy znajdzie tu coś dla siebie. Ciekawostką jest to, że antywirusy nie przeszkodzą nam w niczym. Zagnieżdżanie i wywoływanie procedur działa. Chciałbym dodać rekurencje i wywoływanie zmiennych jako funkcji. Pracuje także nad helpem, bo moim zdaniem sam język i jego możliwości są dosyć ciekawe i obiecujące. Myślę, że za niedługo dodam implementacje języka, bo póki co, nadal się zmienia. @EDIT Tak więc przez ten czas, leniwie po nocach opracowałem składnie, którą powinien mieć język wysokiego poziomu. Oczywiście, jest to Turing Tarpit, czyli język jest zupełny w sensie Turinga. Kod można sobie spokojnie zagnieżdżać, nie ma z tym problemu. Co się zmieniło? DM+ stał się maszyną wirtualną, a Slap to translator do komend niższego poziomu. Dodałem też tablice, na razie jednopoziomowe, ale myślę, że nie będzie problemu je rozszerzyć. Slap jest w stanie obliczać złożone równania matematyczne, np: GML log(beer^2*3/4*4+1-1.92*beer)); Gdzie beer to zmienna liczbowa. Buduje bibliotekę standardową, i dll w którym nie funkcję natywne nie chcą się wywoływać przez stdcall Paradygmaty: -Proceduralny -Strukturalny -Obiektowy -Imperatywny Post edytowany: 31.12.12 Download: Pobierz mię! Rozmiar pliku: 1 Mb Przykładowy program: GML %import standard% def (silnia); var silnia var step var formula formula:=n repeat n-1 step:=n formula (formula*step); silnia:=formula while ( n > 2 ) return //Program liczący silnie. Przykład SLAP def (entry); call initconsole(Silnia,); var n call writeconsole(Podaj liczbe: ,); call readln(); n:=readln call silnia(); call writeconsole(silnia,); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Listopada 2012 Udostępnij Opublikowano 26 Listopada 2012 chyba każdy w końcu przechodzi przez zrobienie swojego assemblera :D swoją drogą, skoro wszystko jest stringiem, to do zastosowań real time się nie nada, zaś do skryptowania bloków złożonych poleceń to już wypadało by użyć czegoś wysokopoziomowego. mógłbyś dodać jakiś kompilator wysokopoziomowego języka (c-, java-, c#-like składnia), co o tym myślisz? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 26 Listopada 2012 Autor Udostępnij Opublikowano 26 Listopada 2012 Drogi psiksie :) Rozbudowywuje właśnie DM+ o bloki, funkcje i iteracje. Zobaczymy co z tego wyjdzie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 27 Listopada 2012 Autor Udostępnij Opublikowano 27 Listopada 2012 Jak już mówiłem, ulepszam mój języczek o zagnieżdżanie, funkcje i bloki: GML //Taki sobie przykład odliczania w dół def (konsola) external AllocConsole:kernel32 , return def (pisz) external puts:clib xx, return def (entry) %no_out% var zmienna1 var xx xx:=100; zmienna1:=TEST call konsola repeat call pisz xx-1 until (xx > 0); external FreeConsole:kernel32 , Ten o to programik odliczy nam od 100 w dół przy pomocy biblioteki kernel32 i clib. Muszę zrobić biblioteke standardowo, jak każdy szanujący się jezyk posiada. Powyższy kod jest ładnie przetłumaczony do kodu niższego poziomu: GML //Taki sobie przykład odliczania w dół ::konsola var AllocConsole RG1:=##0 RG2:=##0 RG3:=##0 RG4:=##0 RG5:=##0 extl kernel32,AllocConsole AllocConsole:=RG0 return ::pisz var puts RG1:=xx RG2:=##0 RG3:=##0 RG4:=##0 RG5:=##0 extl clib,puts puts:=RG0 return ::entry %no_out% var zmienna1 var xx xx:=100 zmienna1:=TEST call ::konsola ::rep00008B71 call ::pisz xx-1 cmp xx,0 if > ::rep00008B71 var FreeConsole RG1:=##0 RG2:=##0 RG3:=##0 RG4:=##0 RG5:=##0 extl kernel32,FreeConsole FreeConsole:=RG0 HALT Wszystko ładnie pięknie :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 28 Grudnia 2012 Autor Udostępnij Opublikowano 28 Grudnia 2012 Tak więc przez ten czas, leniwie po nocach opracowałem składnie, którą powinien mieć język wysokiego poziomu. Oczywiście, jest to Turing Tarpit, czyli język jest zupełny w sensie Turinga. Kod można sobie spokojnie zagnieżdżać, nie ma z tym problemu. Myślę nad dodaniem rekurencji i zmiennych lokalnych. Ciekawym aspektem byłoby też, gdybym dodał klasy i obiekty, ale jeszcze nie mam pomysłu jak to zaimplementować. Co się zmieniło? DM+ stał się maszyną wirtualną (?) a Slap to translator do komend niższego poziomu. Dodałem też tablice, na razie jednopoziomowe, ale myślę, że nie będzie problemu je rozszerzyć. Slap jest w stanie obliczać złożone równania matematyczne, np: GML log(beer^2*3/4*4+1-1.92*beer)); Gdzie beer to zmienna liczbowa. Buduje bibliotekę standardową, i dll w którym nie funkcję natywne nie chcą się wywoływać przez stdcall O to przykład liczenia silni do 100 (Duże liczby wyświetlane są jako notacja wykładnicza) GML %import standard% def (silnia); var silnia var step var formula formula:=n repeat n-1 step:=n formula (formula*step); silnia:=formula while ( n > 2 ) return //Program liczący silnie. Przykład SLAP def (entry); call initconsole(Silnia,); var n call writeconsole(Podaj liczbe: ,); call readln(); n:=readln call silnia(); call writeconsole(silnia,); Link do downloadu w pierwszym poście (IDE uruchamiamy przez start.bat) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 28 Grudnia 2012 Udostępnij Opublikowano 28 Grudnia 2012 Uśmiechnąłem się, dawaj kod źródłowy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Japanstache Opublikowano 28 Grudnia 2012 Udostępnij Opublikowano 28 Grudnia 2012 znajdźcie sobie dziewczyny, nerdy. 5 gwiazdek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 28 Grudnia 2012 Autor Udostępnij Opublikowano 28 Grudnia 2012 znajdźcie sobie dziewczyny, nerdy. 5 gwiazdek Bóg chciał, że dziewczyny nerdy są fe. Ble :sick: Co do kodu źródłowego, to muszę go uporządkować, a potem wypuszczę. Tak się ciekawię, jakby to było dodać implementację OpenGL, directxa, socketów i innych ciekawych dupereli. Standardowa biblioteka jest w folderze lib pod nazwą standard.dmlib. Otwórzcie sobie notatnikiem i pomóżcie w rozwoju! @EDIT: Kod źródłowy najważniejszego elementu, czyli wywoływania funkcji z dllek: GML push [rg5] push [rg4] push [rg3] push [rg2] push [rg1] call paddr Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 28 Grudnia 2012 Udostępnij Opublikowano 28 Grudnia 2012 Ale, ja się pytam, jak kompilujesz do Exe? Moja kompilacja ograniczała się do tworzenia launchera i pliku z kodem ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 28 Grudnia 2012 Autor Udostępnij Opublikowano 28 Grudnia 2012 Ale, ja się pytam, jak kompilujesz do Exe? Moja kompilacja ograniczała się do tworzenia launchera i pliku z kodem ;P U mnie podobnie. Kod maszyny wirtualnej jest szyfrowany banalnym algorytmem (póki co :P) i wtapiany jest w plik exe interpretera. Czyli otrzymujemy zespoloną całość. Wystarczy trochę poczytać o budowie pliku exe. To co tak naprawdę siedzi w pliku Silnia.exe, czyli skompilowanym kodzie ze Slapa to: GML 000D0A76617220746F77726974650D0A0D0A63616C6C203A3A656E7472790D0A0D0A3A3A696E6974 636F6E736F6C650D0A256E6F5F6F7574250D0A76617220416C6C6F63436F6E736F6C650D0A657874 6 C206B65726E656C33322C416C6C6F63436F6E736F6C650D0A416C6C6F63436F6E736F6C653A3D524 7 300D0A25737464686E646C0D0A0D0A6578746C206B65726E656C33322C536574436F6E736F6C6554 6 9746C65410D0A0D0A5247313A3D636F6C6F7220610D0A0D0A6578746C20636C69622C73797374656 D 0D0A5247313A3D737464686E646C320D0A5247323A3D232331300D0A6578746C206B65726E656C33 3 22C476574436F6E736F6C65466F6E7453697A650D0A0D0A5247313A3D536C617020697320444D2B2 0 436F6D70696C65722076312E35202D2044616E69656C204D617A7572200D0A63616C6C203A3A7772 6 97465636F6E736F6C650D0A5247313A3D5374616E64617264206C696272617279207665722E20312 E 3237313231320D0A63616C6C203A3A7772697465636F6E736F6C650D0A72657475726E0D0A0D0A3A 3 A7772697465636F6E736F6C650D0A6578746C20636C69622C707574730D0A72657475726E0D0A0D0 A 3A3A6E65776C696E650D0A5247313A3D5F200D0A6578746C20636C69622C707574730D0A72657475 7 26E0D0A0D0A0D0A3A3A66726565636F6E736F6C650D0A0D0A5247313A3D2323300D0A5247323A3D2 3 23300D0A5247333A3D2323300D0A5247343A3D2323300D0A5247353A3D2323300D0A6578746C206B 6 5726E656C33322C46726565436F6E736F6C650D0A0D0A72657475726E0D0A0D0A3A3A70617573650 D 0A0D0A5247313A3D70617573650D0A0D0A6578746C20636C69622C73797374656D0D0A0D0A726574 7 5726E0D0A3A3A636F6C6F72697A650D0A25737464686E646C0D0A0D0A5247313A3D737464686E646 C 320D0A5247323A3D232339390D0A6578746C20636C69622C536574436F6E736F6C65546578744174 7 4726962757465410D0A0D0A0D0A72657475726E0D0A0D0A3A3A73797374656D0D0A0D0A766172204 5 52524F524C4556454C0D0A6578746C20636C69622C73797374656D0D0A4552524F524C4556454C3A 3 D5247300D0A72657475726E0D0A0D0A3A3A6162730D0A766172206162730D0A0D0A6578746C20636 C 69622C6162730D0A6162733A3D5E5E5247300D0A72657475726E0D0A0D0A3A3A746F61736369690D 0 A76617220746F61736369690D0A6578746C20636C69622C5F676574730D0A746F61736369693A3D5 2 47300D0A72657475726E0D0A0D0A3A3A737172740D0A76617220737172740D0A6578746C20737464 2 C737172740D0A737172743A3D5247300D0A0D0A72657475726E0D0A0D0A3A3A7371720D0A7661722 0 7371720D0A6578746C207374642C7371720D0A7371723A3D5247300D0A0D0A72657475726E0D0A0D 0 A0D0A3A3A6D7367626F780D0A766172206D7367626F780D0A6578746C207374642C6D7367626F780 D 0A6D7367626F783A3D5247300D0A0D0A72657475726E0D0A3A3A70726F6D70740D0A5247313A3D3E 0 D0A6578746C20636C69622C7072696E74660D0A0D0A72657475726E0D0A3A3A646F776E6C6F61640 D 0A76617220646F776E6C6F61640D0A6578746C207374642C646F776E6C6F61640D0A646F776E6C6F 6 1643A3D5247300D0A72657475726E0D0A0D0A3A3A77696E657865630D0A6578746C207374642C776 9 6E657865630D0A0D0A72657475726E0D0A0D0A3A3A72656774657374310D0A0D0A6578746C207374 6 42C72656774657374310D0A0D0A72657475726E0D0A0D0A3A3A787878780D0A6578746C207374642 C 787878780D0A72657475726E0D0A2F2F30783132633030640D0A3A3A696E707574626F780D0A7661 7 220696E707574626F780D0A5247313A3D2141480D0A65787473207374642C696E707574626F78310 D 0A696E707574626F783A3D52475354520D0A72657475726E0D0A0D0A0D0A3A3A726561646C6E0D0A 0 D0A63616C6C203A3A70726F6D70740D0A76617220726561646C6E0D0A766172206164727A0D0A524 7 313A3D2141480D0A65787473207374642C726561646C6E0D0A726561646C6E3A3D52475354520D0A 0 D0A72657475726E0D0A3A3A7374720D0A766172207374720D0A5247313A3D2141480D0A657874732 0 7374642C7374720D0A7374723A3D52475354520D0A0D0A72657475726E0D0A0D0A3A3A6D616B6566 6 F726D0D0A766172206D616B65666F726D0D0A6578746C207374642C6D616B65666F726D0D0A6D616 B 65666F726D3A3D5247300D0A72657475726E0D0A3A3A73657476616C75650D0A6578746C20737464 2 C73657476616C75650D0A72657475726E0D0A0D0A3A3A66696E6477696E646F770D0A76617220666 9 6E6477696E646F770D0A6578746C207573657233322C46696E6457696E646F77570D0A66696E6477 6 96E646F773A3D5247300D0A72657475726E0D0A0D0A3A3A73696C6E69610D0A7661722073696C6E6 9 610D0A76617220737465700D0A76617220666F726D756C610D0A666F726D756C613A3D6E0D0A3A3A 7 2657030303030424644430D0A6E2D310D0A737465703A3D6E0D0A76617220666F726D756C610D0A4 0 464F524D554C4120666F726D756C612A737465700D0A666F726D756C613A3D5247300D0A73696C6E 6 9613A3D666F726D756C610D0A636D70206E2C32200D0A6966203E203A3A726570303030304246444 3 0D0A72657475726E200D0A0D0A2F2F50726F6772616D206C69637AB963792073696C6E69652E2050 7 27A796BB3616420534C41500D0A3A3A656E7472790D0A5247313A3D53696C6E69610D0A5247323A3 D 2323300D0A5247333A3D2323300D0A5247343A3D2323300D0A5247353A3D2323300D0A63616C6C20 3 A3A696E6974636F6E736F6C650D0A766172206E0D0A5247313A3D506F64616A206C69637A62653A2 0 0D0A5247323A3D2323300D0A5247333A3D2323300D0A5247343A3D2323300D0A5247353A3D232330 0 D0A63616C6C203A3A7772697465636F6E736F6C650D0A5247313A3D2323300D0A5247323A3D23233 0 0D0A5247333A3D2323300D0A5247343A3D2323300D0A5247353A3D2323300D0A63616C6C203A3A72 6 561646C6E0D0A6E3A3D726561646C6E0D0A5247313A3D2323300D0A5247323A3D2323300D0A52473 3 3A3D2323300D0A5247343A3D2323300D0A5247353A3D2323300D0A63616C6C203A3A73696C6E6961 0 D0A5247313A3D73696C6E69610D0A5247323A3D2323300D0A5247333A3D2323300D0A5247343A3D2 3 23300D0A5247353A3D2323300D0A63616C6C203A3A7772697465636F6E736F6C650D0A48414C54 Grubo, co? :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 28 Grudnia 2012 Udostępnij Opublikowano 28 Grudnia 2012 Po co szyfrować? :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 28 Grudnia 2012 Autor Udostępnij Opublikowano 28 Grudnia 2012 Tak dla zasady. Nie chcę, żeby ktoś widział kod źródłowy programu. Prosty algorytm, nie opóźnia uruchamiania programu @EDIT: Bawiąc się Slapem w funkcje matematyczne stworzyłem takie cuś: Korzystając z funkcji: GML abs((2*sin(y+x))*1000*x*y) Slap wykonał 109399 kroków na 220 natywnych linii kodu maszyny wirtualnej Zajeło to z dwie minut, ale jest. Jestem z siebie dumny. Muszę tylko zoptymalizować kod, żeby śmigało to szybciej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 29 Grudnia 2012 Udostępnij Opublikowano 29 Grudnia 2012 Wow, fajnie się zapowidada! --------------------- OFFTOP: U mnie podobnie. Kod maszyny wirtualnej jest szyfrowany banalnym algorytmem (póki co ) i wtapiany jest w plik exe interpretera. Przypuszczałem że tak zrobiłeś, ale w tym problem. Mógłybyś powiedzieć skąd dowiedziałeś jak go wtopić w plik exe, czy sam to ogarnąłeś? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 29 Grudnia 2012 Autor Udostępnij Opublikowano 29 Grudnia 2012 Wow, fajnie się zapowidada! --------------------- OFFTOP: Przypuszczałem że tak zrobiłeś, ale w tym problem. Mógłybyś powiedzieć skąd dowiedziałeś jak go wtopić w plik exe, czy sam to ogarnąłeś? Pomysł mojego autorstwa, poczytaj o UpdateResString @EDIT: Dodałem zmianę ikony skompilowanego pliku exe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 30 Grudnia 2012 Autor Udostępnij Opublikowano 30 Grudnia 2012 Klasy i obiekty prawie gotowe: GML new class (console); class property state endclass class inherit console konsola konsola.state:=DZIALA! %echo konsola.state Slap wypluje DZIAŁA! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 30 Grudnia 2012 Udostępnij Opublikowano 30 Grudnia 2012 Nie podoba mi się składnia :| Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 31 Grudnia 2012 Autor Udostępnij Opublikowano 31 Grudnia 2012 Najlepsze w Slapie jest to, że można napisać w nim każdy rodzaj wirusa/trojana/spyware, a antywirusy nic nie wykryją, bo kod jest kreowany dynamicznie i nie potrzeba zbędnych bibliotek, bo wszystkie są (kernel32,user32,winsock). Można importować COMy, edytować rejestr. Wszystko @EDIT: Znacie jakąś godną polecenia bibliotekę sieciową oprócz WinSocka? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Do tego trzeba mieć zainstalowane jakieś borlandowskie runtime'y? Dostaję taki błąd: Win 8 Pro x64 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 31 Grudnia 2012 Autor Udostępnij Opublikowano 31 Grudnia 2012 Metroseksualne Windowsowe zaopatrzenie w dllki w wersji 8 zbiedniało o borlanda? Spróbuj na necie znaleźć. Będę musiał je w exeki pakować :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Znalazłem dll (http://www.dll-files.com/dllindex/dll-files.shtml?borlndmm, przy pobieraniu wziąć download zip-file, rozpakować i wrzucić do folderu ze Slapem). IDE trzeba odpalać przez start.bat nie? Bo jak odpalam przez base.exe to dostaję access violation i dopiero IDE się odpala. Odpaliłem silnia.exe, wpisałem liczbę i dostałem "program silnia.exe przestał działać". Inne programy dobrze działają (wypisują jakieś liczby na ekran konsoli). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 31 Grudnia 2012 Autor Udostępnij Opublikowano 31 Grudnia 2012 Wygląda na to, że trzeba będzie odrębne wsparcie dla Win 8 robić. Muszę na lepszego kompa zarobić :/ Póki co, wczoraj poszerzyłem standardową bibliotekę o tworzenie form i labelek, sterowanie nimi i przejmowanie WM_* Miałem do wyboru jeszcze Qt, ale same biblioteki ważą dobre 150mb Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Mogę Cię pocieszyć, że win 8 nie potrzebuje super sprzętu. U mnie na pentium D 2x2,8 GHz, 2 GB ramu i geforce 7300gt chodził pięknie (teraz tylko ramu do 4 gb dołożyłem i żadnej różnicy w normalnym użytkowaniu). Tak swoją drogą sprawdź to na win 7. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Na sevenie to samo, krzyczy że nie ma borlndmm.dll Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 To na viście będzie zapewne to samo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Wojo Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Windows 8 jest spoko. Gimbusy napisały ,że co drugi windows to kicz - czyli windows 8 musi być kiczem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Gimbusy napisały ,że co drugi windows to kicz - czyli windows 8 musi być kiczem. Gimbusy? Nasz nauczyciel informatyki nieudolnie udowadniał przez całą lekcję, że to prawda z tymi Windowsami. Ale to nic, on jest fanbojem Apple'a i Maców (+w pracowni są tylko "jabłka"), więc guzik mnie obchodzi jego zdanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Po co pisać na Windowsa, skoro z poprzednimi wersjami jest niekompatybilny? :D Jeśli piszesz to w Delphi (dafuq, nie powiem) to kompiluj statycznie (jeśli dobrze wiem co to znaczy :D) Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Wojo Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Nie oszukujmy się - Windowsa ma więcej komputerów stacjonarnych i to on powinien stać na pierwszym miejscu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 31 Grudnia 2012 Udostępnij Opublikowano 31 Grudnia 2012 Ale jakość tego systemu mówi sama o sobie, ale nieważne Rozwiń program na telefony z Androidem to nie trzeba będzie rozwijać dla Windowsa, bo będzie niszą :D Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 1 Stycznia 2013 Udostępnij Opublikowano 1 Stycznia 2013 Tak apropo Linux ma większe użycie niż Windows. Windows jedynie góruje na zwykłych komputerach. Komóry, konsole, serwer - wszystko na Linuxie pracuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się