Как стать хорошим программистом? (часть 3 из 3). Обратная сторона Луны

??????, ???? ?? ???????? ? ????, ?? ????? ????????? ? ??, ??? ??? ???? ?? ?????? ???????. ????? ??, ?????? ?? ????? ???? ???????????, ?? ? ?? ??????? ???? ???? ??????? ????????? ????????, ??????? ??? ???????. ??? ??????, ?? ????? ????????.

??-??, ?????-???? ? ?????????????...

???????? ??? ??????????????

???, ??? ? ?????? ??????, ??????? ??? ?????? ??????? ???, «?????? ??? ????», ?? ? ????? ??? ????. ??? ?????? ??? ??? ????? ?? ??? ????? ??????????????? ? ??????? ?????, ???? ?? ?????? ??????????, ???????? ????? ??? ?????????????? ?? ??????????????????? ????????????, ??????? ? ????? ?????????? ??????? ??????????????, ? ?????? ???????, ?????????? ? ?????? ????? ??????????? ?????.

?????? ??? ????????? ? ?????? ??? ????? ????? ?????? ?? ?????? ??????? ???????? ??????????????. ????? ????? ?????? ????????. ????? ????, ? ???, ? ???, ????????? ??????????? ? ??????? ????????????, ??????? ?????????? ?????? ????? ??? ??? ???? ?????????, ??????? ???? ?????????????????, ??????? ???? «?????????» ??????? ? ??????. ? ??? ? ???? ????? ???????????.

?????? 1: ?????? ? ?++. ?????? ?????? ???????, ??????? ? ?????????????. ?? ??? ??? ??????, ????????? ????? ? ??????? ???????????? ???????????? ?????? ??????? ? ????? ?????????????? ????? ??????????? ?????????? ?????. ?? ???? ??? ????????? ????????????? ?????. ???? ??????????? ?++ ??????, ??????????? ?????. ???? VB-style ?????? ? ?????? ????? ?????????? ?? ?????? (? ????? ? ?????). ???? STL ??????, ??????? ???????? ??? ?????????? ?????????????? ??????, ???? ? ?? ?????? ??????????. ? ???? ATL ??????, ??????? ?????????? ?? ?? ??, ??? ? STL ??????.

?????? ?? ??? ????? ???? ????????. ??????????? ????? ?++ ?????? ????????? ????? ?? ???? ??????? ?????? ???? ????? ? ?????????? ?? ?++ ??????? ? ??????????? ? ???????? ???????????. VB ?????? ???? ?? ?? ??? ?????, ?? ?? ?????????? ???????????? ????? ? ??? ?? ????????, ????? ?? ??????????? ??? ?? ???????????. ? ? ???? ??????? ?? ??????? ?? ???????????? ??? ?????????? ??????, ?? ??? ??? ?????? ???????? ??? ??????. ? ?????????? ?????????? ?????? – ??? ????? ??????? ????????. ???????? ??? ?????? ??????????? ??????? ??? ??????. STL ?????? ? ????? ?? ??? ? ?????, ???? ?? ??????? ????, ??? ??? ????? ?? ????? ??? STL ??????????. ??? ? ???? ??????? ????????????. ? ???????, ??? ?????? ??? ?????? ???????? ?? ????????????, ???????? ??? ? ????? ?????? ??? ?? ???????? ???????????? ? ?????? ??????? ?? ???? ?????????? – ??? ? ?????? ????? ???????. ??? ????????? ???, ??? ?? ????????????? ???? ??????? ? ???????? ??????????? ?????????? ??? ?????? ? ???????????? 100% ??????????. ???? ????? ??????? ?  STL. ??, ? ?? ???? ?? ????????? ? ATL...

??? ? ???? ??????? ????? ???????, ??? ??, ??? ??? ?????? ??? ??????? ???????? ????????????????? ? ?????????? ? ??????? ????????????, ?? ???????????? ????????? ???????????? ???? ?? ?? ??? ?????? ????????????? ? ?????????????? ?? ?? ?????? ? ?????? ??????? ? ??????. Win32 ?????????? ? ???????? ?++ ?????? ? ????? ? ?????, COM ? WMI ????? ??????? VB ?????, ? ?????????????? ????? ??????????, ??????? ?? ?????????, ????? ?? ?????????? ?????????, ???????? ????? ??????????? STL ? ATL ?????.

?????? 2: Media Foundation. ??? ????? ????? ????????? ?? ????? ????????? ?????? ??????? ???? ?????? ????? ? ????? ?????. ???????? ??? ????? API, ??? ??? ??????????? ?????????, ???????, ?????, ????????????, ????????????? ?? ??????? (??? ????????? ????????? «rendeder»?) ??????????? ?????? ? ?????? ???????? ? ??????? ?????? ?? ???????????? ???? ??? ????? ??????????????? ???????. ?????? ?? ?????? (????????????) ?????? ???????????????? ??? ???? ??????????, ??????, ??????? ??? ???????? ??? ????????????? ???????, ? ?? ?????? ????????? ?????? ????????. ??, ?? ???? ????????? ?????????, ????????? ??? ??? ???????? ????????? ?????? ?????? ? ?????? – ???????? ???? ???? ? ??????? ?????????? ?????, ????????? ???????? DLL,... ???? ?? ???????? ???????????? ???? ?? ? ???? ????? ? ???? ?? ????? ???????? ??, ??? ??? ???????? ?????? ? ??????????? ?????? COM ???????, ????????????? ?? ?????? ????? ??????? IUnknown ?? ????? ???????????? ??? ref counting ? ??????????? ??????????? ?????? ????? ???? ????????, ?? ??? ???? ??? COM ?? ????????????. ?? ???? ??? ??, all pain, no gain. ?????? ???????? ?????-??.

???????? ???????????? ????????? ??????? ??? ???????? ? ??????. ????? ?? ??????? ?????? ???????? ? ??????? ?????? ?? ???? ??????, ? ??????? ?????????? ??????. ????????? ???? ??????: «???? ????????» «??, ???, ? ??????? #$%^&*!» «? ?????? ??-???????????» ???????? ???????? ?? ??????, ???????????... «??, ????.» ????????? ?????? ????????? ????????, ? ? ?????? ?????????? ????????? ??? ??????. ????? ??? «?????????» ????????????????.

??? ???, ??? ??? – ?? ?? ???? ???? ?? ?????? ? ????????????????. ??? ??? ????  ?? ?????? ?? ?????? ???????? ? ????????? ????????? ??????? ????????? ?? ??????? ??????, ???????? ?????? ?? ??? ???? ????????? ?????... ??? ???, ?????????? ????????. ? ?????, ???? ??? ????? ?? ????? ?????? ????????????? Windows, ?????????? ????????? ?? Java ? Java 2 – ???? ????? ??????? ? ????? ?????????? ? ????????? ????? ???. ?? ??? ??????? (??????? ??????? ?? ??????? ??????) AWT? ? ?????, «????? ?????, ? ?? ??? ? ?????? ??? ????? ????? ????????...»

???? ?? ?? ? ?????, ?????? ? ???? ??????? ??? ???? ???????????, ??????? ? ?????????. ???????? ?? ?? ?????????, ???? ?????? ????? ??????? ???, ?????? ??????, ?????? ????? ?? ????????, ????. ????? ???? ????? ?????? ?????????? ? ?????? «???? ????? ??????!» ?????? ??????, ?????? ??????, ??? ????? ???? ????? ????????? ????????? ? ?????????? ??????? ?????? ???? ? ???????????. ?????? ???????? ? ???????, ????????? ??????? ????, ??? ?????? ??? ??????? ??????, ? ???????: «?????, ?????, ? ?? ??? ? ?????? ??? ????? ????? ????????...»

? ??? ?????? ???? ???????? ? ???? ?????? ?????????????????, ??? ?????? ??????? ? ??? ???????? ?????? ???, ? ?????? ?? ????????? ?????? ????, ????????? ???-?? ????????.

????? ?????

??????-??, ? ????? ????? ????? ????????????? ???? ??????????. ? ???????, ????? ????? ????????? ??????? ? ??????, ?? ??? ????? ????? ????? ?????? ????????. ??????????????, ?? ????????????? ?? ??????????, ??? ???????? ? ????? ???????? ? ????? ??????? ?????? ??? ?????????????. ? ???????? ????????? ???????, ??????????? ? ??????? 2008-??, ????????????? ???????? ???????, ??? ? ????????? ???? ?? ??????????? ?? 100,000+ ?????? ?????????????, ??? ? ???? ???? (????? ???????????????, ?????? ??? ???????? ????? ? 150 ???????, ?? ????????? ????? ?? ?????, ?? ? ????? ?? ????). ? ????? ?????? ????????, ??? ??? ????? ??-???????? ???? ????????????, ?????????, ?? ??? ? ???????? ??????????.

? ?????, ? ? ?????, ??? ????? ????? ????????????? ?? ????????? ????????? ???, ???????? ?????? ?????????? Citi, Wachovia, Washington Mutual ?? ???? ?? ??????????, ?? ???-???? ?? ????????? ? ??????? ??????????? ?? ? ???????????? ??????? ?????. ? ????? ??????? ????????? ????? ?? ?????????? ?????? ? ???????? ??? ??? ???????? ????? ???????? ?????? ??? ????? ???????? ?????? ?????? ?????? ? ??????? ???????? – ?????? ???????? ? ??????????. ??????????? ??? ?????????? ????????? ? ?????? ???? ?? ????? ???? ???????? – ?????? ??????, ? ??????????? ??????, ????????? ??? ????? ????? ???????? ?????? ? ??? ?????????, ?????, ??? ??? ?????? ????? ????? ????????. ???????? ??????? ? ???????? ????? ?????? ?????? ?? ?????. ? ???????????????? ????? ??????? ???.

???????, ???? ????????? ????????? ??????????? ?? ??????? ?????????????-??????????? ?? ????? ? ?????. ?? ??? ??? ????? ?? ???????? ? ????????????, ??????? ?????????? ????? ????? ?????? ??????????-??????. ?? ? ???????? ????????. ?????? ?? ??? ??????? ??????? ?? ??????, ???? ?? ????? ??????, ???? ????? ???? ?????? ?????? ? ????????? ?? ??????? ????. ????? ?????? ??????? ???????, ??????? ????????? ?? ????? ??????????? ? ????, ?? ????????????? ????: ? 2008-? ???????? ??? ???????? ??????????? ??????????? ???????? ??? ? ????????? ?????, ??????, ??? ? ??????? ? ??? ?????? ????? ?? ?????? ? ?????????? ?????. ??????, ???? ???? ?????? ?? ? ?????????????. ????????

??? ??? ???????????? ?? ????? ? ????? - ??? ?????? ?????? ???????? ??? ?????????? ?????????? ????????????? ?????, ??????? ??? ?? ???????? ???????? ?????? ???????. ??? ?????? ?? ????????? ???????? ???????? ????????, ???????, ?????????, ?????????????????, ???????, ? ?????????? ???????????, ???????????, ??? ??????????? ????? ?????? – ???????? ?????? ? ???????, ? ??????? ?? ????????? ?????????? ????????? ????????, ???? ???? ? ?????????? ? ?????????? ?? ??????????? ?????????. ???????, ????? ????, ???? ?????? ??????????, ?? ??? ?? ???? ? ?????, ??????????? ? ?????????????? ?? ????? ? ????? ?? ????? ?? ??????? ??????. ? ???? ?? ?????? ???? ????????????? ? ??????, ?? ? ??? ????? ????????????.

??????, ???? ???? ??????, ??????? ??????? ????????. ??? ??, ??? ????? ????? ????????????? ???????? ????????????????. ? ??????? ????? ????? ????? ?? ????? ???? ????????????? ?? ??? ??????, ? ??? ???????, ? ?? ? ?????????????? ?????????????. ??? ??? ??????? ????? ????, ???? ?? ????????? ?? ?????? ?????? ??? ?? ??? ?? ??????, ??????? ? ???????? ??????, ??? ?? ??????????. ? ??? ????????, ??? ?? ??? ????? ????? ? ?????? ? ?????? ????????? ??? ??????? ??????????, ?????? ?????? ???? ??? ?? ??????, ? ????????? ????? ???, ??? ?????????????

????? ???????, ??? ???????????????-?? ??? ????? ??? ????? ??-??????????, ? ??? ?????? ????? ???? ??????????? ? ????? ???????. ???????? ? ???? ????? ???? ????????????, ??????? ???????? ????????. IT ????????? ?????? ????????? ?????????? ?? ?? ??????, ? ???? ???????? ?? ????????? ?? ??????? ????????? ????? ?????????? ?????? ?????????? ??????? ????. ??? ??? ?????? ??? ?? ????????? ???? ?? ?? ?????????, ? ????? ?? ??????? ????????. ??????? ???????. «????????????» ???????????? ?????? ????? ???????? ????????? ??????, ??????? ?? ???-???? ???????? ????????, ? ????????? ??? ??????? ???????????? ? ?????????, ?? ?????? ????????, ??????? ??? ??????? ?? ???????? ? ??????? ?????, ?????????? ????? ?????. ???? ????, ??? ??????? ?? ??, ??? ???????? ? ???? ????????. ? ?????, ??? ?????? ??? ?????????, ? ??? ?? ?????? ???? ???????? ??????. ??? ?? ????? ???????.

??????? ?????? ?????????? ?? ??? ?? ???????: ????? ? «?????????????» ???????????? ? ?????? ?????? ?????????? ???? ??????? ??????, ?? ????? ?????????? ??????????? ????? ??? ????. ??????, ??????? ? ? ???? ????????? (??????, ? ?????? ????????? – ?? ?? ?????), ??????? ?????? ???? ??? ?????????? MF, ? ??? ????? ? ??? ?????. ???? ????, ??? ??????? ? ????? COM, ??? ???????? ?????????? ? ????????? ???????? ????? IMFAsyncResponse... ? ????? ???????????, ??????? ??? ?? ?????, ????????????? ?? ??? ?????? ???????????. ? ?????????? ??????? ? ?????? ????????? ????? ????????, ????? ???????? ????? ? ?????? ?????? ???????????? ??????, ???? ?? ?????? ??? ??????, ????? ??? ????? ?? ? ????????????, ? ? ??????????

????? ?? ?????? ???? ?????? ??? ? ????? 97-?? – ?????? 98-?? ????. ? ???????? ???????? ?? ???????? ? ????? ? ??????. ?????????? ????? ?????? ???? MFC ? ????? ???????? ????, ??? ??? ? ?????? ??? ?? ????:

«? ??? ?? ????????, ???? ??? ????? ???????? ??? ????? ????????? ? listbox?»

«? ?? ???? ?????????? ??? ????? ????????? ? listbox.»

«? ???? ???????? ????????»

«? ???????? ? ?????????? ? ??????? ?????? ??? ???????????.»

«? ???? ?? ???????????»

«????? ? ?????? ? ???, ? ?????? ??? ??? ??? ?? ????????. ? ????? ?????? ??? ????? ????????? listbox ? ?????-?? ??????????...»

«? ???? ?? ??? ????? ???????????»

«????? ?????? ??????? ? ???, ????????? ??? ?? ??? ?????. ?????? – ????????, ??? ????? ? ???????, ? ????????????, ??????? ????? ??????? – ???.»

??????? ?? ????? ???? ????? ???????? ?????, ??? ????? ???????? ??????????? ??????? ?? ???????? ?????? ? ??????????? ?????????-??????? ???????? ?? ????. ???????, ? ?????, ????????? ????? ?? ?????????? ???????? – ??? ?????? ??????? ????? listbox ????? ?? ????? ???? ????? ???????, ??????? ? ?????? ????? ?????? ?????? ???? ?? ????????? ?????????, ? ?? ? ???????? ????????? ?? ???????? ???????? ?????-???? ? ?????? ??????? (????????? ???-??? ??? ? ?????? ??????? ??-?? ????, ??? ???? ?????? ?? ??? ? ??????), ?? ? ???? ?? ???? ??? ?????????. ??? ?? ???? ???????? ???? ?? ????????? ??? ????????????. ??? MFC – ??? ?????! ? ?????, ? ?????? ?????, ??? ???? ?? ????, ? ??????? ??? ???? ????????. ?? ??? – ?????????? ??????????? ? ????, ??? ??????????????? ??? ??????? ????? ??? ??? ?? ????????? ????????????, ? ?????? ??????.

? ???????, ??? ??, ??? ? ??? ??????. ??? ??? ????? ??????? ????????????? ? ????? ? ?????????. ??, ???? ??????????? ???????? ????? MS ??? ????. ???? ? ?????????? ???? ????????? ???????????. Sun ???? ???? ?? ?????, IBM ???? ????? ?????? ??? ?????????? ???????? ? ????? ? ?????, Intel ? Motorola ???????? ???? ??? ?? ???????, ?????? ??? ????? ????? ??????? ? ??????... ???? ????????? ?????????? ???????????. ?? ???? ??????????? ?????, ? ??? ???????????, ?????????? ??????? ????????????? ??? ????. ??? ? ??????? ??????? ???? ????????. ??, ? ?????-?? ? ???.

? ?????, ?????? ???????? ??? ??? ???????, ? ????????? ?? ??????? ????????????? ???? ????????? – ?????? ????????.

?????????? ??????

?? ????, ????? ?????????? ?????? ? ????????????? ? ??????, ?? ???? ????????, ??? ? ????? ???????????? – ??? «????? ??????????» ? ??????? ?????????. ? ?????????? ? ???? ??????????????. ???? ? ?????? ?? ???????? ? ????? ??? ????????????, ? ??????????????? ?????, ?? ???????? ?? ????? ? ????? ???????, ?? ???? ??????? ??? ? ???????????? ????? ????????, ??? ? ? ??????????? ???????????? ???? ??????????? ????. ???? ???? ?? ????????????? ???????????? ? ????????? ?? ???????. ? ??????? – ??? ???? ?? ????????? ??????????? ??????????? ???????.

???? ? ????????????, ???????? ???????????? ? ???????, ??? ??? ????????. ??? ?????? ?? ?????. ??? ??????? ???? ? 9 ?? 5 (? ?? ? ? 9 ?? 9). ??? ?????????? ???????????. ??? ????????????, ??????, team meetings, ?? ??????? ??? ?????????, ??? ??? ??????? ? ????? ???????? ??????, ???????, ?????, ?? ??????? ?? ?????????. ?????? ?????? ??? ??? ???????? ? ?????????????, ??? ???? ???? ?? ? ??? ? ??????, ?? ??????? ???????????. ??? ?? ?????? ? ???, ??? ??? ??? ????? ????????? ???? ???? ???? ????? ?????? ???????? ??????????? ??? ????????. ??????, ???????? ???????? ?????, ?? ????? ????????? ?????? ??? ??????????. ??? ????? ?? ??????? ??? ????, ?? ???????????? ?????? ???????? ? ???? ????? ??? ?????? ????????. ? ????????, ????? ??, ??? ???? ? ???????, ?? ??? ????? ???-?? ???-?? ? ??????? ????... ??? ?? ??? ???????... ????????...

? ?????, ?? ??? ??? ?????. ????????? ?? ??? ????? ?????????? ?????? ??? ???????? ?????, ?????????? ?? ?????? ???????. ? ??? ???? ???, ???? ?? ? ? ????????. ????????? ?? ???????????? ??????????? ??? ?????? ? ???????? ? ??????. ??? ???? ?? ??? ????????? ?????, ??????? ????? ??????? ? ???????????. ??? ???, ???? ?? ??????, ? ?? ?????????? ?????? ????? ? ???????. ? ????? ??????, ?????? ????????????? ???????? ? ???????? ?????? ?????? ? ???????. ?????? ???? ????????, ??? ???????????????? – ??? ?? ?????????? ????, ? ????? ??????????? (??? ?????? ??????? ?????????? ?????????????) ? ???? ????????? ?????? ?? ????? ??? ? ????? ??????. ? «????????? ???????» ????? ? ????, ??? ? ?????? ?????? ????????, ?? ??? ????? ?????? ?????? ? ?????? ??????.

?? ???????? ????????? ????? ????????????????? ? ???? ???????, ??? ?????? ?? ??? ??? ?????????. ?? ??????? ???? ???? ?? ??????????? ??????????? ???????? ??????? ??????????-??????????? ??? ????????? ??? ???????, ??? ?????? ?? ??????. ?, ???????, ?? ????????, ?? ????? ???-?? ???????????? ???? ???????????-?????? ??? ?????????? ?????, ? ????? ?????????? ?? ?? ???????????? ??????????????... ? ?????, ???????????? ????????? ??????? ??? ????? ? ?????? ????????.

???? ?? ? ?????: ?????????? ????? ??????? ? ????????, ????? ????? ???? ? ???????? ????????. ??? ??????????, ? ??? ? ????????-??? ???? ????????, ??, ????? ??????????. ????? ??????? ?????? ???? ? ????? ? ???????: «??????, ??????? ???? ?????? ?????. ???? ???? ??????????!»

? ?????, ? ?? ??????? ??? ?????????? ?? ????????????????. ?????? ????????? ???? ?????? ??????????? ? ????????? ?? ????? ?????? ????????? ???????? ???? ?????????. ? ???? ?? ??????????? ?????????? ?? ?????? ?????????, ?? ?????? ????? ????? ??? ?????? ?? ??-??, «??? ? ????. ? ???? ??????? ?????? ?? ?????.»