Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 09:36
Оценка: 34 (3) +1
Здравствуйте, CreatorCray, Вы писали:



SH>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?

In [3]: 287368235523**1024 * 76523876532**512
Out[3]: 881731476847030925412266342176498065789402947529274810480513659110969348
79195923611007134110266210912455811459881406953515522791745335429250066035076552
81679228783465369757542723226725730170839250060689379869047278174216968518995517
84064926709107406322466746702361373383826523334040078499332234153028646144981394
69565584612617052222703321922756323827538809347702021203195632345539155948975880
94396380045568316752195708092979134322817513054876474864439751993723630526722015
70299778472214504455778303309185235695121377762579964164708533970148925779177175
95630497471002398142903635849824243175974964756506623650542452528149104080789059
33743501144351138240440999734377906464203436796705788241626916310824999341985028
02509279068698984272854580596800233547914064088576769782906414928237967721153524
53692069790431387906926762588792454097635096015349194464078217749077514454676172
07227658660086804270975698491137159804986678553312126142697522937614389288418568
86769229470425851128709328958728032870553642748497139091229239388160381246565529
73796587638379009782188781584845450710096128753795758982159730057231660652563528
92749916109731921297283205832320063134024270215692552815146781647724135518171005
31781870409936441306432700387677941667561136524798208598678816402158499053774676
01727314208518552774267422361863692087734567367827805047506158760499742380123789
47102293839101322572561969834524880160637292218525587853590350469501449270462439
31257375884554050883983149299402794376576345430404067729579850405322093059771070
07351172699780914845762568443984034533541889653836437497916263941945963887173648
32829105236993729434902607096045816099888273523312865918853350394632091037320080
85258677946950929194333267224144188460643776503502678637510920794083155728903038
68951317623690318137901270413405361902599003448205712289912527881493853013010105
22776065637443740009732543554370959266669106783036610717094449266382326597597098
03653920387508001672164604649809944418102688148748787854816904947293484611129251
58365231344214559341276261409246203983161148701458828962125123517773203341257535
80756651500968877491833018162384162160694630867391544631551599662673756373937013
34554499808592103342656828868082094937529225137729246602277951595433976154583791
11448774438740847942492765147063599621368129633237524426121743996049430333607236
38826943092641522662301782797982308426359582920123116306035248498734582840724615
33676898845393013427160175656775849257314150445020338921570244915976750805171188
96273019323877581494827960164105320354885905668066797301906729275273023230693882
82599532371885811014069930617927377212814679092636058423733195581055859403603970
41834103893100932063682615836027041969970699700406508346447352933867114144239760
53643988971273334026591692028665240904602907067017829940350360374787418976385232
85573458430006545475665254706214528409367583817050887159711161735011651463219787
75760238579877697847553131958540925393428446213923112594781623757596667850689460
58227829542766861567176231147188949539658440587828229547266240043836283875431746
23269564764474062702845201962013194255434979187065005891449036566566070469255910
00789570935243993542830262903482599426713385918703757595529454665864448337833625
43549833025951200908919016587646995214206064771689538505317537832763473851594300
08228065774182816012004091444852480645466468080270038266198567926950765628366784
93526054747009805556643391795596308761383378441140598077324213917981484975903922
25739834535442802001145660269657240491530494136116393068822900265405953617685760
74210966243023624288164529173236062835151156327808204408679635537581696022658414
00834313529054544069983944774298262705683676078576173497450667012526737887470606
56216870142046602949745710420002134171786136433561098501330985180347458469517374
92612227111472307496227302635018460383354154476598122588746461518865641036346152
08550639146311220727869884862024591780131115550043027930494437891717058199720773
72393839102527484257660656576763212108240748248215908416861571602137745932907173
81574080523380839058082120621231381097877165791120950477747468340900423785492550
24135075834976184760140548601679564689271370630486227493200747619164704552077687
37152211600226490883105779668774505922213846135636727474414082815183337815694298
28711278101005910490758266901369362273246981237384798150242949343431127351853373
04622162160956796353994902826470243670720949923752990735546669170378503883625823
79280220659758040871415009071667155392440998926910885932393884603539299497808034
62273800942000567435393728251806931815324877447724259429061420638300380950785615
15350383337086060715004644696633210200556074476704902595848142059929852528056415
28038408025930986703939902255648333294951815898510193307254511628569867341012131
81158343234507965061872022559139561926600314204560283434940010143160814270526954
57387135946428960768816366084816427479520696923579192644333657238313434399318527
22074879087078170048108393454517177757598810200895367097913931326578553991736698
55263382691698261808972919103620110741690851455490605679860488602381402377240636
92959413272295961954695478058369020185278272406368265979076329508376167244310411
78888364711204554370630867536799973587636625601984943682694693863153757517955311
77351516753281054658557846051092045109236848290353526408070959876088570478149573
55633235546821300168704498944888976602725323445907714745375832800114193743511286
42494352761684477412800699525317030854872523747148471171408339232981200574547320
21440272365784473927566702582741516721857608531116280577649673151845332501355440
09240946058978288360423343484914775128955450080455310203036765993560340708389745
96030265587690234508632573647182410939958075622973752785693375197448596998881490
04135595055606723390461934284095263240923400163736064887957568960291717308782773
68810850053368988351311033612463868757148582096492790189155506792878925166982017
62364593292734587056167896742482012283288669938138468523001840776537581067894830
06733486405479671416639340037202078248418411631595172521186900433369100704526000
24764517811594375977593293374001001569497713323161199968546674514397559979292971
31840157835276970794909736882885161381913881024544461610604709702211522161830059
79418900119314163001630071870722543286503162440019861697570252307878362294514073
58415785710575083031335618394903113858442294087626363645521434823205838611015726
82149021121912621225965830999875353089742166994697236599793679951243890015489526
20095694013225686647706832315540858324028238972982553036463103070608980130197242
92613981818726042741945297126556140636653933712744817995679713725685140472845429
45494802672253164571378512546550263457836153961438852385344449009091285344460049
82068415161639127466648024913087530916412926874322152299843674805227102269438239
55365732706228975915417574193439051337038987248783573897605466615303172525924562
40436463313852900788302797805890867387245060040537728574334458529919288594821059
90932754644714316321343367863102983000216468623527294486209069872284765395478598
58177609539195061785216661301473979925999259120224276557770675829173131829962855
44862277661082258280054980493162400749559242829091075897176726842287228733054787
16963732812354368301580660292405509765025444209529868992224270612285227532760488
84105050807785922013149923888565355006730206581897434268754421859602970913504674
85987495262908279571204295212219699326535271057465384195333473473846926243991720
04041278904216261328442178021842428289365025060979206834136156417064978536824994
08132495744410203917819391651663905235483438005024881875672782929488468617012018
24007259527093056181466138013776456921116160947322389093332412362054755438258226
75133628768890185842234487483345144539528603106517831377948238141997786719696757
18916756278660006364983498251744002264207360009477683904379463198102596973848992
08365039414097531880840825099331394605386247294517347229045240721300966962612159
15228035874979590570791933790519828097637330183054668014921291904650973187103538
72289400018853970581124857641470022583462763938083501061677445864989568453004879
57881948875564066405173991283034397349647788697645932609886187614460575887650602
92070045766722422238900239742045418875022105995468630070403059961836505342144876
80877901957299656556318553682487512338217015321424007646876409036416507647908789
45078229391515280782068771259173154607718296620770100447078549403354803465686600
60558427663322633499928299929362589862635265703868913199929292011554081086901425
35790178980455955190874080650017865448682822181883322078815762872984896126519060
27510244836388199493680810632446505344932366207787580607235597333929100825950954
56917099120070816788452367908834983006525969506456629981803289659196486719111030
66715807952322064018454754988527096209280680833694644003948994722664215380686308
80350751564679517472654923414951407396209487285990168300258843014909007749353768
66884939442413616339495669750371316616953155998898956182683217183078502735057537
28097017635817511427177120200597001284070107419468889557042560206484056372945070
35666498105372311852239921440045016539139480147752092004505536669722173062050261
04638838698784474080217107321847908381469271802816004269144961824576509879233897
35318696293131684124159008269946650440434330974170949386418913688661313817802117
21135540397701424717573173731085567034466365900462481043926386391727132832724140
01548624313145082560183942563740527231675920478718707527898937312910267562581602
33993749207298998136314443145035337961363252694255909252003700108500654428688206
64180241260337733056383616387190507038349654043071437450792696073729128440565825
52923825832892338930345214891481010610604504084946008138822707348643369434484809
33786972045076047045547429443534458885867909726826432168546465965442324099140093
90802224297502739953160569510346767937992245038708432635208830218815822211506212
99450638792998089384463843132914447291909304208249695568454897804612328808567584
81865472741924040820833385221334739252559067297995613181534358292541794713961500
57214054096006287630302884399375694156092761868050469548672262831630938537587522
51220594924229963744390031757808664127680069383129285038272926355739713035783815
42595776464551695168667041438775601280816812680141725975989744475912378909687782
11601175118613381693664439457613236947351627460842359007461288233548143562701547
81322804280413932640404964596148473982684673096487114252081305272872203434550825
24971426858945867300719854930631092550088105429677689273069676705296059960995611
90346637123805522605480971694777669224564979434724681968307920836691440431045500
39755629586856162122904857863112077860056881847414330747278425521192753515373813
22626065789873510978793635362314433841512933986314077273845096452494703391515951
04312045187995010315513324593562942125714855591957716954338443298560540405648275
46434485768897851378337063153216946067025469484980932113488549349958631405393087
27973846447222039483506110520042376555000405376517187083868029357683237262607402
64762012185788602489168826566156777854563908977192679192843984736202900932926178
54388178013338391815460611653466064905002827362978379047806098248775860207649640
74555143017738580558611333189975342774732320038266778717040450136740155024065108
23424435124341345849168349449128307707118868855688138864834283850344523584638605
96222335032595460278498776776923901475671339721478870279207279027409928123273112
07434497375735413723959160453886825723470430636407935158258239668003995219158450
02115612448898606520623533355562482274933608086569025087561875149741956888814127
80984262735447635510263291020136687100690695048023240435586543551524570072539235
64164479206166745474534611696700578612204770500761419895027487196723841217902939
15436834636764636208448234969200682469618023024906917795232635763982697741191275
86431052573718816080879983809970714891330933242590772292446921870309051464955733
17791910939876157093883974714366654771222393696877534586589339327885932557960765
50514900624451740702648689130971536456714346701788040991197317516005468624080473
64129529311380552126411935210867411583624312654296232525113896073897732911388458
77502119395553829877657265222514896372971819315645333622811254384553756900945050
65176885550495443231503737477589612638826486330621616866891579839828446742673397
98982135674418280340886335035550388073962639641356520743320002554414575058600787
35666453369533289294901344273029921801326060777310070925819067299961528364678787
05778579329032609631087735896164474630349979017092515581846464836442892449796874
83262413634940391780192095613480712558046973831006469904034608550046644916358980
71572611752174288805224356974792888400849084939186300727315174250411760088834241
17693906982193873627781318815158488590607655479759407297982033880721021748734513
16421799302929008357063446129633951894178272370361864871818642889751277538466837
73376644707675869620049509596457465762392797101712272101080665101314757110260262
00970616322418174454570314807196880426531167270450071389686828080416540257173909
81622807914601593639842754202216471807696663280162669172077115129104980395487881
61767570687128519064108450954132183157902034796403417748477471586935653120534349
10498760550144456195976529950769635773147729279650849466107211936945148004869760
97464252215686499755414740728961463617168921454144199442564800437462397290899809
10415455358810438818200705986602034947138203942704421465448362178853892356572831
83807837626211576065369340240227725769937643407543418481476486827960341512849197
71159082510934198233855815891351019386296901716591421270236078969798996455509930
11377762449632759625175103207392988199639965376288712773044014505700414258550236
69192095681068242720046459406296277337349765717895821221510133765783842987785868
26557615247841659973596974539734809475861556071080209196663682005302958459627458
92466757875687605447779450695430642332554463765685742484952260058789195655543624
38395081829563395885655059967285801625487464578952563703721247736667409800436360
49656625463347734493154313827414110219861723255423241438825321911960236601924872
86272984994494991607597842159401617674960472567145244709295724063574411001124726
38179049605557723651052490376803118041011479219532786844155176744325762150457094
99097202623968624017662220713990917538888951202400291074258827725846751334209290
24770924525221299297567274863760512618896210178415497210183975398903608534907183
69510635291314954242038646606153440613542013654374557339520879143264713628812336
68263207501867274362489508493061286789838319344490435823625771424872379403253563
70740384280298917563501994432144662885443353657476045804921785563185724252217175
18624574249664631492220649320633008981975366656547123411409738613809041049083775
58641667473744674206974018996314157089264750347965429284718157285915995880608649
76214943969530981442941215154316943789380803980373156442367841491721498040189668
64660122721532829312200280448580487999302102156762708505561662397999104151390542
16736128066169751479893529595638923144567932945297779842856351518544383278821744
80423813489926217108196582046502956622403991603733557727414876260496517112006188
78399513934403262619216959073100074191087668719774117706039161128934827394586335
41570258186277370848942129476004191378030961880827254473186143407371007067031805
57154497989641418052513784668752076420489949413248391887260883532172941970250048
31377846062261624865306031545293593282222598400655623635598095614624232150639250
28096037754776661586090979445079750539653330953006561539035366099411914971444343
10523485096521179170988159488840186804240601096278467748083717575151476961288834
65000440304292011024509544703903369290549055237014126117185884532084093034092895
70268874628920679488047532775336462744374134626020356510926948443140855092774220
55400055561002402994968318977069929279471090058836973222921217261295223759990576
81233010416832196948579343614961262680563427051386504048830884334255411829839979
13001501672879059747970994190027304957822227808380084890197886225494768126334514
38254289594504890583962256230995721175902117645433924196070317092931670613677360
96142024131862568882602670904925529751541387802934510133460921618170863692648981
83553665422747734492002559166599731786238185313338148867863416212038870244880486
86468192398034836601363318487341421842957170507549396449859738620824822504210200
85031104027212680984320727645826433043605651246747073330199780538421753484435156
93657736679696846648093652082138977393084577653859286932079232737620714935697619
08953115034578388432011129905441154620537905234338423286506447359668534092677366
38737527543719989290030425730117425063196923507284654059613488446729937915380742
18661923908396316155600309685257937504759521952299921882765579269422262148627460
10809809137515089652096126013763518167682815430402363153141692121431584927775152
56732688385842806768501197529690215652672247996145149041652388006464138351525082
94950129581781566407601302842824143536026302530714427749781940118451127970485369
34804962291747129684778570386922101726879220169545560144865785322724888523637722
11852241735434462517830012500934500279600735895594432389373952876032308748137686
93155113212080876697335653809530753191172943078039564848247840019063020267695810
51146485646168598177915675270733538244149676512143478826497012842424646619574471
84410712612045917300016337526477698085467474886730108888264054503987045998292314
24018052061297377112555495294706836082536814445575114382648873043089086969844763
4908873545732133980519986433622016L
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 09:49
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, CreatorCray, Вы писали:




SH>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?

<skipped>

Во времена оные пришлось мне с машиной Мир-2 работать, киевского производства. У нее не было фиксированной разрядности, числа могли расти как угодно, хоть одно число на всю память. Запустил я на ней некий итерационный алгоритм, который, по моему представлению, должен был около минуты работать. Когда он через 10 минут не закончился , я его принудительно остановил и нажал на пульте "Вывод значений" (вот как тогда отладку производили ). И выдал он мне числа с десятичным порядком около 100 . Процесс разошелся, а overflow-то нет...
With best regards
Pavel Dvorkin
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 09:52
Оценка:
Здравствуйте, CreatorCray, Вы писали:

SH>>Динамической типизации.

CC>Для чего?

У меня для прототипирования.

SH>>А так же генераторов

CC>см http://en.wikipedia.org/wiki/Generator_%28computer_science%29 раздел С++

Это даже не жалкая породия.

SH>> итераторов

CC>Уже есть в плюсах

Очень неудобные по сравнению м питоновсеими.

SH>> и GC.

CC>GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.

В общем члучае GC все таки добро, в частностях да бывает и зло, но в том же питоне GC как раз на счетчиках и поэтому добрый так как не умеет внизапно тормозить

SH>>И лямбд.

CC>Ну, вот чего нет так нет
CC>Насколько я понимаю, без GC они кривовато реализуются...

Лямбдам на GC плевать. Но лямбды обычно всегда идут в комплекте с замыканиями, а замыкания без GC да сплошной гемморой.

SH>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>ИМХО реализуемо и в С++. Разумеется не так прозрачно

Угу как всегда очень коряво

SH>>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

CC>Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
CC>Что могу сказать — скриптовый язык он и есть скриптовый...

И?


SH>>Причина — С++ слишком заботится о байтах. О машинном представлении. Даже если это скрыто внутри класса, это всегда приходится держать в уме.

CC>Т.е. думать надо о том, что получится перед тем как писать?

Думать к сожалению ( ) приходится не зависимо от используемого языка

CC>Мелочь писать на нем и всякие управляющие скрипты — можно. То, что не требует особой скорости — тоже. Но блин, почему как только человек открывает для себя новый язык он тут же стремится писать на нем все подряд?!


Это и к C++ относится.

Я вот сейчас на трех языках пишу, один из них C++ и ничего нормально.
И сейчас вполне реально для меня использовать C++ только как интерфейс для общения с OS.
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 10:02
Оценка:
Здравствуйте, FR, Вы писали:

SH>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?
Вопрос из любопытства, как человека, который занимается алгоритмами математики с большими числами — а сколько оно это считало?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 10:07
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, FR, Вы писали:


SH>>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?
CC>Вопрос из любопытства, как человека, который занимается алгоритмами математики с большими числами — а сколько оно это считало?

Практически моментально, нажал enter и консоль практически сразу выплюнуло ответ. Вообще считает же хорошо оптимизированный сишный код внутри интерпретатора.
Re[23]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 10:10
Оценка:
Здравствуйте, FR, Вы писали:

SH>>> итераторов

CC>>Уже есть в плюсах
FR>Очень неудобные по сравнению м питоновсеими.
Мм... А можно "на пальцах" разницу показать?

CC>>GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.

FR>В общем члучае GC все таки добро, в частностях да бывает и зло, но в том же питоне GC как раз на счетчиках и поэтому добрый так как не умеет внизапно тормозить
Это гут.

FR>Лямбдам на GC плевать. Но лямбды обычно всегда идут в комплекте с замыканиями, а замыкания без GC да сплошной гемморой.

Это я и имел в виду.

SH>>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>>ИМХО реализуемо и в С++. Разумеется не так прозрачно
FR>Угу как всегда очень коряво
Ну не надо передергивать. Не "как всегда" и не так уж "очень коряво".

SH>>>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

CC>>Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
CC>>Что могу сказать — скриптовый язык он и есть скриптовый...
FR>И?
Не понравился. Как скриптовый язык по мне LUA несколько лучше с точки зрения юзабилити и интеропа. Хотя опять таки от задач зависит.

CC>>Т.е. думать надо о том, что получится перед тем как писать?

FR>Думать к сожалению ( ) приходится не зависимо от используемого языка
К сожалению, не все так считают. И при написании прог на управляемых языках наивно верят что можно ни о чем не заботясь фигачить "что вижу о том и пою". Ну и огребают потом проблем и удивляются, как так вышло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 10:12
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, FR, Вы писали:


SH>>>>Питон относится к этому проще.. Например, Питоновский int никогда не переполняется.

CC>>>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?
CC>Вопрос из любопытства, как человека, который занимается алгоритмами математики с большими числами — а сколько оно это считало?

Вот это
from time import clock

t1 = clock()
x = 287368235523**1024 * 76523876532**512
t2 = clock()

print t2 - t1


печатает (p4 2.8)

0.00779449739352
Re[3]: реальная проблема на Java - помогите решить
От: Pavel Dvorkin Россия  
Дата: 31.01.08 10:15
Оценка:
Здравствуйте, mik1, Вы писали:

M>Ну то, что при росте траффика до 100% от одного процессора доберетесь — это, думаю, очевидно. Ну это лирика.


Да, но когда ? Если там всего 5% уходит, это одно. Если 28% — очень сильно другое.

M>Какой процент от общего времени уходит на поток записи — это тоже лирика.

Кстати, кто мешает сделать несколько потоков записи?

А зачем ? Поставщик-то один, и очередь одна. Система один писатель — один читатель. Что я получу от нескольких читателей, крое оверхеда на переключение потоков ?

M>А вот про одну пару машин ничего не ясно. Можете привести такие же 4 цифры, какие приводили для двух пар машин? Тогда и станет ясно, где узкое место с ростом траффика будет.


Итак

2 пары машин (повторяю)

YourKit

Поток записи — 28% суммарного времени, из них 16% на poll, 12 — на запись в БД, остальное почти нули

JProfiler —

Поток записи — 5% суммарного времени, из них 2% на запись в БД, 2% на мой код, о котором речи не было, 1% по мелочам. poll не упоминается.

1 пара машин

YourKit

Поток записи — 34% суммарного времени, из них 21% на poll,14% на запись в БД

JProfiler —

Поток записи — 2.1% суммарного времени, из них 0.8% на запись в БД, 1% на мой код, 0.3% по мелочам. poll не упоминается.

В общем, похоже, что YourKit приплюсовал сюда время ожидания. Писатель-то не ждет (кроме лока), а вот читатель все время ждет — он быстрее, а точнее, писатель пока медленнее — трафик небольшой, он трафика ждет.

Если 2% на пару машин — это пока что еще оптимистично. Тем более там мой код, это не очередь явы оптимизировать

Правда, остается неясным, почему у YourKit столь велико время операций с БД. Хотя, мб, он и там включил время ожидания ответа.

Спасибо.
With best regards
Pavel Dvorkin
Re[24]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 10:31
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, FR, Вы писали:


SH>>>> итераторов

CC>>>Уже есть в плюсах
FR>>Очень неудобные по сравнению м питоновсеими.
CC>Мм... А можно "на пальцах" разницу показать?

Итераторы напрямую подерживаются языком, поэтому они гораздо безопаснее и мощнее, например легко делать цепочки функции обрабатывающих итераторы практически в стандартной библотеке http://docs.python.org/lib/itertools-functions.html есть набор повторяющий базовый для функциональных языков.

а на пальцах
for x in array:

вместо
for(my_vector::iterator it = array.begin(); it != array.end(); ++it)



SH>>>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>>>ИМХО реализуемо и в С++. Разумеется не так прозрачно
FR>>Угу как всегда очень коряво
CC>Ну не надо передергивать. Не "как всегда" и не так уж "очень коряво".

Коряво, я например очень редко в C++ пользуюсь такими указателями и почти всегда смотрю в книжку чтобы вспомнить синтаксис, в питоне же это простое присваивание.
"Как всегда" тоже верно стоит посмотреть на boost::lambda хотя бы Хотя вот boost::python неплох.

SH>>>>Я не могу назвать что-то одно или исчерпывающий список. Я просто рекомендую тебе попробовать Питон.

CC>>>Пробовал. Дописывал функционал в готовой проге когда то давно... В проекте часть функционала вынесена в питоновские скрипты. Причем солидный такой кусок.
CC>>>Что могу сказать — скриптовый язык он и есть скриптовый...
FR>>И?
CC>Не понравился. Как скриптовый язык по мне LUA несколько лучше с точки зрения юзабилити и интеропа. Хотя опять таки от задач зависит.

Lua да хороший скриптовый язык. Питон же не хуже lua в этом качестве, но он больше чем скриптовый, на нем вполне можно и приложения реализовывать и как язык-клей использовать. А интероп у луа проще если ручками делаешь, с билиотеками же разницы нет, тот же boost::python во многом мощнее луавских оберток.

CC>>>Т.е. думать надо о том, что получится перед тем как писать?

FR>>Думать к сожалению ( ) приходится не зависимо от используемого языка
CC>К сожалению, не все так считают. И при написании прог на управляемых языках наивно верят что можно ни о чем не заботясь фигачить "что вижу о том и пою". Ну и огребают потом проблем и удивляются, как так вышло.

На неуправляемых тоже, я вот недавно кучу гавнокода на C++ разгребал, там такие перлы попадались что невозможно было поверить что приложение работало и не падало
Re[4]: реальная проблема на Java - помогите решить
От: mik1  
Дата: 31.01.08 10:40
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Да, но когда ? Если там всего 5% уходит, это одно. Если 28% — очень сильно другое.


Я знаю, но это не имеет отношения к тому, где именно в потоке узкое место.

PD>А зачем ? Поставщик-то один, и очередь одна. Система один писатель — один читатель. Что я получу от нескольких читателей, крое оверхеда на переключение потоков ?


Что-то мне подсказывает, что прочитать данные из сети можно быстрее, чем закинуть их в БД. Из-за этой разницы и предлагаю сделать дополнительных читателей (писателей в БД).

PD>2 пары: Поток записи — 28% суммарного времени, из них 16% на poll, 12 — на запись в БД, остальное почти нули

PD>1 пара: Поток записи — 34% суммарного времени, из них 21% на poll,14% на запись в БД

Пропорция для 1 пары машин: 3 к 2, для 2 пар машин — уже 4 к 3. То есть процент времени на poll уменьшается, а на запись в БД растет. На самом деле, судя по времени, очень похоже, что здесь включено время ожидания (с ростом траффика оно будет стремиться к нулю).

Да, я бы еще обратил внимание на то, что при росте траффика суммарное время, съеденное потоком записи в БД, уменьшается. Может, сначала сниффер посмотреть?

Еще что прошу уточнить — БД локальная или на другой машине? Подозреваю, что удаленная.
Re[25]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 10:44
Оценка: -1
Здравствуйте, FR, Вы писали:

FR>Коряво, я например очень редко в C++ пользуюсь такими указателями

Я вообще не пользуюсь такими указателями. Просто не возникало надобности. На данный момент не могу себе представить ситуацию, в которой это было бы самым удобным решением. ИМХО если возникает такая надобность то что то не в порядке в архитектуре проги.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 10:45
Оценка:
Здравствуйте, mik1, Вы писали:

M>Здравствуйте, Pavel Dvorkin, Вы писали:


M>Внесу предложение на Яве.


<skipped>

M>Время прошу отмасштабировать к Вашему размеру файла (У меня файл чуть побольше получился). Получилась разница уже в 4 раза.

M>

M>Time elapsed: 0,063000 sec
M>Line count = 767555


У меня вышло

Time elapsed: 0,125000 sec
Line count = 718847

Java 1.5, Eclipse 3.3.1.1

Это второй и следующие запуски. Первый был около 0.5 сек, он не в счет по понятной причине.

Спасибо. Я и не знал, что в Яве есть поддержка mmf.

Запустил я на твою программу профайлер (пришлось в цикл ее вставить). В общем, что я и ожидал — половина времени уходит на get

Ты смог сделать половину того, что в моем примере на 0.015 сек было. Там 2 основных момента это mmf и p++. Первое ты сделал, а второе все же Яве противоречит. Или придумаешь ?

Кстати, вот тут

for (int i = 2; i < (fl — 3) >> 1; i++)

я бы все же (fl — 3) >> 1 из заголовка вынес. Не меняется же fl
With best regards
Pavel Dvorkin
Re[22]: Раннее знакомство с Java калечит судьбы программисто
От: SergH Россия  
Дата: 31.01.08 11:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

SH>>Динамической типизации.

CC>Для чего?
SH>>А так же генераторов
CC>см http://en.wikipedia.org/wiki/Generator_%28computer_science%29 раздел С++
SH>> итераторов
CC>Уже есть в плюсах
SH>> и GC.
CC>GC — зло в общем случае. + плохо сочетается с ручным управлением памятью.
SH>>И лямбд.
CC>Ну, вот чего нет так нет
CC>Насколько я понимаю, без GC они кривовато реализуются...

Всё это позволяет меньше думать о реализации и больше о смысле. При этом, в отличии от костылей в C++, использование всех перечисленных возможностей в коде просто и красиво.

SH>>И возможности передать в функцию указатель на метод конкретного объекта (конкретного экземпляра, this передаётся незаметно) — прозрачно и для функции и для объекта.

CC>ИМХО реализуемо и в С++. Разумеется не так прозрачно

На С++ даже динамическая типизация реализуема при желании, почитай Коплиена. Только, действительно "не так прозрачно".

В C++ есть указатель на функцию-член, но к нему нужен указатель на объект. Чтобы совместить, нужно засунуть всё это в объект "КАЛЛБЕК", который имеет функцию call (очевидно, со всеми вариантами параметров) и два конструктора — один для обычных указателей на функции, а второй — для указателей на методы объектов. Пока всё хорошо (хотя и есть проблема с параметрами), но вот как ты заставишь все стандартные и сторонние библиотеки работать с твоим КАЛЛБЕК-ом?

SH>> Хотя бы — тупой пример — какой класс строк должна использовать эта библиотека?

CC>std::wstring

Отличный выбор! Как насчёт COM? COM-у нужен BSTR.. Как насчёт использования этой библиотеки в приложении на ATL? У них свои строки. В приложении на MFC, на WTL, на Qt? Как насчёт "правильного юникода"? Не поручусь, но, имхо, питоновские строки работают с правильным юникодом, а не с UCS2.

CC>Т.е. думать надо о том, что получится перед тем как писать?


Я там ниже развернул, в отдельном собщении.

CC>угу. И 287368235523^1024 * 76523876532^512 тоже посчитает и будет хранить?


Мне нечего добавить к ответу FR

CC>В чем приличие?


Их достаточно для всех разумных use-case-ов и никому не приходится писать свой вариант.

CC> Но блин, почему как только человек открывает для себя новый язык он тут же стремится писать на нем все подряд?!


Чтобы понять границы. Чтобы попробовать тоже, но по новому. Кроме того, я же явно оговорил область применимости C++. Я в неё не вмешиваюсь. Правда, из неё нужно вычесть область применимости Фортрана и Ассемблера
Делай что должно, и будь что будет
Re[14]: Раннее знакомство с Java калечит судьбы программисто
От: mik1  
Дата: 31.01.08 11:17
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>У меня вышло

PD>Time elapsed: 0,125000 sec
PD>Line count = 718847
PD>Java 1.5, Eclipse 3.3.1.1

Ключик -server не забыли? Ну и машины то разные (C2D 6600, правда хард дешевый на 80 гиг).

PD>Спасибо. Я и не знал, что в Яве есть поддержка mmf.


Она декларируемая. Зависит от реализации JVM.

PD>Запустил я на твою программу профайлер (пришлось в цикл ее вставить). В общем, что я и ожидал — половина времени уходит на get


Я знаю. Было критически важно уменьшить кол-во get-ов в цикле. Можно было бы еще немного схитрить, оставив байтовый буфер и ища 0x0D на четных позициях, но это было бы не совсем одно и тоже. А ну совсем прямого доступа к памяти нету...

PD>Ты смог сделать половину того, что в моем примере на 0.015 сек было. Там 2 основных момента это mmf и p++. Первое ты сделал, а второе все же Яве противоречит. Или придумаешь ?

А нет смысла...

PD>я бы все же (fl — 3) >> 1 из заголовка вынес. Не меняется же fl


Я знаю. Только в отличие от вызова метода в условии for, я сомневаюсь, что компилятор здесь сам не оптимизирует.
Re[18]: Раннее знакомство с Java калечит судьбы программисто
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 31.01.08 11:23
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Кстати, о MSVC. Я до сих пор с тоской вспоминаю MSVC 6.0. Тянул с переходом на новые версии до последнего, оставил ее когда уж совсем было нельзя. Она буквально летала на компьютерах 5-летней давности. А нынешняя только проект открывает 10-15 сек...


Чего??? У меня дома машина 4х летней давности (Athlon XP 2100, 512 Мб RAM). И VS2008 вполне нормально работает. Проект открывается секунды 2-3. Вообще, с переходом с 2005 на 2008 заметил только улучшение стабильности и поддержку C# 3.0. Работает так же быстро, разве что рефакторинг чуть помедленее. На рабочих компах просто летает, хотя и они не первой свежести. Я ещё на свой матерюсь, что не может, как рабочие, проект мгновенно открывать.

Кстати, посмотрел бы я на MSVC 6.0, если бы он обеспечивал столь же мощную работу с кодом, что и VS2008 в случае с C#. А то работал он может и побыстрее, но эффективность кодинга была раза в 3-4 меньше.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[20]: Раннее знакомство с Java калечит судьбы программисто
От: sndanil Россия  
Дата: 31.01.08 11:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Это точно. Отработала. Дал на вход файл с одной текстовой строкой длиной 534 символа (длина файла 1070 байт). Вот что она печатает

PD>Это, мягко выражаясь, несколько не соответствует действительности. Там все же одна строка, а не две. И к тому же лишний символ- 0xFEFF в начале эта программа почему-то включила в первую часть строки, хотя его надо было опознать как признак Юникодного файла и в строку не включать .

а кто тебе сказал что она по строкам считывает файл? ... ты там еще что-нить припиши и потом повозмущайся ... вывод количества символов ведь твоих рук дело ...

S>>кстати че там у нас со скоростью?


PD>Сначала сделай, чтобы программа работала, потом обсудим


ничего не путаешь?
Автор: sndanil
Дата: 25.01.08


пример прочтения юникодного текстового файлы с выводом на консоль


поставь там Console.Write(str); вместо Console.WriteLine(len); и все ... она работает ... или можешь взять еще здесь
Автор: sndanil
Дата: 30.01.08
...
Re[15]: Раннее знакомство с Java калечит судьбы программисто
От: Pavel Dvorkin Россия  
Дата: 31.01.08 11:40
Оценка:
Здравствуйте, mik1, Вы писали:

M>Здравствуйте, Pavel Dvorkin, Вы писали:


M>Ключик -server не забыли?


Нет, не ставил. Куда его — в Arguments ? Добавил сейчас — то же самое. Запускаю так — RunAs — Java Application. Предварительно открыл Open Run Dialog и там в Arguments его поставил.

А зачем он нужен ? Там есть в Run Run At Server, я его и не пробовал.

Ну и машины то разные (C2D 6600, правда хард дешевый на 80 гиг).

А вот это да. У меня Athlon 4200+

M>Она декларируемая. Зависит от реализации JVM.


Я ими воспользуюсь. Переносимость меня совсем не волнует.


PD>>я бы все же (fl — 3) >> 1 из заголовка вынес. Не меняется же fl


M>Я знаю. Только в отличие от вызова метода в условии for, я сомневаюсь, что компилятор здесь сам не оптимизирует.


А вынести все же лучше. Бог его знает, соптимизирует или нет.
With best regards
Pavel Dvorkin
Re[26]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 11:41
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, FR, Вы писали:


FR>>Коряво, я например очень редко в C++ пользуюсь такими указателями

CC>Я вообще не пользуюсь такими указателями. Просто не возникало надобности. На данный момент не могу себе представить ситуацию, в которой это было бы самым удобным решением. ИМХО если возникает такая надобность то что то не в порядке в архитектуре проги.

Архитектура тут ни причем, в других языках (да и даже в борландовском диалекте C++) широко пользуются подобными указателями. Просто это так коряво сделано, что я тоже практически этим в C++ не пользуюсь.
Re[19]: Раннее знакомство с Java калечит судьбы программисто
От: FR  
Дата: 31.01.08 11:43
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Кстати, посмотрел бы я на MSVC 6.0, если бы он обеспечивал столь же мощную работу с кодом, что и VS2008 в случае с C#. А то работал он может и побыстрее, но эффективность кодинга была раза в 3-4 меньше.


Visual Assist + VS 6 по функциональности ни чем ни хуже VS 80 для C++.
Re[25]: Раннее знакомство с Java калечит судьбы программисто
От: CreatorCray  
Дата: 31.01.08 11:59
Оценка:
Здравствуйте, FR, Вы писали:

FR>печатает (p4 2.8)

FR>0.00779449739352
У меня Time: 0.002160 sec 4'763'396 ticks в сишном коде на Core2 E4500

Впрочем числа то маленькие да и рантайм не на питоне писан
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.