æŠéæ©ã¯ãªãC++ã®æ©èœã®9å²ããçŠæ¢ãããã®ããF-35ã®å®å šããã°ã©ãã³ã°å²åŠã
ããã«ã¡ã¯ããšã³ãžãã¢ã®çŽä¹ã§ãã
YouTubeãçŽä¹ããã¯ãã§ããã°ã©ãã³ã°æè²ãWebã»ãã¥ãªãã£åç»ãäœã£ãŠããŸãã
ãã£ãäžã€ã®æªåŠçã®äŸå€ãããããæ°ç§ã§5åãã«ã®ãã±ãããæ¶ãé£ã°ããŸãããF-35ã®éçºè ãã¡ã¯åãéã¡ãç¹°ãè¿ããªããšæ±ºãã匷åãªèšèªã§ããC++ããç¹å®ã®æ©èœããå€ç§æè¡ã®ããã«ãåãåãããšã§ãããå®å šãªãœãããŠã§ã¢ãäœãäžããŸããã
ãã®èšäºã§ã¯ã»ãã¥ãªãã£ãªãµãŒãã£ãŒãšããŠç¥ãããLaurieWiredããã®åç»ãããšã«ãèªç©ºå®å®ãœãããŠã§ã¢ã®æŽå²ãšãæŠéæ©F-35ãæ¡çšããC++ã³ãŒãã£ã³ã°æšæºãJSF++ãã®æ žå¿ã远ã£ãŠãããŸããå®éã«ãã©ã€ãã·ãã¥ã¬ãŒã¿ãŒãšC++ã³ãŒãã䜿ã£ã宿Œã亀ããªãããé£è¡åã«åãå€ãã¹ããã®(remove before flight)ããšããèãæ¹ã解説ããŠãããŸããAIã«ããã³ãŒãçæãåœããåã«ãªãã€ã€ããä»ã ãããããå®å šã絶察ã®é åã§ã©ããªèŠåŸãæ±ããããã®ããç¥ãæãããã«ãªãã¯ãã§ãã
é£è¡ãœãããŠã§ã¢ã®æŽå²ãšã5åãã«ãæ¶ããäžè¡

åç»ã¯åŒ·çãªäžèšããå§ãŸããŸãã
ïŒçŽ0:00ïŒ"At Mach 1, you don't have time for a garbage collector."
ããã1ã®äžçã§ã¯ãã¬ããŒãžã³ã¬ã¯ã¿ãåŸ ã£ãŠããæéãªã©ãªãã
ã»ãšãã©ã®ããã°ã©ã ã«ãšã£ãŠãã°ã¯åãªãäžäŸ¿ã§ãããã¯ã©ãã·ã¥ããŠãã¢ããªãåèµ·åããã°æžã¿ãŸããããã倱æãèš±ãããªãäžçããã£ãäžè¡ã®äžå ·åã倧æšäºã«ã€ãªããäžçã§ã¯è©±ããŸã£ããå€ãã£ãŠããŸãã

ãã®è±¡åŸŽãšããŠç޹ä»ãããã®ã1996幎6æ4æ¥ã欧å·ã®æ°åãã±ãããã¢ãªã¢ã³5ãã®äºæ ã§ããæã¡äžãåŸ36ç§éã¯å®ç§ã§ãããããããã©ã€ãå¶åŸ¡ãœãããŠã§ã¢ã®å¥¥æ·±ãã§äžã€ã®æªåŠçäŸå€ãçºçããŸãã64ãããã®æµ®åå°æ°ç¹æ°ïŒhorizontal biasã®å€ïŒã16ãããæŽæ°ãžå€æããããšããããšãåŒãéã§ãããèšèªã¯èš±ãããéãã«æ¯ãèã£ãŠãšã©ãŒãçºçãããŸããããã·ã¹ãã ã¯ãã®ãšã©ãŒãåŠçã§ããã5åãã«ãäžç¬ã§å€±ãããŸããã
ïŒçŽ1:24ïŒ"In this particular situation, an exception was detected, but it wasn't properly handled."
ãã®äºæ ã§ã¯äŸå€ãã®ãã®ã¯æ€åºãããŠãããã®ã®ãé©åã«åŠçãããŠããªãã£ãã

ãªãããã®ã¢ãªã¢ã³5ã®äºæ ã«ã€ããŠã¯èŠèŽè ãããã詳现ãªèæ¯ã®è£è¶³ãå¯ããããŠããŸãã
"In the case of the crash of Ariane 5, the exception was not unhandled. It was assumed that after the extensive testing... no exception could happen, so if any occured, it was assumed that it is due to hardware malfunction... But this second one was doing exactly the same computation, triggering exactly the same exception."
ã¢ãªã¢ã³5ã§ã¯äŸå€ãç¡èŠãããŠããããã§ã¯ãªããå ¥å¿µãªãã¹ããçµã以äžããäŸå€ã¯èµ·ãããªããšæ³å®ãããããèµ·ãããããŒããŠã§ã¢æ éãšã¿ãªããŠåé·ç³»ãžåãæ¿ããèšèšã ã£ãããšãããåãæ¿ãã2å°ç®ããŸã£ããåãèšç®ãããŠåãäŸå€ãåºããââãšããææã§ããïŒ@robert.ehrlich8942ïŒ
F-35ã®èšèšè ãã¡ã¯ãããã倱æãäºåºŠãšèµ·ãããªããšæ±ºããŸãããJSFïŒJoint Strike FighterïŒã®C++æšæºã«ã¯ãAVã«ãŒã«208ïŒäŸå€ã䜿çšããŠã¯ãªããªãïŒexceptions shall not be usedïŒããšæèšãããŠããŸããããããããremove before flightãã®å¥œäŸã§ã察象èšèªããç¹å®ã®æ©èœãåãåºãããšã§ãããå®å šãªãã®ãäœãããšããçºæ³ã§ãã
ããã§èªãæã¯ãæŠéæ©ãã€ãããã®ããã«ããã°ã©ã ããããšã¯ã©ãããæå³ãªã®ãããªããããéèŠãªã®ãããããŠãªãç®ã®åã«ã²ãŒã ãã¥ãŒãã眮ããŠããã®ãïŒçç±ã¯åŸã»ã©æããããŸã)ãäºåããŸããåãªãæŽå²è§£èª¬ã§ã¯ãªããJSFæšæºã«å³å¯ã«åŸã£ãC++ã³ãŒãããã©ã€ãã·ãã¥ã¬ãŒã¿ãŒå ã®F-35ã«æ¥ç¶ããŠå®æŒããŠããæ§æã§ãã
ãã³ã¿ãŽã³ã§æŠããããèšèªæŠäºããšC++ãžã®é

çŸä»£ã®è»çšæ©ã¯ãããŒããŠã§ã¢ãããããããœãããŠã§ã¢ã®å¡ã ãšèªãæã¯åŒ·èª¿ããŸãã
ïŒçŽ2:56ïŒ"It's much more like you're flying a computer that happens to also be a plane."
ããã¯ãããŸããŸã³ã³ãã¥ãŒã¿ãç©ãã é£è¡æ©ãã§ã¯ãªããããŸããŸé£è¡æ©ã§ãããã³ã³ãã¥ãŒã¿ããæçžŠããŠããæèŠã«è¿ãã
1970幎代åé ã®F-4ãã¡ã³ãã ã«ã¯ã»ãšãã©ãœãããŠã§ã¢ããªããçæã³ã³ãã¥ãŒã¿ã¯æ¯è»ãšã«ã ã®ç®±ãããã°ç²Ÿå¯æèšã®ãããªãã®ã§ãããã³ãŒããšåŒã¹ããã®ã¯éå±è£œã«ã ã®åœ¢ãã®ãã®ã§ããã
ãããå€ããå§ããã®ããåŸã«F-14ãã ãã£ãããšããŠç¥ãããæ¥µç§ã®æµ·è»ãããžã§ã¯ãã§ããå®ã¯äžçåã®ãã€ã¯ãããã»ããµã¯Intelã§ã¯ãªããGarrett AiResearch瀟ãF-14ã®ããã«äœã£ãŠããŸãããå¯å€ç¿ŒïŒã¹ã€ã³ã°ãŠã€ã³ã°)ã®å¶åŸ¡ãæåã§è¡ãã®ã¯è² è·ã倧ããããããã§ããã®äºå®ã¯ãœé£ã«ç¥ãããªããã1998幎ãŸã§æ©å¯æ±ãã§ãããå€é åŒãåŠçããçŽ2500è¡çžåœã®ãã€ã¯ãã³ãŒããç©ççã«çŒã蟌ãŸããŠããããããé£è¡æ©ã«èŒã£ãæåã®æ¬æ ŒçãœãããŠã§ã¢ã§ããã
åæã®ãœãããŠã§ã¢æä»£ã¯æ··æ²ãšããŠããŸãããéžè»ã»ç©ºè»ã»æµ·è»ãããããç°ãªãã³ãŒãã£ã³ã°æšæºãæã£ãŠããã®ã§ãã空è»ã¯ãJovialãã奜ã¿ãæµ·è»ã¯F/A-18ãšãšãã«ç¬èªã®ãCMS-2ããæ¡çšããŸãããäºã€ã®èšèªãäºã€ã®ããŒããŠã§ã¢ã¢ãŒããã¯ãã£ããããŠäºææ§ãŒããšããç¶æ ã§ããã

æèŒãœãããŠã§ã¢ã®éã¯ææ°é¢æ°çã«å¢ããŠãããŸããF-16Aã®çŽ12äž5000è¡ãããB-1ã®100äžè¡ãžããããŠçŸä»£ã®F-35ã§ã¯å®ã«900äžè¡ãžãšè·³ãäžãããŸãããããæç¹ã§ã¯450çš®é¡ä»¥äžã®ããã°ã©ãã³ã°èšèªã䜿ããããããããããã«ãã¡ããšããæšæºããªãã£ããšå ±åãããŠããŸãã
ããã§åœé²ç·çã¯ãããã眮ãæãã髿°ŽæºèšèªãšããŠãADAããæã¡åºããŸããããã®æšé²ã¶ãã¯åŸ¹åºããŠããŠãADAã䜿ããªããªãã䜿ããªãããšãç©ççã«èšŒæããªããã°ãªããªãããšããäºå®äžã®çŸ©ååã§ãããADAã䜿ããªããã°å¥çŽãåããªããšããäžçã§ããADAã¯å®å šæ§ãéèŠãããã¢ããªã±ãŒã·ã§ã³ã«éåžžã«é©ããŠãããèªç©ºå®å®ã§ã¯äžå¯æ¬ ã§ããã
ãã®ADA矩ååã¯çŽ15幎ç¶ããŸãããããããŠåé¡ã衚é¢åããŸãã1990幎代ãèªç©ºå®å®ã¯ADAäžè²ã ã£ãäžæ¹ã§ãäžéã§ã¯ã€ã³ã¿ãŒããããWindows 95ããããŠè¯è³ªãªã²ãŒã ã®æ°ã ãC++ã§åããŠããŸãããé«çµŠãªãœãããŠã§ã¢è·ãçãåŠçã¯ADAã§ã¯ãªãC++ãåŠã³ãŸããããã«åœæã®ã³ã³ãã€ã©ã¯ææã§ãADAã®ã³ã³ãã€ã©ã¯æ°åãã«ãããŸãããåŠçãã¡ãC++ãšGCCãšãããç¡æãœãããŠã§ã¢ã®ç¹æ¥åè»ãã«é£ã³ä¹ã£ãã®ãåœç¶ã§ããã
"@7:50 This!!! One of the many wonderful gifts of open source is that young folks interested in writing programs will never again have to pay for a compiler ðšðŸâð»"
ãããã ãïŒ ãªãŒãã³ãœãŒã¹ã®çŽ æŽãããèŽãç©ã®äžã€ã¯ãããã°ã©ã ãæžãããè¥è ãäºåºŠãšã³ã³ãã€ã©ã«ãéãæããªããŠããããšã ããšã³ã³ãã€ã©æææä»£ãæããã声ããããŸãããïŒ@theycallmekenïŒ
ã¡ãªã¿ã«ADAã¯ç¡é§ã«ã¯ãªããŸãããèŠèŽè ããã¯ãããªå®äœéšãå¯ããããŠããŸãã
"My friend took ADA as a throw away elective in college. He then spent 15 years bouncing around military contractors making very decent money."
ãå人ã¯å€§åŠã§æšãŠç§ç®ã®ã€ããã§ADAãåã£ãããã®åŸ15幎éãè»éè«è² äŒæ¥ãæž¡ãæ©ããŠããªãã®çšŒããåŸãŠãããïŒ@digitalranger4259ïŒ
C++ãã飌ããªãããââJSFæšæºã®èªç

ããããŒãã»ããŒãã£ã³ãF-35éçºã«åãçµãé ããã®æ©äœãã»ã³ãµãŒãã¥ãŒãžã§ã³ãã¯ããæ¥µããŠãœãããŠã§ã¢äŸå床ã®é«ãèªç©ºæ©ã«ãªãããšã¯æããã§ãããããã§åœŒãã¯äžå¯èœã«æã¿ãŸããåœé²ç·çã説åŸããADAã§ã¯ãªãC++ã®äœ¿çšãèªããããããšããã®ã§ãã
ïŒçŽ9:05)"Please let us break the law and do it with your approval. Please let us use this new unsafe language and ignore every single other software mandate you've made up until this point."
ãã©ãããããªãæ¹ã®æ¿èªã®ããšã§æç ŽãããããŠãã ããããã®æ°ãããŠå®å šã§ãªãèšèªã䜿ãããããŸã§ã®ãããããœãããŠã§ã¢çŸ©åãç¡èŠãããŠãã ãããââãã³ã¿ãŽã³ã§ã®ææ¡ã¯ãããªäº€æžã ã£ããšè¡šçŸãããŠããŸãã
ãã ãçã®C++ããã®ãŸãŸäœ¿ãã€ããã¯ãªããèšèªã飌ããªããèšç»ããããŸããããã®å©èšãä»°ãã çžæã¯ãC++ã®çã¿ã®èŠªãã£ãŒãã»ã¹ãããŽã¹ãã«ããæ¬äººã§ããèªãæã¯å®éã«äŒã£ãŠè³ªåããããšããããšæããã€ã€ãã¹ãããŽã¹ãã«ããèªèº«ãJSFã«ãŒã«ã®çå®ã«é¢äžããããšãèªããŠãããšç޹ä»ããŸãã

C++ãšãã匷åãªèšèªããç¹å®ã®éšåãå€ç§çã«åãé€ãããšã§ãADAã®ãããªæ§æ¥ã®èšèªã«çžãããããšãªããããã·ã§ã³èªèšŒãå®å šèªèšŒãéããããã³ãŒããæžããââãããJSF C++æšæºåã®æ žå¿ã§ãããããé©ãã¹ãããšã«ããã®JSFæšæºã¯èª°ã§ããªã³ã©ã€ã³ã§å ¬éãããŠãããçè«äžã¯èª°ã§ãæ°ååãã«èŠæš¡ã®èªç©ºæ©ãããžã§ã¯ãã«æºæ ã³ãŒãã§è²¢ç®ã§ããã®ã§ããJoint Strike Fighterãšããåã®éããããããŒãã ãã§ãªã倿°ã®é²è¡äŒæ¥ã»æ¿åºã»åœã ãååãããããžã§ã¯ãã§ããã
C++ã®äºé¢æ§ã«ã€ããŠã¯ãèŠèŽè ããã¹ãããŽã¹ãã«ããã®æåãªèšèãåŒãããŠããŸãã
"Yes and Bjarne was also the same person who said, 'C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.'"
ãCã¯èªåã®è¶³ãæã¡æãããããC++ã§ã¯ãããé£ãããªããããã£ãŠããŸããšè¶³ããšå¹ãé£ã°ããââãããªèšèãæ®ãã人ç©ã§ãããããšãïŒ@chuckbatson595ïŒ
ã·ãã¥ã¬ãŒã¿ãŒã§F-35ãé£ã°ã

èªãæã¯ãã€ãŠèªç©ºå®å®ã·ã¹ãã åãã®C++ãæžãã空è»åãã«ãã¢ãè¡ãä»äºãããŠãããšæãããŸãã宿Œã§ã¯äººæ°ã®ãã©ã€ãã·ãã¥ã¬ãŒã¿ãŒãX-Plane 12ããšAOA Simulations補ã®F-35Bã䜿çšããŸããX-Planeã¯æ¥çã§ããœãããŠã§ã¢ã®çµ±åãã¹ããé£è¡ãã¢ã«ãã°ãã°äœ¿ãããŠããŸãã
ç»é¢ã«ã¯F-16ã¹ã¿ã€ã«ã®å€æ©èœãã£ã¹ãã¬ã€(MFD)ãçšæãããX-Planeãæè¿å ¬éããWeb APIçµç±ã§ã©ã€ãã®é£è¡ããŒã¿ã賌èªãç¶ããŠããŸããããã³ããšã³ãã®UIã¯PythonããããŠå®éã«JSFæšæºã宿Œããããã¯ãšã³ãã®èšç®éšåãC++ãšããæ§æã§ããäœçœ®ããŒã¿ã颚ã®ããŒã¿ããšã³ãããŒãããŒã¿ãããã²ãŒã·ã§ã³ããŒã¿ãªã©ããªã¢ã«ã¿ã€ã ã§æŽæ°ãããŠãããŸãã

ãããŠå®éã®é¢éžãšãã©ã€ããå§ãŸããŸãããããã¬ã³é¢šã®ãµã³ã°ã©ã¹ã®ããã§èŠçã¯ã»ãšãã©ãªããšç¬ãã亀ãã€ã€ãã¹ã ãŒãºãªé¢éžããã¬ã«ããŒã«ããããŠäœåºŠããPull upïŒåŒãèµ·ãã)ããšå«ã¶æçžŠãç¶ããŸãããã®ãã¿ãã¿ã¶ãã¯èŠèŽè ã«ã倧ãã«åºãã£ãããã§ãç¬ç«ããåå¿ãšããŠåŸè¿°ããŸãã
宿Œçšã®ã³ãŒãã¯GitHubã§å ¬éãããŠããŸãã
"Follow along with my compliant...and not so compliant F-35 C++ code here! Github: https://github.com/LaurieWired/XplaneFlightData"
ãæºæ çã»éæºæ çã®F-35 C++ã³ãŒãã¯ãããã远ããŸãããšæ¬äººããªããžããªãæ¡å ããŠããŸããïŒ@lauriewiredïŒ
ãªããžããªã«ã¯ãcompliantïŒæºæ ïŒããšãnon-compliantïŒéæºæ )ãã®ãã©ã«ãããããå¯åºŠé«åºŠèšç®æ©ãæåèšç®æ©ãåçŽããã²ãŒã·ã§ã³ããŒã¿ã颚ã®èšç®æ©ãšãã£ãããã·ã§ã³ã¯ãªãã£ã«ã«/ã»ãŒããã£ã¯ãªãã£ã«ã«ãªèšç®ãC++ã§æžãããŠããŸãããããã®ã³ãŒãã¯100%ã®æéã100%ä¿¡é Œã§ããªããã°ãªããªãââã ããããå³ããæšæºã«åŸãå¿ èŠãããã®ã§ãã
JSFæšæºãã®ãã®ã¯èšå€§ã§ãç®æ¬¡ã ãã§ãå€ãã®é ç®ã«åã³ãŸãããªãã§ããæŠéæ©ã®ããã«ããã°ã©ã ãããããã§æŒãããã¹ãäžæ¬æ±ããã¡ã¢ãªå²ãåœãŠã»äŸå€ã»ååž°ã§ããå®å šæ§ã®æ¬è³ªã¯ãèšèªã«äœããè¶³ãããšã§ã¯ãªããèšèªããäœããåãé€ãããšã§äºæž¬å¯èœãªæ¯ãèããåŸãããšã«ããããšèªãæã¯ãŸãšããŸãã
ãªãäœè«ãšããŠãåæãããã¯ã®F-35ã®ããã·ã§ã³ã³ã³ãã¥ãŒã¿ã¯Motorola G4 PowerPCããã»ããµãããŒã¹ã«ããŠãããšç޹ä»ãããŸããããã¯å ¬éæ å ±ã§ã2003幎é ã®Aviation Todayèªã§ãè°è«ãããŠãããšã®ããšãã ããããç®ã®åã«ã²ãŒã ãã¥ãŒãïŒåãPowerPCç³»)ã眮ããŠãã£ãããšããããã§ããèç°å¢åããã¯ãã«æ¡åŒµãªã©ã¯å ãã£ãŠãããã®ã®ãåœä»€ã»ããã¢ãŒããã¯ãã£ã®æ ¹å¹¹ã¯ãã䌌ãŠãããšãããŸãã
äžæ¬æ±ãã®1ââäŸå€ã䜿ããªã

æåã®æ±ã¯ããã§ã«è§ŠããAVã«ãŒã«208ãäŸå€ã䜿çšããŠã¯ãªããªããã§ãã宿Œäžãèªãæã¯é£è¡ããŒã¿ã確èªããŠããæäžã«C++ã®äŸå€ã«ééããããã°ã©ã ãåŠçãæŸæ£ããŠãå¢èœãããŠããŸãæ§åãèŠããŸãã
ãªãäŸå€ãããã»ã©å«ãããã®ããæ žå¿ã¯å¶åŸ¡ãããŒãäºæž¬äžèœã«ãªãããšã«ãããŸããã¢ãªã¢ã³5ã®äºæ ããå€ããªãŒããŒãããŒããããšèªäœã§ã¯ãªãã誰ãèšç»ããŠããªãã£ãæªåŠçäŸå€ãçºçããããšãåé¡ã§ãããå®å šã絶察ã®ã³ãŒãã«ãšã£ãŠãããã¯ææªã®äºæ ã§ãã
è峿·±ãã®ã¯ãã¹ãããŽã¹ãã«ããèªèº«ã¯çŸä»£C++ã®äŸå€åŠçãåŒ·ãæ¯æããŠãããäŸå€ã®ã³ã¹ããååã«å®ããšèããŠããç¹ã§ããããã§ãJSFæšæºãäŸå€ãæé€ããçç±ã¯ãåœæã®ããŒã«ã®ãæç床ãã«ãããŸããã
ïŒçŽ20:46ïŒ"JSF++ is for hard real time and safety critical applications flight control software... if a computation takes too long somebody may die and for that reason we have to guarantee response times and we can't with the current level of tool support do that for exceptions."
JSF++ã¯ããŒããªã¢ã«ã¿ã€ã ãã€å®å šã絶察ã®ã¢ããªã±ãŒã·ã§ã³åãã§ãããèšç®ãé·åŒãã°äººãæ»ã¬ãããããªããã ããå¿çæéãä¿èšŒããå¿ èŠãããããåœæã®ããŒã«æ¯æŽã®ã¬ãã«ã§ã¯äŸå€ã«ã€ããŠãããä¿èšŒã§ããªãã£ãââãšããã¹ãããŽã¹ãã«ããèªèº«ã®èª¬æã§ãã
ãã®ããJSFæšæºã¯ãããŒã«ã察å¿ã§ããæ¥ã«åããŠäŸå€ããã·ãã¥ã¬ãŒãããã圢ãåã£ãŠããŸããå ·äœçãªä¿®æ£æ¹æ³ã¯ãªã¿ãŒã³ã³ãŒãã®å©çšã§ããéæºæ çã®ã³ãŒãã«ã¯try/catchãããã¯ãthrowæããããŸããããããã¯JSFæšæºã§ã¯äžåèš±ãããŸãããæºæ çã§ã¯èšç®çµæã«å¿ããŠç°ãªãå€ãè¿ããªã¿ãŒã³ã³ãŒããçšãããã®åŠçãåŒã³åºãåŽã®é¢æ°ã«å§ããŸããåŒã³åºãåŽã¯åãåã£ãã³ãŒããèŠãŠå¯Ÿå¿ã決ãããããããããã°ã©ã å šäœãçªç¶åŽ©å£ããããšããªããªããŸããèšç®ãæéå ã«çµãããªãã£ãã空ã®å€ã«ãªã£ããããŠããäŸå€ã§ã¯ã©ãã·ã¥ãã代ããã«ãšã©ãŒã³ãŒããè¿ãã ãã§æžãã®ã§ãã
ãã®ãäŸå€ãæžããªãããšããèãæ¹ã¯ãçŸå Žã®ãšã³ãžãã¢ã«ãåŠãªå ±æãåŒãã ããã§ãã
"Wait so when I haven't bothered to implement any exception handling for the past 20 years I was actually correct?"
ãåŸ ã£ãŠãã€ãŸã20幎éãŸãšãã«äŸå€åŠçãæžããŠããªãã£ã俺ã¯ãå®ã¯æ£ããã£ãã£ãŠããš?ãïŒ@StuJohnsonNZïŒ
"turns out I've been writing JSF++ without realizing"
ãç¥ããªããã¡ã«JSF++ãæžããŠããããããïŒ@user-sb5vt8iy5qïŒ
äžæ¬æ±ãã®2ââååž°ã®çŠæ¢ãšåŸªç°çè€é床

æ¬¡ã®æ±ã¯AVã«ãŒã«119ã§ã颿°ãçŽæ¥çã«ã鿥çã«ãèªåèªèº«ãåŒã³åºããŠã¯ãªããªããã€ãŸãååž°ã®çŠæ¢ã§ãã
ååž°ã®åé¡ã¯ã¹ã¿ãã¯ãªãŒããŒãããŒã®å±éºã«ãããŸãã颿°ãåŒã³åºããã³ã«æ°ããã¹ã¿ãã¯ãã¬ãŒã ãç©ãŸããååž°ã§ã¯ãã¬ãŒã ãæ¬¡ã ãšéãªã£ãŠãããŸãããããååž°ã¯æå€§ã®æ·±ãã®äžéãåãããªãããšãå€ããã©ãã ãã¡ã¢ãªã䜿ããã®äžéãææ¡ããªããã°ãªããªãå®å šã¯ãªãã£ã«ã«ãªé åã§ã¯èŽåœçã§ãã
宿Œã§ã¯ã代æ¿ç©ºæž¯ãèšç®ããé£è¡èšç®ã®äžã§äºé ä¿æ°ãæ±ãã颿°ãç»å ŽããŸããéæºæ çã§ã¯ `binomialCoefficient(n-1, k-1)` ãš `binomialCoefficient(n, k-1)` ã®ããã«èªåèªèº«ãäºåºŠåŒã³åºããŠãããæå€§æ·±ããèªããŸãããæºæ çã§ã¯ãããå埩(ã€ãã¬ãŒãã£ã)ãªå®è£ ã«æžãæããŸããã³ãŒãã¯é·ããªãèŠãç®ã®çŸããã¯å€±ãããŸããã颿°ãèªåèªèº«ãäžååŒã°ãªãããJSFæºæ ãšãªããŸãã
ããããŠããŒãã¹ãšããŠç޹ä»ãããã®ãAVã«ãŒã«3ã颿°ã®åŸªç°çè€é床(cyclomatic complexity)ã¯20ãè¶ ããŠã¯ãªããªããšããèŠåã§ãã埪ç°çè€é床ãšã¯é¢æ°å ã®å€æçµè·¯ã®æ°ã§ãifæã»while/forã«ãŒãã»and/orãšãã£ãè«çæŒç®ã»switchæãªã©ããã¹ãŠã«ãŠã³ã察象ã«ãªããŸããå ã»ã©ã®å埩çäºé ä¿æ°é¢æ°ãäŸã«ã颿°å®£èšã§1ãifæããšã«1ãoræŒç®ã§1ãforã«ãŒãã§1âŠâŠãšæ°ããŠããããã®åèšã20æªæºã«åããå¿ èŠãããããšå®æŒããŸãã
äžæ¬æ±ãã®3ââã¡ã¢ãªã®ãäºåãå²ãåœãŠ

æåŸã«ããŠæãéèŠãšãããæ±ããAVã«ãŒã«206ãåæååŸã«ã¡ã¢ãªã®å²ãåœãŠãè§£æŸãè¡ã£ãŠã¯ãªããªããã§ããããã°ã©ã ãå®è¡ãããŠããæäžã«åçã«ã¡ã¢ãªã確ä¿ããŠã¯ãªããªãããšããããšã§ãã
çç±ã¯äºã€ãããŸããäžã€ã¯äºæž¬äžèœæ§ã§ãã¡ã¢ãªãããŒãžã£ãå©çšå¯èœãªã¡ã¢ãªãèŠã€ããã®ã«ã©ãã ãæéãããããåãããªãããšãããäžã€ã¯ããããååãªã¡ã¢ãªãæ®ã£ãŠãããåãããªãããšã§ããããã«ããŒããžã®å²ãåœãŠãç¹°ãè¿ããšæçå(ãã©ã°ã¡ã³ããŒã·ã§ã³)ãèµ·ããå°ãã䜿ããªãé åãæ£ãã°ã£ãŠã倧ããªæ°èŠããŒã¿ãå ¥ããªããªãæãããããŸãã
宿Œã§ã¯ãçªé¢š(gust)ã®èšç®ã«äœ¿ã察æ°é床(IAS)ã®å±¥æŽããŒã¿ã顿ã«ãªããŸããéæºæ çã§ã¯ãŠããŒã¯ãã€ã³ã¿ãäœã£ãŠå±¥æŽãããã¡ã«è¿ããŠããããããããŒããžåçã«ã¡ã¢ãªã確ä¿ããŠããŸããŸããæºæ çã§ã®ä¿®æ£æ¹æ³ã¯è€æ°ãããŸãããããã§ã¯IASå±¥æŽé åã®æå€§ãµã€ãºãããŒãã³ãŒãããæ¹æ³ãéžã°ããŸãããããããåãåŸãæå€§ãµã€ãºãåãã£ãŠãããããé åã®å šã€ã³ããã¯ã¹ã䜿ãã€ã€ãåçãªå²ãåœãŠãäžåè¡ããã«èšç®ãå®çµã§ããŸããåçãªãæªç¥ããå®å šã«æé€ã§ããããã§ãã
å®å šã¯ãªãã£ã«ã«ãªãœãããŠã§ã¢ã®æªæ¥

JSFæšæºã®ååã¯ããã®æšæºã ãã«ãšã©ãŸããŸããã§ããããã®DNAã¯ããŸããŸãªåéã»æšæºãžãšåºãã£ãŠããŸãã
äŸãã°NASAã®é£è¡ãœãããŠã§ã¢æšæºãF-Primeãã¯2017幎ã«å ¬éãããã¡ã¢ãªå²ãåœãŠãªãã»äŸå€åŠçãªãã»ååž°ãªããšãJSFæšæºã®å§åйçãšãèšããå 容ã«ãªã£ãŠããŸããèªç©ºå®å®ä»¥å€ã§ããèªåè»æ¥çã«ã¯ãMISRAãããAutoSAR(automotive open system architecture)ãããããAutoSARã¯ãã®C++14æšæºã®åœ±é¿æºãšããŠJSFãåæãã§æããŠããŸããããæ°ããC++ãããŒã¹ãšããAutoSARã§ã¯ãã¹ããŒããã€ã³ã¿ã®ããã«æ§JSFæšæºã«ã¯ãªãã£ãæ©èœã蚱容ãããŠããŸããè»ã¯ä»ãè»èŒªã®ã€ããã³ã³ãã¥ãŒã¿ã§ãããBMWããã©ãŒããããšã¿ãšãã£ãäž»èŠã¡ãŒã«ãŒãAutoSARã«äŸåããŠããŸããã€ãŸãããããèšèªã®å®å šæ§ã¯ãæ°å幎åã«ãã³ã¿ãŽã³ãäžããæ±ºå®ã®äžã«æãç«ã£ãŠããã®ã§ãã
æ¥çããŸããã åºããã¯èŠèŽè ã®å®äœéšãšãé¿ãåããŸãã
"When I was lead programmer for a game studio in the early 2000's, our code rules for our PS2, GameCube and Xbox games were very similar to these. No exceptions, no memory allocation or deallocation after initialisation, and minimal recursion."
ã2000幎代åé ã«ã²ãŒã ã¹ã¿ãžãªã®ãªãŒãããã°ã©ãã ã£ãé ãPS2ã»ã²ãŒã ãã¥ãŒãã»Xboxåãã®ã³ãŒãèŠçŽã¯ãããšãã£ããã ã£ããäŸå€ãªããåæååŸã®ã¡ã¢ãªå²ãåœãŠ/è§£æŸãªããååž°ã¯æå°éãââå®¶åºçšã²ãŒã æ©ã®äžçã§ãåçš®ã®èŠåŸããã£ããšãã蚌èšã§ããïŒ@slygamer01ïŒ
æåŸã«èªãæã¯å€§ããªåããæããããŸããããªãã¯èªåã®C++ã³ãŒãã§JSFæšæºã«åŸãã¹ããªã®ããããã§ã²ãããå¹ããŠããŠãC++ã®çã¿ã®èŠªã¹ãããŽã¹ãã«ããèªèº«ã¯ãJSFæšæºã®çå®ã«é¢ãã£ãã«ããããããã仿¥ã§ã¯ãC++ Core Guidelinesãã䜿ãã¹ãã ãšèšãã ããããšç޹ä»ãããŸããçŸä»£ã®C++ã¯ãã®20幎ã§é²åãç¶ããŠããããã§ããJSFæšæºã¯åœæãšããŠã¯çŽ æŽãããå·¥åŠç忥ã§ããããä»ãªãããæ°ããå®å šãªC++ã䜿ãã¹ãã ãšããããšã§ãã

ããã§ãJSFæšæºã¯ãæŽå²ãšããŠãéåžžã«éèŠã§è峿·±ããC++ãšããè€éãªèšèªããéèŠã€ã³ãã©ã«äœ¿ããã»ã©äºæž¬å¯èœã§å®å šãªãã®ãžãšå€ããç¹ã§äžèŠã®äŸ¡å€ãããããšç· ããããããŸãã
ïŒçŽ33:18ïŒ"It's not always just about being the smartest programmer in the room. It's about having the discipline of knowing what aspects to remove before flight."
倧åãªã®ã¯åžžã«éšå±ã§äžçªè³¢ãããã°ã©ãã§ããããšã§ã¯ãªããäœããé£è¡åã«åãå€ããã¹ãããèŠæ¥µããèŠåŸãæã€ããšã ã
èŠèŽè ã®åå¿
æ¬è«ãšã¯çŽæ¥é¢ä¿ããªããã®ã®ãåç»ãçãäžããã³ã¡ã³ããæ°å€ãå¯ããããŸãããããããäžè¬çãªèŠèŽè åå¿ã®äžäŸã§ãã
"If fighter jets ran everything in Javascript, they would need an extra engine just to power the CPU. ð€£"
ãããæŠéæ©ãäœãããJavaScriptã§åããŠããããCPUãåãããã ãã«ãšã³ãžã³ãããäžåºç©ãå¿ èŠããããªãïŒ@hgbugalouïŒ
"The F-14's secret processor is what allowed it to enter the DANGER ZONE"
ãF-14ã®ç§å¯ã®ããã»ããµããã£ãããããããã®ããã³ãžã£ãŒã»ãŸãŒã³ããžå ¥ãããã ããšãããã¬ã³ã«ãªãããã声ãïŒ@badphotonïŒ
"'I wonder if I could dip my wing in the water just, like, a little bit.' â Audio recovered from black box"
ãã翌ãã¡ãã£ãšã ãæ°Žã«æµžããªãããªãââãã©ãã¯ããã¯ã¹ããååãããé³å£°ããšãæçžŠå®æŒãããããžã§ãŒã¯ãïŒ@_zoidïŒ
"9 million lines of code, all in main()"
ã900äžè¡ã®ã³ãŒããå šéš main() ã®äžã«ãããã ããïŒ@Kolor-KodeïŒ
"Sentences like 'I am going to write flight certified code' and 'I have some weird multithread issues in Python' were not sentences I expected to come together."
ããé£è¡èªèšŒã³ãŒããæžããããšãPythonã§ãªããå€ãªãã«ãã¹ã¬ããåé¡ãåºãŠãããåãåç»ã§äžŠã¶ãšã¯æããªãã£ããïŒ@57thornsïŒ
ãã®ã»ããèªç©ºå®å®ãADAã®çŸå Žçµéšãèªãããã©ã³ãšã³ãžãã¢ãã¡ã®ã³ã¡ã³ãããèªãæã®ç¥çã§æ¥œãããªèªãå£ãç§°è³ãã声ãç®ç«ã¡ãŸããã
ãŸãšã
ãã®åç»ã¯ã¢ãªã¢ã³5ã®äºæ ãšããççãªæèšããåºçºããF-4ãã¡ã³ãã ããF-35ã«è³ãé£è¡ãœãããŠã§ã¢ã®æŽå²ããã³ã¿ãŽã³ã§ã®èšèªæŠäºããããŠADAããC++ãžã®è»¢æããã©ããŸããããã®æ žå¿ã«ããã®ããC++ããäŸå€ã»ååž°ã»å®è¡æã®ã¡ã¢ãªå²ãåœãŠãåãé€ãã埪ç°çè€é床ãŸã§æã蟌ãããšã§äºæž¬å¯èœæ§ã確ä¿ããJSF++ãšããèãæ¹ã§ãããã©ã€ãã·ãã¥ã¬ãŒã¿ãŒãšå®ã³ãŒãã䜿ã£ã宿ŒãéããŠãæºæ çãšéæºæ çã®éããå ·äœçã«ç€ºãããŸããã
ãããŠãã®ååã¯NASAã®F-Primeãèªåè»ã®MISRAãAutoSARãžãšåãç¶ãããç§ãã¡ã®èº«è¿ãªæè¡ã®å®å šæ§ãéãã«æ¯ããŠããŸããå®å šã¯ãªãã£ã«ã«ãªãœãããŠã§ã¢ã§åãããã®ã¯ãæ©èœãè¶³ãè³¢ãããããé£è¡åã«äœãåãå€ããããèŠæ¥µããèŠåŸã§ããââããããã®åç»ã貫ãã¡ãã»ãŒãžã§ãã
PR: ãšã³ãžãã¢è»¢è·ãšãŒãžã§ã³ããããã¯ãŽãŒã

ãšã³ãžãã¢è»¢è·ãšãŒãžã§ã³ããããã¯ãŽãŒãããããã®PRã§ãã
ãã¡ãã®ãªã³ã¯ããç¡æã®è»¢è·çžè«ãã§ããŸãã
ããã¯ãŽãŒããã®ç¹åŸŽã¯äžã€ãã£ãŠ
â 颿¥å¯ŸçãäœåºŠã宿œã§ããŸãïŒ
æ®éã®ãšãŒãžã§ã³ãã¯ããããæš¡æ¬é¢æ¥ããªãã£ããåæ°ã1åã ãã«å¶éãããŠãããããŸããäœåºŠãç·Žç¿ã§ããŸãã颿¥æ
£ãããŠãããšå®çžŸã¢ããŒã«ããããã®ã§ããã§ããã
â¡å¿ããæ¹åãã«1DayéžèäŒããã£ãŠããŸãã
人æ°äŒæ¥ãéããç¬å éžèäŒããã£ãŠããŸããç¹ã«åææ¥1æ¥ã§ãã¹ãŠã®é¢æ¥ãå®äºã§ãã1DayéžèäŒã奜è©ã§ããå¹³æ¥å¿ãããšã³ãžãã¢ã®æ¹ã«ããããã§ãã
â¢é«å¹Žåããžã·ã§ã³ãè±å¯ã§ãã
ã³ã³ãµã«æ¥çã»ãã€ã¯ã©ã¹æ±äººå°éã®è»¢è·ãšãŒãžã§ã³ããMyVisionããšåãéå¶äŒç€Ÿãªã®ã§é«åå
¥æ±äººãè±å¯ã§ãã倧ããªæ¡ä»¶ã«é¢ãã£ãŠã¿ããæ¹ã»ã¡ã¬ãã³ãã£ãŒã®ããžã·ã§ã³ãçãããæ¹ã«ãããããã§ãã
ãŸãã¯ãã¡ãã®ãªã³ã¯ããç¡æã®è»¢è·çžè«ããã²ãã£ãŠã¿ãŠãã ããã
以äžã§ããã§ã¯ãŸãã
ãããªãšæã£ããå¿æŽãããïŒ
ãµããŒãã¯åç»å¶äœè²»ã«äœ¿ãããŠé ããŸãã