Autor Wątek: Tani laptop do programowania.  (Przeczytany 5137 razy)

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 28, 2010, 17:23:47
Cytat: Dab
Weź pod uwagę że przy debugowym budowaniu pojedynczego projektu (incremental build) i tak wszystko idzie na jednym rdzeniu.

?
Na jednym rdzeniu może sobie iść sam linking.

Czytam i czytam i się za głowę tylko chwytam, czyli do kodzenia w C++ potrzeba najlepiej jakiś klaster mieć w piwnicy? Chyba zacznę dawać na tacę i dziękować, że takich problemów nie mam, bo czy procek 1GHz czy dwa rdzenie po 2GHz to kompiluje mi się po kilkanaście sekund max, a później jak pliki w cache są to dosłownie sekundy.

Powiem Ci tak: Jak Tobie się kompiluje kilkanaście sekund max, i Ci to nie przeszkadza, to ekstra, ale jak będziesz miał projekt kompilujący się X minut, to będzie mniej przyjemnie.

Ja się w sumie zgadzałem długi czas z Attwoodem na ślepo:

Cytat: Jeff Attwood
If you're a C++ developer, you need a quad-core CPU yesterday. Demand it.

Kupiłem sobie najtańszego quada, jaki był na rynku, gdy składałem PC - teraz pewnie są za niewiele wyższą cenę bardziej opłacalne alternatywy, i do dziś się cieszę z tej decyzji.

Szybka kompilacja ma jedną zasadniczą zaletę: Im mniejsza pauza nawet w incremental buildzie, tym mniejsza szansa, że się rozproszysz. Jeśli czekanie więcej niż 30 sekund na kompilację Cię nie rozproszy, to jesteś supermanem i chcę się od Ciebie nauczyć skupienia uwagi :).



Żeby mnie nikt nie posądził o fanatyzm: Można programować w C++ na 1x2GHZ! Oczywiście, że można, przecież wielu ludzi tak robiło. Na niewygodnym krześle też można. Na małym monitorze też można. Wszystko można.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Grudzień 28, 2010, 18:05:27
Cytuj
Na jednym rdzeniu może sobie iść sam linking.

Huh? Inc. build ma niestety taką przypadłość że wszystko leci do jednego pliku. Zrób sobie research w tym temacie.

Cytuj
jak będziesz miał projekt kompilujący się X minut, to będzie mniej przyjemnie.

Wtedy czas oduczyć się klikania "clean" przed każdym buildem :)

Zresztą tak jak pisałem wcześniej -- początkujący koder -> małe programy. Różnica czasu kompilacji małych programów na wypasionym i niewypasionym procku jest marginalna. Zresztą w ogóle w większości zastosowań prędkość CPU ma minimalne znaczenie. Ale w znakomitej większości owych w dalszym ciągu lepiej mieć dwa jajka mocne niż cztery słabe :)

Cytuj
Żeby mnie nikt nie posądził o fanatyzm: Można programować w C++ na 1x2GHZ! Oczywiście, że można, przecież wielu ludzi tak robiło. Na niewygodnym krześle też można. Na małym monitorze też można. Wszystko można

Pewnie. To tak jak z nauką gry na gitarze -- bez Fendera z lat '60 nie da rady zacząć ;)

Offline cybek

  • Użytkownik
    • Strona domowa!

# Grudzień 28, 2010, 18:15:08
Wtedy czas oduczyć się klikania "clean" przed każdym buildem :)
Ja bym powiedział, że wtedy pora nauczyć się tak projektować programy, aby nie includować wszystkich headerów we wszystkich plikach, bo to jest największe zabójstwo czasu kompilacji.

Offline Karol

  • Użytkownik

# Grudzień 28, 2010, 18:34:58
Czytam i czytam i się za głowę tylko chwytam, czyli do kodzenia w C++ potrzeba najlepiej jakiś klaster mieć w piwnicy? Chyba zacznę dawać na tacę i dziękować, że takich problemów nie mam, bo czy procek 1GHz czy dwa rdzenie po 2GHz to kompiluje mi się po kilkanaście sekund max, a później jak pliki w cache są to dosłownie sekundy.

Powiem Ci tak: Jak Tobie się kompiluje kilkanaście sekund max, i Ci to nie przeszkadza, to ekstra, ale jak będziesz miał projekt kompilujący się X minut, to będzie mniej przyjemnie.
A czemu ma mi przeszkadzać? Pierwszy full build trwa owe kilkanaście sekund, później (także pełny build, ale już z cache) to jest 3-4s (ilość linii ~180k). Mniejsze programiki czy też zmiany w pojedynczym pliku są kompilowane w zasadzie natychmiastowo. Gdyby coś się kompilowało dłużej niż pół minuty to bym stwierdził, że kompilator mi się zawiesił. I nie potrzebuję do tego więcej niż jednego rdzenia, ani gigabajta plików tymczasowych.

Urzeknę was teraz historią: Do tej pory pamiętam tą traumę związaną z kompilacją C\C++ jak kiedyś bawiłem się Linuksem i instalowałem wszystko ze źródeł - minęły ze cztery dni, a ja "zainstalowałem" sobie AŻ trzy programy i przekompilowałem raz jądro (chyba 30h się mieliło), wtedy sobie rzekłem "never moar!".

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 28, 2010, 18:43:02
Huh? Inc. build ma niestety taką przypadłość że wszystko leci do jednego pliku. Zrób sobie research w tym temacie.

Sekundkę, rozminęliśmy się. Nie mówisz czasem o jakimś ficzerze specyficznym dla, na przykład, MSVC?

Pojęcie "incremental build" samo w sobie jest ogólne i "language-agnostic".
W konteście kompilacji C/C++ - jak całe życie słyszałem - oznacza, że przekompilowujemy te jednostki translacji, które potrzeba przekompilować. Na np. dowolnym toolchainie wokół gcc (czy to eclipse managed build, czy scons, czy cmake) oznacza to najczęściej najpierw równoległą kompilację wszystkich jednostek translacji, a potem linking.

Jeśli masz na myśli jakiś ficzer jakiegoś konkretnego narzędzia, który akurat też jest podpisany "incremental build", to proszę, zaznacz to od razu.

Cytuj
Pewnie. To tak jak z nauką gry na gitarze -- bez Fendera z lat '60 nie da rady zacząć ;)

Trafne porównanie, biorąc pod uwagę, ilu ludzi w tym temacie polecało zaczynanie od najtańszej możliwej gitary. :P

Cytuj
Ja bym powiedział, że wtedy pora nauczyć się tak projektować programy, aby nie includować wszystkich headerów we wszystkich plikach, bo to jest największe zabójstwo czasu kompilacji.

Zależy co jest w tych nagłówkach - jeśli proste definicje klas, to kilka w tą czy w tą zrobi małą różnicę. Ale wiemy, że to lubi lecieć kaskadowo. :)

Dorzuciłbym tu konkretyzację szablonów. Kod bogaty w szablony (nie wiem, używający któregokolwiek większego modułu boosta) ma prawo się kompilować dużo dłużej, bo każdy translation unit najczęściej konkretyzuje szablony samodzielnie.

Offline nowofresh

  • Użytkownik

# Grudzień 28, 2010, 19:32:06

Offline Dab

  • Redaktor
    • blog

# Grudzień 28, 2010, 19:42:35
Cytuj
Pojęcie "incremental build" samo w sobie jest ogólne i "language-agnostic".
W konteście kompilacji C/C++ - jak całe życie słyszałem - oznacza, że przekompilowujemy te jednostki translacji, które potrzeba przekompilować. Na np. dowolnym toolchainie wokół gcc (czy to eclipse managed build, czy scons, czy cmake) oznacza to najczęściej najpierw równoległą kompilację wszystkich jednostek translacji, a potem linking.

Mówię o incremental builds z MSVC. W "klasycznym" podejściu rzeczywiście kompilować możesz każdą jednostkę translacji niezależnie, ale wtedy musisz za każdym razem robić pełne linkowanie -- a to potrafi trwać b. długo.

Cytuj
Dorzuciłbym tu konkretyzację szablonów. Kod bogaty w szablony (nie wiem, używający któregokolwiek większego modułu boosta) ma prawo się kompilować dużo dłużej, bo każdy translation unit najczęściej konkretyzuje szablony samodzielnie.

Od tego bym zaczął, ciężkie użycie STL, nie mówiąc już o Boost == FAIL. Nie wiem na co można liczyć jeżeli każdy plik po przejściu przez preprocessor ma kilkadziesiąt MB :) (podobnie każdy .o).

Offline _OskaR

  • Użytkownik

# Grudzień 28, 2010, 20:11:18
http://allegro.pl/toshiba-a660-11m-i7-720qm-8g-500-gt330m-win7-64bit-i1373305593.html

A ten ?
Nie za słaba karta ?
Trochę mało napisałeś, jeśli chodzi o konkretne zastosowanie - samo programowanie i dużo otwartych aplikacji to nie wszystko.
4 rdzenie - ok, ale jeśli się je wykorzysta. Jak program ma mieć kilka k linii kodu, ale wymaga mocnej grafy, to lepiej zainwestować w mocną grafę. Jeśli chodzi o CUDA - jak będziesz pisał aplikacje korzystające z tej technologii - ok, ale jeśli to mają być gry dla szerokiego grona odbiorców - są ludzie, którzy mają Radeonki.

Offline Lukadder

  • Użytkownik

# Styczeń 08, 2011, 20:11:27
Sporo się naczytałem i wybrałem tego lapa http://www.x-kom.pl/p/62999-notebook-laptop-15,6-asus-n53sv-sx019-i7-2630qm-4096-640-dvd-rw.html Bardzo wydajny procesor, relatywnie chłodny, mobilny, grafika z cuda(na kiedyś się przyda)całkiem dobry czas na baterii. Jak się programuje na tam małym ekranie? da radę ? czy lepiej pomału odkładać na zewnętrzny monitor ?

Offline Kos

  • Użytkownik
    • kos.gd

# Styczeń 08, 2011, 20:26:15
Cytuj
Jak się programuje na tam małym ekranie? da radę ? czy lepiej pomału odkładać na zewnętrzny monitor ?

Tak, da radę. Tak, lepiej odkładać :). Co dwa, to nie jeden... ale to wyłącznie kwestia komfortu pracy, nie jakaś prawna konieczność.

Offline _OskaR

  • Użytkownik

# Styczeń 08, 2011, 20:27:59
Jak się programuje na tam małym ekranie? da radę ? czy lepiej pomału odkładać na zewnętrzny monitor ?
Dopóki nie posiedzisz przy konkretniejszej matrycy, bardzo możliwe, że obędzie się bez narzekania.

Offline Xirdus

  • Redaktor

# Styczeń 08, 2011, 23:32:28
Dopóki nie posiedzisz przy konkretniejszej matrycy, bardzo możliwe, że obędzie się bez narzekania.
Przypomina mi się moje przejście z 17-19" 4:3 crt na 22,5" 16:10 lcd. Z powrotem już nie mogę :P

Offline Kos

  • Użytkownik
    • kos.gd

# Styczeń 09, 2011, 04:49:27
@up - ja bym tam do mojego della 22" CRT chętnie wrócił, tęsknię za nim bardzo... tylko musiałbym wykuć kawałek ściany, żeby mieć go jak postawić na biurku :).

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Styczeń 09, 2011, 10:38:17
Urzeknę was teraz historią: Do tej pory pamiętam tą traumę związaną z kompilacją C\C++ jak kiedyś bawiłem się Linuksem i instalowałem wszystko ze źródeł - minęły ze cztery dni, a ja "zainstalowałem" sobie AŻ trzy programy i przekompilowałem raz jądro (chyba 30h się mieliło), wtedy sobie rzekłem "never moar!".
Chyba "never more"? BTW. teraz do wszystkiego masz odpowiednie pakiety i w większości przypadków, nikt nie musi sobie samemu kompilować jądra.

Co do lapka, to jak zwykle odradzam shitware w postaci Acerów, Asusów, czy MSI. Jedyne znaczące marki to Dell, Toshiba, IBM Lenovo. Tutaj sobie wejdź i dobierz parametry: http://www.ceneo.pl/Laptopy;017P0-249335-249346-249373.htm

Nie polecam kupowania lapków z dołączonym Winshitem, ponieważ tylko dopłacasz niepotrzebnie do sprzętu. Dla porównania, lapek, na którym teraz pracuję (Dell A860) z dołączonym Ubuntu kosztował ok. 2000 zł, zaś w tym samym sklepie z dołączoną Vistą Business kosztował aż 2700 zł :D Poza tym kupując lapka z Linuksem, raczej możesz mieć pewność, że cały sprzęt będzie obsługiwany, co jest ważne.

BTW. jak zacząłem programować w Python'ie, problem czasu kompilacji po prostu zniknął :] Piszę sobie programik w Geany, wciskam F5 i od razu skrypt się uruchamia! Np. jak piszę grę korzystającą z silnika Panda3D to czekam tylko na załadowanie modeli itp. Normalnie wszystko w mig się uruchamia. Jak masz aplikację w Javie to czekasz i czekasz przed uruchomieniem. Python może trochę wolniej działa, ale czas uruchomienia skryptów jest idealny.
« Ostatnia zmiana: Styczeń 09, 2011, 10:45:07 wysłana przez JasonVoorhees »

Offline Drraven

  • Użytkownik

# Styczeń 09, 2011, 10:56:49
esc.pl  Tu też możesz posprawdzać. Nie kupuj Komputerów/laptopów/części na Allegro. Tak jak #u, mówi Dell, Toshiba, IBM Lenvo to są porządne marki.