“Empirik nəticələr yalnız nəşr üçündür, əsərin əsl motivləri estetikdir”. Michael Scott ilə əla müsahibə

“Empirik nəticələr yalnız nəşr üçündür, əsərin əsl motivləri estetikdir”. Michael Scott ilə əla müsahibə Michael Scott - 34 ildir Rochester Universitetində Kompüter Elmləri professoru kimi və evində Wisconsin-Madison Universitetində beş il dekan olub. O, paralel və paylanmış proqramlaşdırma və dil dizaynı haqqında tədqiqatlar aparır və tələbələrə öyrədir.

Dünya Michaelı dərslikdən tanıyır "Proqramlaşdırma dilinin praqmatikası", nə iş "Paylaşılan yaddaş multiprosessorlarında miqyaslı sinxronizasiya üçün alqoritmlər" paylanmış hesablama sahəsində ən məşhurlardan biri kimi Dijkstra Mükafatını aldı. Siz onu bu alqoritmin müəllifi kimi də tanıya bilərsiniz Michael-Scott.

Doug Lee ilə birlikdə o, Java kitabxanalarını gücləndirən bloklanmayan alqoritmləri və sinxron növbələri inkişaf etdirdi. İcra "ikili məlumat strukturları" JavaSE 6-da performansı 10 dəfə yaxşılaşdırdı ThreadPoolExecutor.

İçindekiler:

  • Erkən karyera, Rochester Universiteti. Project Charlotte, Lynx dili;
  • IEEE Scalable Coherent Interface, MCS kilidləmə;
  • Daim dəyişən dünyada sağ qalma;
  • Tələbələr axmaq olur? Qlobal tendensiyalar, beynəlmiləlləşmə;
  • Tələbələrlə səmərəli iş;
  • Yeni kursların və kitabların hazırlanması ilə necə ayaqlaşmaq olar;
  • Biznes və akademiya arasında əlaqələr;
  • İdeyaların praktiki həyata keçirilməsi. MCS, MS, CLH, JSR 166, Doug Lee və daha çoxu ilə işləyir;
  • Əməliyyat yaddaşı;
  • Yeni memarlıqlar. Tranzaksiya yaddaşının qələbəsi yaxındır;
  • Qeyri-uçucu yaddaş, Optane DIMM, ultra sürətli cihazlar;
  • Növbəti böyük tendensiya. İkili məlumat strukturları. Hidra.

Müsahibəni aparır:

Vitali Aksenov — hazırda IST Avstriyada postdoktur və ITMO Universitetində Kompüter Texnologiyaları Departamentinin üzvüdür. Rəqabətli məlumat strukturlarının nəzəriyyəsi və təcrübəsi sahəsində tədqiqatlar aparır. IST-də işləməzdən əvvəl professor Peter Kuznetsovun rəhbərliyi altında Paris Didro Universitetində və ITMO Universitetində fəlsəfə doktoru dərəcəsi almışdır.

Aleksey Fedorov - Tərtibatçılar üçün konfranslar təşkil edən Rusiya şirkəti JUG Ru Group-da prodüser. Aleksey 50-dən çox konfransın hazırlanmasında iştirak edib və onun tərcümeyi-halında Oracle-da (JCK, Java Platform Group) inkişaf mühəndisi vəzifəsindən tutmuş, Odnoklassniki-də tərtibatçı vəzifəsinə qədər hər şey var.

Vladimir Sitnikov - Netcracker-də mühəndis. Telekommunikasiya operatorları tərəfindən şəbəkə və şəbəkə avadanlığının idarəetmə proseslərinin avtomatlaşdırılması üçün istifadə olunan proqram təminatı olan NetCracker ƏS-nin performansı və miqyası üzrə on illik iş. Java və Oracle Database performans problemləri ilə maraqlanır. Rəsmi PostgreSQL JDBC sürücüsündə ondan çox performans təkmilləşdirməsinin müəllifidir.

Erkən karyera, Rochester Universiteti. Charlotte layihəsi, Lynx dili.

Alex: Başlamaq üçün sizə demək istədim ki, Rusiyada biz hamımız Kompüter Elmlərini, Məlumat Elmlərini və alqoritmləri çox sevirik. Tamamilə ədəbsizdir. Hər şeyi oxumuşuq kitab Cormen, Leiserson və Rivest. Ona görə də qarşıdan gələn konfrans, məktəb və bu müsahibənin özü çox populyar olmalıdır. Bu müsahibə üçün tələbələrdən, proqramçılardan və icma üzvlərindən çoxlu suallar aldıq, ona görə də bu fürsətə görə çox minnətdarıq. Kompüter Elmləri ABŞ-da eyni sevgini qazanırmı?

Michael: Bizim sahəmiz o qədər rəngarəngdir, o qədər çox istiqamətə malikdir və cəmiyyətə o qədər müxtəlif təsir göstərir ki, sizə qəti cavab vermək mənim üçün çətindir. Amma fakt budur ki, bu, son 30 ildə biznesdə, sənayedə, incəsənətdə və ümumilikdə cəmiyyətdə çox böyük dəyişikliklərə səbəb olub.

Виталий: Gəlin uzaq bir şeylə başlayaq. Bir çox universitetlərdə müəyyən bir sahədə ixtisaslaşma kimi bir şey var. Carnegie Mellon Universiteti üçün bu paralel hesablama, MİT üçün kriptoqrafiya, robotlar və çoxillikdir. Rochester Universitetində belə bir ixtisas varmı?

Michael: Düzünü desəm, CMU və MİT bütün sahələr üzrə ixtisaslaşmışdır. Şöbəmiz həmişə süni intellektə ən çox diqqət yetirib. Bizdə çalışan insanların yarısı süni intellekt və ya insan-kompüter qarşılıqlı əlaqəsi ilə məşğuldur - bu pay digər şöbələrlə müqayisədə daha yüksəkdir və həmişə belə olub. Amma universitetdə oxuyanda süni intellektlə bağlı heç bir kursum yox idi və heç vaxt bu sahədə işləməmişəm. Deməli, mənim departamentim heç bir əlaqəm olmayan problem üzrə ixtisaslaşmışdır. Təsəlli odur ki, şöbəmiz üçün ikinci ən vacib problem paralel və çoxilli proqramlaşdırma, yəni mənim ixtisasımdır.

Виталий: Siz Kompüter Elmində işləməyə çox yivli proqramlaşdırma sahəsi yenicə yaranarkən başlamışsınız. Nəşrlərinizin siyahısı göstərir ki, sizin ilk əsərləriniz kifayət qədər geniş məsələlərlə məşğul olub: çox yivli sistemlərdə yaddaşın idarə edilməsi, paylanmış fayl sistemləri, əməliyyat sistemləri. Niyə belə çox yönlülük? Tədqiqat cəmiyyətində öz yerinizi tapmağa çalışmısınız?

Michael: Tələbə kimi iştirak etmişəm Charlotte layihəsi ilk paylanmış əməliyyat sistemlərindən birinin hazırlandığı Viskonsin Universitetində. Orada Rafael Finkel ilə birlikdə işlədim (Rafael Finkel) və Marvin Solomon (Marvin Solomon). Dissertasiyam paylanmış sistemlər üçün sistem proqram təminatı üçün dilin işlənib hazırlanmasına həsr olunmuşdu – indi hamı bunu unudub, Allaha şükür. Mən Lynx proqramlaşdırma dilini yaratdım, bu dilin məqsədi sərbəst şəkildə birləşdirilən paylanmış əməliyyat sistemi üçün serverlərin yaradılmasını asanlaşdırmaq idi. O vaxtlar əsasən əməliyyat sistemləri ilə məşğul olduğum üçün karyeramın əsasən onlarla bağlı olacağını güman edirdim. Lakin Rochester çox kiçik bir universitet idi və bu səbəbdən oradakı müxtəlif qruplar bir-biri ilə çox sıx əlaqədə idilər. Orada mənim danışa biləcəyim onlarla başqa əməliyyat sistemi adamı yox idi, ona görə də bütün əlaqələrim tamamilə fərqli sahələrdə işləyən insanlarla idi. Çox zövq aldım, hərtərəfli olmaq mənim üçün böyük üstünlükdür. Xüsusilə çox yivli məlumat strukturları və sinxronizasiya alqoritmləri haqqında danışsaq, onda mən tamamilə təsadüfən onların üzərində işləməyə başladım.

IEEE Scalable Coherent Interface, MCS kilidi.

Виталий: Bu haqda mənə bir az ətraflı məlumat verə bilərsinizmi?

Michael: Bu, hər kəsə danışmaqdan yorulmadığım gülməli bir hekayədir. Bu bir konfransda baş verdi ASPLOS Bostonda - bu, 80-ci illərin sonu və ya 90-cı illərin əvvəllərində idi. John Mellor-Crummey (John Mellor-Crummey), fakültəmizin məzunu. Mən onu tanıyırdım, amma əvvəllər birgə araşdırma aparmamışdıq. Meri Vernon (Meri VernonViskonsin ştatından olan ) Viskonsin ştatında inkişaf etdirdikləri çoxprosessorlu sistem haqqında danışdı: Wisconsin Multicube. Bu Multicube-da Q on Sync Bit adlı aparat səviyyəsində sinxronizasiya mexanizmi var idi və sonradan onun adı dəyişdirilərək Q on Lock Bit adlandırıldı, çünki o, Colby pendirinə bənzəyirdi, bu da söz oyunu idi. Çox iş parçacığı mexanizmləri ilə maraqlanırsınızsa, yəqin ki, Colby-nin nəhayət IEEE Scalable Coherent Interface standartı üçün sinxronizasiya mühərrikinə çevrildiyini bilirsiniz. Bu, hardware səviyyəsində bir keşdən digərinə göstəricilər yaradan kilidləmə mexanizmi idi ki, hər bir kilid sahibi kimin növbəsi olduğunu bilsin. Con və mən bunu eşidəndə bir-birimizə baxıb dedik: niyə bunu aparat səviyyəsində edirik? Müqayisə və dəyişdirmə ilə eyni şeyi əldə etmək olmazmı? Sinifdə yatan dəftərlərdən birini götürüb üstünə cızırdıq MCS bloklanması, Məryəm isə hesabatını davam etdirdi. Sonradan biz bunu həyata keçirdik, sınaqdan keçirdik, ideya uğurlu oldu və məqaləni dərc etdik. O vaxt mənim üçün bu mövzu sadəcə əyləncəli bir yayındırma kimi görünürdü, bundan sonra əməliyyat sistemlərinə qayıtmağı planlaşdırdım. Ancaq sonra eyni xətlər boyunca başqa bir problem ortaya çıxdı və nəticədə sinxronizasiya, çox iş parçacığı və məlumat strukturları mənim ixtisasım oldu. Gördüyünüz kimi, bütün bunlar təsadüfən baş verdi.

Виталий: MCS-in bloklanması ilə çoxdan tanış olmuşam, amma indiyə qədər bunun sizin işiniz olduğunu bilmirdim və soyadlarınızın qısaldılması olduğunu başa düşmədim.

Daim dəyişən dünyada necə yaşamaq olar?

Alex: Əlaqədar mövzu ilə bağlı sualım var. 30-40 il əvvəl müxtəlif ixtisaslarda daha çox sərbəstlik var idi. Əgər siz multithreading və ya paylanmış sistemlərdə karyeraya başlamaq istəyirsinizsə, xoş gəlmisiniz, əgər əməliyyat sistemlərinə daxil olmaq istəyirsinizsə, problem yoxdur. Hər bir sahədə açıq suallar çox idi və ekspertlər az idi. İndi dar ixtisaslar yaranıb: ümumiyyətlə əməliyyat sistemləri üzrə sadəcə ekspertlər yoxdur, ayrı-ayrı sistemlər üzrə mütəxəssislər var. Çox iş parçacığı və paylanmış sistemlərlə eynidir. Ancaq problem ondadır ki, həyatımız sonsuz deyil, hər kəs tədqiqata yalnız bir neçə onilliklər həsr edə bilər. Bu yeni dünyada necə yaşamaq olar?

Michael: Biz bu baxımdan xüsusi deyilik, eyni şey bir dəfə başqa sahələrdə də olmuşdu. Mənim bəxtim gətirdi ki, Kompüter Elmləri sahəsində “yeniyetmə” illərində işləməyə başladım. Bəzi təməllər artıq qoyulmuşdu, amma hər şey hələ çox yetişməmişdi. Bu fürsət tez-tez yaranmır. Elektrik mühəndisliyi çox uzun müddətdir, fizika daha uzun müddətdir, riyaziyyat demək olar ki, zamanın əvvəlindən bəri mövcuddur. Amma bu o demək deyil ki, daha heç kim riyaziyyatda maraqlı kəşflər etmir. Hələ çox açıq problemlər var, lakin eyni zamanda daha çox şey öyrənilməlidir. Siz qeyd etməkdə haqlısınız ki, indi əvvəlkindən daha çox ixtisaslar var, lakin bu, yalnız insan fəaliyyətinin əksər sahələri ilə eyni vəziyyətdə olduğumuzu göstərir.

Alex: Məni burada məsələnin daha praktiki tərəfi maraqlandırır. Mənim riyaziyyat biliklərim var və təhsil aldığım müddətdə tez-tez konfranslarda iştirak edir, müxtəlif elmi mövzular üzərində işləyirdim. Mən kəşf etdim ki, auditoriyada heç kim mənim reportajlarımı başa düşmür və eyni şəkildə digər insanların hesabatları da yalnız özləri üçün başa düşüləndir. Yüksək səviyyəli mövzularda belə deyil, amma nəyəsə baş vurmağa başlayan kimi tamaşaçılar sizinlə ayaqlaşa bilmir. Bununla necə məşğul olursunuz?

Michael: Həmişə uğurlu olmur. Bu yaxınlarda texniki detallara çox dərindən getdiyim bir hesabat hazırladım. Söhbət irəlilədikcə məlum oldu ki, tamaşaçıların çoxu məni başa düşmür, ona görə də vəziyyətə tez uyğunlaşmalı oldum. Slaydları dəyişdirmək mümkün olmadı, buna görə də çox yaxşı alınmadı - buna görə də, ümumiyyətlə, slaydlardan istifadə etməməyə çalışıram. Ümumiyyətlə, mənim məsləhətim odur ki, auditoriyanızı nəzərə alın. Siz kiminlə danışdığınızı, onların bilik səviyyəsini və işinizi qiymətləndirmək üçün nə eşitməli olduqlarını bilməlisiniz.

Виталий: Bu mühazirənin nədən bəhs etdiyinə dair bizə bir ipucu verə bilərsinizmi?

Michael: Düzünü desəm, sözügedən şəxslərin anonim qalması üçün bu mövzunu geniş açmamağa üstünlük verərdim. Məsələ ondadır ki, biz çox vaxt üzərində işlədiyimiz problemin incəliklərinə həddən artıq dərinləşirik, ona görə də söhbətin əvvəlində problemin nə üçün maraqlı və vacib olduğunu və onun problemlə bağlı problemlərlə necə əlaqəli olduğunu izah etmək bizim üçün çətinləşir. tamaşaçı artıq bilir. Müşahidələrimə görə, tələbələr bu bacarığı öyrənməkdə ən çox çətinlik çəkirlər. Bu da son hesabatımın zəif nöqtəsi idi. Düzgün strukturlaşdırılmış hesabat əvvəldən auditoriya ilə əlaqə tapmalı, onlara problemin dəqiq nə olduğunu və artıq ona məlum olan mövzularla necə əlaqəli olduğunu izah etməlidir. Bu girişin nə dərəcədə texniki olması tamaşaçılardan asılıdır. Əgər tamamilə rəngarəngdirsə, o zaman hesabat çoxmərhələli ola bilər. Giriş hər kəs üçün əlçatan olmalıdır və sonda əsər sizinlə ayaqlaşa bilməyəcək, lakin sahənizlə nisbətən tanış olan insanlar bunu başa düşə biləcəklər.

Tələbələr axmaq olur? Qlobal tendensiyalar, beynəlmiləlləşmə.

Alex: Siz bir neçə onilliklərdir tələbələri müşahidə edirsiniz. Tələbələr on ildən onilliyə və ya ildən ilə daha axmaq və ya ağıllı olurlar? Rusiyada professorlar tələbələrin ildən-ilə axmaqlaşdıqlarından daim şikayətlənirlər və bununla bağlı nə etmək lazım olduğu aydın deyil.

Michael: Doğrudan da biz qocalardan çoxlu neqativlər eşidə bilərsiniz. Şüuraltı olaraq biz tələbələrin artıq sahib olduğumuz 30 illik təcrübəni mənimsəmələrini gözləməyə meylliyik. Əgər mən 1985-ci ildəkindən daha dərin anlayışa malikəmsə, niyə tələbələrdə yoxdur? Yəqin ki, onların 20 yaşı olduğuna görə, siz necə düşünürsünüz? Düşünürəm ki, son onilliklərdə ən əhəmiyyətli dəyişikliklər demoqrafik tərkibdə olub: Kanadalılar istisna olmaqla, indi bizdə xeyli sayda beynəlxalq tələbələr var. Əvvəllər çoxlu kanadalı var idi, çünki biz Kanada sərhədinə çox yaxınıq və oradan gələn tələbələr həftə sonları evlərinə gedə bilərlər. Amma indi Kanadada çoxlu yaxşı universitetlər var və kanadalılar burada təhsil almağa üstünlük verirlər; onların xeyli az hissəsi ABŞ-a gəlir.

Alex: Sizcə, bu, yerli tendensiyadır, yoxsa qlobal?

Michael: Kim olduğunu dəqiq xatırlamıram, amma biri dedi ki, dünya düzdür. Sahəmiz daha da beynəlmiləlləşib. ACM Konfransları Əvvəllər onlar eksklüziv olaraq ABŞ daxilində keçirilirdi, sonra 4 ildə bir dəfə başqa ölkələrdə keçirmək qərarına gəldilər, indi isə bütün dünyada keçirilir. Bu dəyişikliklər daha çox təsir etdi IEEE, çünki həmişə ACM-dən daha çox beynəlxalq təşkilat olmuşdur. Çindən, Hindistandan, Rusiyadan, Almaniyadan və bir çox başqa ölkələrdən proqram kafedraları var, çünki indi hər yerdə çox şey gedir.

Alex: Bəs yəqin ki, belə beynəlmiləlləşmənin bəzi mənfi cəhətləri var?

Michael: Deyərdim ki, bütün mənfi cəhətlər texnologiyaya deyil, siyasətə aiddir. Bir zamanlar əsas problem ABŞ-ın dünyanın müxtəlif ölkələrindən ən ağıllı və istedadlı insanları oğurlaması idi. İndi də əsas problem müxtəlif ölkələr arasında viza və immiqrasiya ətrafında siyasi oyunlardır.

Alex: Yəni maneələr və buna bənzər şeylər. Aydındır.

Vladimir: Şəxsən mənə maraqlıdır ki, siz tələbələrə yeni fənni tədris edərkən hansı yanaşmadan yanasınız. Müxtəlif variantlar var: ilk növbədə onları yeni bir şey sınamağa ruhlandırmaq üçün cəhd edə bilərsiniz və ya müəyyən bir texnologiyanın necə işlədiyinin təfərrüatlarına daha çox diqqət yetirə bilərsiniz. Nəyə üstünlük verirsiniz?

Tələbələrlə səmərəli iş

Alex: Birinci və ikinci arasında lənətə gəlmiş tarazlığı necə tapmaq olar?

Michael: Problem ondadır ki, dərslər həmişə istədiyim kimi getmir. Mən adətən şagirdlərə oxu materialını qabaqcadan verirəm ki, onlar onu dərindən öyrənsinlər, bacardıqları qədər başa düşsünlər və başa düşə bilmədikləri hissələr haqqında suallar formalaşdırsınlar. Sonra sinifdə diqqətinizi ən çətin anlara yönəldə və onları birlikdə araşdıra bilərsiniz. Dərsləri ən çox belə öyrətməyi xoşlayıram. Amma indi tələbələrin üzərinə düşən yükü nəzərə alsaq, mən həmişə onların əvvəlcədən hazırlaşdıqlarına əmin ola bilmirəm. Nəticədə, materialın ümumi təkrarlanmasına istədiyinizdən daha çox vaxt ayırmalısınız. Buna baxmayaraq, dərslərimizi interaktiv keçirməyə çalışıram. Əks halda, tələbələrin evdə baxa biləcəyi bir dəfə video yazmaq daha asandır. Canlı dərslərin məqsədi insanların qarşılıqlı əlaqəsidir. Sinifdə diaqramın lövhədə təsvir etmək üçün çox mürəkkəb olduğu bəzi hallar istisna olmaqla, slaydlardan çox təbaşir və lövhədən istifadə etməyi üstün tuturam. Bunun sayəsində mən sərt dərs planına sadiq qalmağa məcbur deyiləm. Materialı verməyimdə ciddi ardıcıllıq olmadığı üçün bu, aldığım suallardan asılı olaraq onu auditoriyaya uyğunlaşdırmağa imkan verir. Ümumiyyətlə, dərsləri mümkün qədər interaktiv keçirməyə çalışıram ki, təqdim etdiyim material mənə verilən suallardan asılı olsun.

Vladimir: Əladır. Təcrübəmdə dinləyiciləri sual verməyə məcbur etmək olduqca çətindir. Hər hansı bir sual vermək üçün əvvəlcədən soruşsanız da, nə qədər axmaq və ya ağıllı olursa olsun, yenə də susurlar. Bununla necə məşğul olursunuz?

Michael: Güləcəksən, amma kifayət qədər sussan, gec-tez hamı narahat olacaq və kimsə sual verəcək. Yaxud insanların indicə deyilənləri başa düşüb-düşmədiyini müəyyən etmək üçün bəli və ya yox cavabı ilə sadə texniki sual verə bilərsiniz. Məsələn, yuxarıdakı nümunədə məlumat yarışı varmı? Kim belə düşünür? Kim düşünmür ki? Kim ümumiyyətlə heç nə başa düşmür, çünki cəmi əllərin yalnız yarısı yuxarı qalxıb?

Виталий: Əgər səhv cavab vermisinizsə, sinifdən qovulacaqsınız :)

Michael: Heç nə cavab verməmisinizsə, sual verməlisiniz. İndicə verdiyim suala cavab vermək üçün tələbənin dəqiq nəyi bilməsi lazım olduğunu başa düşməliyəm. Onlara kömək etmələrimə ehtiyacım var. Mən onlara uyğunlaşmağa hazıram ki, problemi başa düşsünlər. Amma onların beynində nə baş verdiyini bilməsəm, bunu edə bilmərəm. Əgər siz tələbələrə kifayət qədər uzun müddət dinclik vermirsinizsə, bəzən sonda onlar düzgün suallar verirlər, yəni mənə tələbələrin başlarında nə baş verdiyini görməyə imkan verən suallar verirlər. 

Alex: Bu suallar bəzən əvvəllər düşünmədiyiniz ideyalara səbəb olurmu? Onlar gözlənilməzdir? Problemə yeni prizmadan baxmağa imkan verirlərmi?

Michael: Materialı təqdim etməyin yeni üsulunu açan suallar var. Tez-tez danışmağı planlaşdırmadığım maraqlı problemlərə səbəb olan suallar olur. Tələbələr tez-tez mənə deyirlər ki, bu baş verəndə mövzudan kənara çıxmağa meylli oluram. Və onların fikrincə, çox vaxt bu dərsin ən maraqlı hissəsidir. Çox nadir hallarda, bir neçə dəfə tələbələr tədqiqatda yeni istiqamətə sövq edən və məqaləyə çevrilən suallar verdilər. Bu, dərs zamanı deyil, tələbələrlə söhbətlərdə daha tez-tez baş verir, lakin bəzən dərs zamanı baş verirdi. 

Alex: Deməli, tələbələr sizə sual veriblər ki, o zaman bunun əsasında məqalə dərc etmək mümkün olub?

Michael: Bəli. 

Виталий: Tələbələrlə bu söhbətləri nə qədər tez-tez edirsiniz? Nə vaxt onlar dərs zamanı keçilənlərdən daha çox öyrənmək istəyirlər?

Michael: Aspirantlarımla - hər zaman. Onlardan 5-6-sı məndə var və biz onlarla hər zaman nəyisə müzakirə edirik. Sadəcə mənim dərslərimə gələn tələbələrlə bu cür söhbətlər çox da rast gəlinmir. Baxmayaraq ki, bunun tez-tez olmasını arzulayıram. Mən şübhələnirəm ki, onlar sadəcə olaraq iş saatlarında fakültəyə gəlməkdən qorxurlar. Hər semestr bəzi tələbələr bu psixoloji baryeri aşmağı bacarır və dərsdən sonra onlarla söhbət etmək həmişə çox maraqlıdır. Düzdür, bütün tələbələr belə cəsarətli olsaydılar, sadəcə vaxtım çatmazdı. Beləliklə, bəlkə də hər şey lazım olduğu kimi işləyir. 

Виталий: Tələbələrlə ünsiyyətə vaxt tapmağı necə bacarırsınız? Bildiyimə görə, ABŞ-da müəllimlərin çox işi var - qrantlara müraciət etmək və s. 

Michael: Düzünü desəm, tələbələrlə işləmək işimin ən çox zövq aldığım tərəfidir. Yəni bunun üçün kifayət qədər motivasiyam var. Ofisimdə keçirdiyim vaxtın çox hissəsi hər cür görüşlərə sərf olunur. İndi yaydır, ona görə də qrafikim daha az məşğul olur, amma dərs ili ərzində hər gün 9-dan 17-dək hər şeyi yığıram. Tədqiqat işləri, rəylər, qrantlar - bütün bunlar üçün yalnız axşamlar və həftə sonları var. 

Yeni kursların və kitabların hazırlanması ilə necə ayaqlaşmaq olar.

Alex: Uzun müddətdir ki, dərs dediyiniz hər hansı kursu hazırda tədris etməyə davam edirsiniz? Kompüter Elmlərinə giriş kimi bir şey.

Michael: Burada ağla gələn ilk şey proqramlaşdırma dilləri kursudur. 

Alex: Bu kursun bugünkü versiyası 10, 20, 30 il əvvəlkindən nə dərəcədə fərqlidir? Bəlkə də burada daha maraqlı olan konkret kursun təfərrüatları deyil, ümumi tendensiyalardır.

Michael: Proqramlaşdırma dilləri üzrə kursum onu ​​yaratdığım zaman bir qədər qeyri-adi idi. Mən onu 1980-ci illərin sonlarında həmkarım Doug Baldwin-i əvəz edərək oxumağa başladım (Doug Baldwin). Kursun mövzusu yalnız mənim ixtisasımla tangensial əlaqəli idi, lakin o gedəndə kursu öyrətmək üçün ən yaxşı namizəd mən idim. O vaxt mövcud olan dərsliklərin heç birini bəyənmədiyim üçün bu kursun dərsliyini özüm yazdırdım. (Redaktordan qeyd: söhbət kitabdan gedir "Proqramlaşdırma dilinin praqmatikası") Hazırda dünyanın 200-dən çox universitetində istifadə olunur. Mənim yanaşmam qeyri-adidir ki, o, dilin dizaynı və tətbiqi problemlərini qəsdən qarışdırır və bütün mümkün sahələrdə bu aspektlər arasında qarşılıqlı əlaqəyə böyük diqqət yetirir. Əsas yanaşma, bir çox əsas anlayışlar kimi dəyişməz qaldı: abstraksiyalar, ad məkanları, modulluq, növlər. Lakin bu anlayışların nümayiş olunduğu dillər toplusu tamamilə dəyişdi. Kurs ilk yarananda Paskalda çoxlu nümunələr var idi, amma bu gün tələbələrimin çoxu bu dil haqqında eşitməyiblər. Ancaq Swift, Go, Rust dillərini bilirlər, buna görə də bu gün istifadə olunan dillər haqqında danışmalıyam. Həmçinin, tələbələr indi skript dillərini yaxşı bilirlər, lakin mən bu kursu öyrətməyə başlayanda hər şey tərtib edilmiş dillərlə bağlı idi. İndi bizə Python, Ruby və hətta Perl haqqında çoxlu materiallar lazımdır, çünki bu günlərdə kod belə yazılır və bu dillərdə, o cümlədən dil dizaynı sahəsində çoxlu maraqlı hadisələr baş verir. 

Виталий: Onda növbəti sualım əvvəlki sualla bağlı olacaq. Bu sahədə necə qalmaq olar? Şübhə edirəm ki, belə bir kursu yeniləmək çox iş tələb edir - yeni dilləri başa düşmək, əsas fikirləri başa düşmək lazımdır. Bunu necə edirsiniz?

Michael: Mən həmişə 100% uğur qazandığımla öyünə bilmərəm. Amma çox vaxt mən sadəcə hər kəsin etdiklərini edirəm - interneti oxuyuram. Rust-u başa düşmək istəyirsinizsə, Google-a daxil oluram, Mozilla səhifəsinə keçin və orada yerləşdirilən təlimatı oxuyuram. Bu, kommersiya inkişafında baş verən şeylərin bir hissəsidir. Elmdən danışırıqsa, o zaman əsas konfranslarda məruzələri izləmək lazımdır. 

Biznes və akademiya arasında əlaqə

Виталий: Gəlin bizneslə elmi araşdırmalar arasındakı əlaqədən danışaq. Əsərlər siyahısında keş koherensiyası ilə bağlı bir neçə məqalə tapdım. Başa düşürəm ki, keş ardıcıllığı alqoritmləri dərc olunarkən qeyri-sabit idi? Və ya kifayət qədər geniş yayılmamışdır. Fikirləriniz praktikada nə dərəcədə ümumi idi?

Michael: Hansı nəşrlərdən danışdığınızdan tam əmin deyiləm. Mən tələbələrim Bill Boloski ilə kifayət qədər iş görmüşəm (Vilyam Boloski) və Leonidas Kontotanassis (Leonidas Kontothanassis) 1990-cı illərin əvvəllərində Neumann maşınlarının yaddaşının idarə edilməsinə dair. O dövrdə biznesdə çoxprosessorlu sistemin düzgün şəkildə necə qurulacağını hələ başa düşmürdülər: hardware səviyyəsində uzaq yaddaşa daxil olmaq üçün dəstək yaratmağa dəyərmi, yaddaşı paylamağa dəyərmi, keşi buradan yükləmək mümkündürmü? uzaq yaddaş, yoxsa əməliyyat otağında səhifələri köçürmək lazımdır? sistemi. Bill və Leonidas bu sahədə çalışdılar və uzaqdan keş yükləmədən yanaşmaları araşdırdılar. Bu, bilavasitə keş koherensiyası ilə bağlı deyildi, lakin o, hələ də NUMA yaddaş idarəçiliyi üzərində işləyirdi və sonradan müasir əməliyyat sistemlərində səhifə yerləşdirməyə müasir yanaşmalar bundan irəli gəldi. Bütövlükdə, Bill və Leonidas bu sahədə ən təsirli olmasalar da, mühüm işlər gördülər - o vaxt eyni işin üzərində işləyən bir çox başqa insanlar var idi. Daha sonra hardware əməliyyat yaddaşı kontekstində keş koherensiyası ilə bağlı mövzu üzərində işlədim. Bu problem üzərində işlədiyim qrup bir neçə patent aldı. Onların arxasında kifayət qədər maraqlı ideyalar dayanır, lakin onların praktikada həyata keçiriləcəyini düşünmürəm. Bu və ya digər şəkildə onların gəlirliliyini qiymətləndirmək mənim üçün çətindir. 

Alex: Bu baxımdan daha şəxsi sual: ideyalarınızın həyata keçirilməsi sizin üçün nə dərəcədə vacibdir? Yoxsa bu haqda düşünmürsən?

Michael: Fakültəyə qoşulmaq istəyən digər insanlar, abituriyentlər və ya namizədlərlə müsahibə zamanı bu sualı verməyi sevirəm. Məncə bu sualın düzgün cavabı yoxdur. Gözəl işlərlə məşğul olan insanların çox fərqli motivasiyaları ola bilər. Problemlər məni cəlb edir, çünki mən onları praktiki faydalarına görə deyil, şəxsən maraqlı hesab edirəm. Ancaq digər tərəfdən, maraqlı bir şey hələ də tətbiq tapdıqda, çox xoşuma gəlir. Beləliklə, burada asan deyil. Ancaq işimin əvvəlində məni hələ də dünyada son istifadə ideyası deyil, ideyanın harmoniyası və onu araşdırmaq və ondan nə gəldiyini görmək istəyi idarə edir. Sonda praktiki nəticələr verirsə, əladır. 

Alex: Təhsilinizə və təcrübənizə görə siz başqalarının fikirlərinin dəyərini çoxlarından daha yaxşı mühakimə edə bilirsiniz. Onları müqayisə edə və hansının daha yaxşı işlədiyini müəyyən edə bilərsiniz. Əminəm ki, Intel kimi böyük istehsalçılar tərəfindən hazırda praktikada istifadə olunan şeylər haqqında fikrin var. Sizcə, bu şirkətlərin tutduğu kurs nə dərəcədə düzgündür?

Michael: Təcrübə həmişə kommersiya baxımından uğurlu ola biləcək, yəni mənfəət yarada biləcək şeylər ətrafında fırlanır və bu barədə başqasından soruşsanız yaxşı olar. İşim əsasən nəşrlərlə nəticələnir və əməliyyat sistemləri sahəsində onlar performans göstəriciləri əsasında qiymətləndirilir: sürət, enerji sərfiyyatı, kod ölçüsü. Amma həmişə mənə elə gəlirdi ki, bu təcrübi nəticələr məqalələrə yalnız ona görə əlavə olunur ki, onlar dərc olunsun və insanların əsl iş motivləri estetikdir. Tədqiqatçılar həlləri bədii nöqteyi-nəzərdən qiymətləndirir, ideyaların nə qədər zərif olduğuna əhəmiyyət verirlər və mövcud yanaşmalardan daha yaxşı bir şey yaratmağa çalışırlar. Tədqiqatçıları şəxsi, subyektiv, estetik motivlər idarə edir. Ancaq bu barədə məqalənin özündə yaza bilməzsiniz, bunlar proqram komitəsi üçün arqument deyil. Xoşbəxtlikdən, zərif həllər də tez-tez sürətli və ucuzdur. Mən və onlarla həmkarım təxminən 15 il əvvəl bu mövzunu müzakirə etdik və bu mövzuda bir məqalə yazdıq. Düşünürəm ki, indi də tapa bilərsiniz, bu adlanır "Sistem tədqiqatını necə qiymətləndirmək olar" və ya buna bənzər bir şey, ondan çox müəllifi var. Bu, müəllifi olduğum yeganə məqalədir Sasha Fedorova, ona görə də mənim nəşrlər siyahısımda onun adını axtarsanız, sizə lazım olanı tapacaqsınız. Sistem tədqiqatlarının qiymətləndirilməsi və zərifliyin nə qədər vacib olması haqqında danışır. 

Alex: Deməli, elmdə və biznesdə yaxşı hesab edilən standart arasında fərq var. Elm performansı, enerji sərfiyyatını, TDP-ni, həyata keçirmə asanlığını və daha çoxunu qiymətləndirir. Universitetdə bu tip tədqiqatlar aparmaq imkanınız varmı? Təcrübələr apara biləcəyiniz müxtəlif maşınlara və fərqli arxitekturaya malik laboratoriyanız varmı?

Michael: Bəli, şöbəmizdə çoxlu müxtəlif maraqlı maşınlar var. Çox vaxt onlar kiçikdir, bizdə kiçik bir klaster və müxtəlif sürətləndiriciləri olan çox prosessorlu sistemlər var. Bundan əlavə, kampusda bir neçə onlarla müxtəlif elm sahəsinin alimlərinə xidmət edən nəhəng hesablama mərkəzi var. Təxminən min qovşaq və iyirmi min nüvəyə malikdir, hamısı Linux-da. Ehtiyac yaranarsa, siz həmişə bir qədər AWS ala bilərsiniz. Beləliklə, avadanlıqla bağlı heç bir ciddi məhdudiyyətimiz yoxdur. 

Alex: Otuz il əvvəl necə idi? Onda problemlər var idi?

Michael: Onda bir az fərqli idi. 1980-ci illərin ortalarından sonlarına qədər elm hesablama resurslarının çatışmazlığı hesab olunurdu. Bu vəziyyəti düzəltmək üçün Milli Elm Fondu (Milli Elm Fondu) əlaqələndirilmiş eksperimental tədqiqat proqramını yaratdı (Coordinated Experimental Research, CER). Proqramın missiyası Kompüter Elmləri departamentləri üçün hesablama infrastrukturunu təmin etmək idi və o, əhəmiyyətli dəyişikliklərə nail oldu. Onun verdiyi pulla biz Roçester Universitetində 1984-cü ildə 128 düyünlü BBN Butterfly aldıq, bu mənim oraya gəlməmişdən bir il əvvəl idi. O zaman bu, paylaşılan yaddaşa malik dünyanın ən böyük multiprosessorlu sistemi idi. Onun hər biri ayrıca ana platada olan 128 prosessoru var idi və dörd rəf tuturdu. Hər bir prosessorun bir meqabayt yaddaşı var idi, 128 meqabayt operativ yaddaş o zaman ağlasığmaz məbləğ idi. Bu maşında biz ilk dəfə MCS kilidini tətbiq etdik. 

Alex: Deməli, mən sizi düzgün başa düşürəmsə, deməli, hazırda aparatla bağlı problem həll olunub? 

Michael: Ümumiyyətlə, bəli. Bir neçə xəbərdarlıq var: birincisi, əgər siz kompüter arxitekturasını çip səviyyəsində edirsinizsə, akademik mühitdə bunu etmək çətindir, çünki biznesdə bunu etmək üçün daha yaxşı alətlər var. Əgər sizə 10 nanometrdən kiçik bir şey lazımdırsa, onu başqasından sifariş etməli olacaqsınız. Bu sahədə Intel-də tədqiqatçı olmaq daha asandır. Əgər siz çiplərdə və ya bərk-dövlət yaddaşında optik rabitə üzərində işləyirsinizsə, biznesdə hələ elmdə olmayan texnologiyaları tapacaqsınız, ona görə də ittifaqlar yaratmalısınız. Məsələn, Stephen Swanson (Steven Swanson) yaradılmışdır belə bir tərəfdaşlıq yeni yaddaş texnologiyaları üçün. Bu forma həmişə işləmir, lakin bəzi hallarda kifayət qədər uğurlu ola bilər. Bundan əlavə, elmdə ən güclü hesablama sistemlərinin inkişafı daha çətindir. Hazırda ABŞ, Yaponiya və Çində həyata keçirilən ən böyük superkompüter layihələrinin hamısı biznesə yönəlib. 

İdeyaların praktiki həyata keçirilməsi. MCS, MS, CLH, JSR 166, Doug Lee ilə işləyir və daha çox.

Виталий: Sinxronizasiya alqoritmləri üzərində işləməyə necə başladığınız barədə artıq danışdınız. Haqqında iki çox məşhur məqaləniz var MCS bloklanması и Michael-Scott növbəsi (MS)müəyyən mənada Java-da həyata keçirilmişdir. (Redaktorun qeydi: bütün nəşrlərə baxmaq olar по ссылке). Orada bu bloklama bəzi dəyişikliklərlə həyata keçirilib və məlum olub CLH kilidi, və növbə nəzərdə tutulduğu kimi həyata keçirildi. Amma məqalələrinizin dərci ilə onların praktik tətbiqi arasında uzun illər keçdi. 

Alex: Növbə vəziyyətində təxminən 10 il görünür.

Michael: Bu funksiyalar Java standart kitabxanasında görünməzdən əvvəl?

Виталий: Bəli. Bunun baş verməsi üçün nə etdiniz? Yoxsa heç nə etmədilər?

Michael: Mən sizə deyə bilərəm ki, MS Queue Java 5-ə necə daxil olub. Onun çıxmasından bir neçə il əvvəl mən Boston yaxınlığındakı laboratoriyada Sun Microsystems-də Mark Moyers qrupu ilə işləmişəm. O, çox iş parçacığında maraqlı problemlər üzərində işləyən tanıdığı insanlar üçün seminar təşkil etdi, çünki onların şirkətinə sata biləcəyi mövzular tapmaq istəyirdi. Doug Lea ilə ilk dəfə orada tanış oldum. Doug və mən və Sundan təxminən 25 nəfər birlikdə Douqun təqdimatını müzakirə edirdik JSR 166, sonradan java.util.concurrent oldu. Yol boyu Duq MS növbəsindən istifadə etmək istədiyini, lakin bunun üçün interfeys üçün növbədə olan elementlərin sayı üçün sayğac lazım olduğunu söylədi. Yəni bu, ayrı bir üsulla, atomik, dəqiq və sürətli edilməli idi. Mən sadəcə olaraq qovşaqlara seriya nömrələri əlavə etməyi, birinci və sonuncunun nömrəsini götürüb birini digərindən çıxarmağı təklif etdim. Duq başını qaşıdı, “niyə də olmasın” dedi və sonda bunu etdi. Kitabxanada bu yanaşmanın tətbiqini müzakirə etdik, lakin Duq işin çoxunu özü etdi. Nəticədə, o, Java-da əla multithreading dəstəyi qurmağı bacardı. 

Alex: Deməli, düzgün başa düşdümsə, .size() metodu standart növbə interfeysinin bir hissəsi olmalı və O(1) alqoritmik mürəkkəbliyinə malik olmalı idi?

Michael: Bəli və buna əlavə olaraq ayrıca sayğac tələb olunur.

Alex: Çünki Java-da .size() metodunu çağırsanız, nəticənin kolleksiyanın faktiki ölçüsünə əsaslanmayaraq dərhal mövcud olacağı gözlənilir. Görürəm, təşəkkür edirəm.

Michael: Bir neçə il sonra mən tələbəm Bill Şererlə ikili məlumat strukturları üzərində işləyirdim - əslində bu barədə danışacağam Hydra haqqında hesabat. Doug bizə gəldi və onları Java İcraçı Çərçivəsində istifadə edə biləcəyini söylədi. Bill ilə birlikdə ədalətli və ədalətsiz növbələr adlanan iki tətbiq yaratdılar. Mən faktiki kodun yazılmasında iştirak etməsəm də, bu layihədə onlara məsləhət verdim. Nəticədə icraçıların sürəti xeyli artıb. 

Vladimir: Alqoritmlərinizin səhv tətbiqi və ya yeni funksiyalar əlavə etmək tələbləri ilə qarşılaşmısınız? Ümumiyyətlə, təcrübə nəzəriyyə ilə üst-üstə düşməlidir, lakin çox vaxt fərqlənirlər. Tutaq ki, siz bir alqoritm yazmısınız və kağız üzərində işləyir, amma icrada iştirak edən insanlar sizdən daha çox funksiya və ya alqoritmin bir növ düzəldilməsi üçün xahiş etməyə başladılar. Sizdə belə hallar olubmu?

Michael: Birinin yanıma gəlib “bunu necə həyata keçirəcəyimi” soruşduğu yeganə nümunə, artıq danışdığım Douq sualı idi. Ancaq praktiki ehtiyaclara uyğun olaraq maraqlı dəyişikliklərin edildiyi bir neçə hal var. Məsələn, IBM-dəki K42 komandası MCS kilidini çevirdi və onu standart interfeysə çevirdi ki, növbə qovşağını əldə etmə və buraxma qaydalarına irəli-geri ötürməyə ehtiyac qalmadı. Bu standart interfeys sayəsində nəzəri cəhətdən gözəl olan bir fikir praktikada işləməyə başladı. Təəccüblüdür ki, bu barədə heç vaxt məqalə dərc etmədilər və patent alsalar da, sonradan ondan imtina etdilər. İdeya gözəl idi və imkan daxilində bu haqda danışmağa çalışıram. 

İnsanların dərc etdiyim alqoritmlərdə təkmilləşdirmələr etdiyi başqa hallar da olub. Məsələn, MS növbəsinin iki pilləli quraşdırma mexanizmi var, bu o deməkdir ki, növbənin kritik yolunda iki CAS var. Köhnə avtomobillərdə CAS olduqca baha idi. Intel və digər istehsalçılar onları bu yaxınlarda kifayət qədər yaxşı optimallaşdırdılar, lakin bir vaxtlar bunlar 30 dövrəli təlimatlar idi, buna görə də kritik yolda birdən çox olması arzuolunmaz idi. Nəticədə, MS növbəsinə bənzər, lakin kritik yolda yalnız bir atom əməliyyatına malik olan fərqli bir növbə hazırlanmışdır. Bu, müəyyən bir müddət ərzində əməliyyatın O(1) deyil, O(n) vaxtını ala bilməsi səbəbindən əldə edilmişdir. Bu mümkün deyildi, amma mümkün idi. Bu, müəyyən məqamlarda alqoritmin növbəni əvvəldən bu növbədə mövcud vəziyyətə keçməsi ilə əlaqədar baş verdi. Ümumiyyətlə, alqoritm çox uğurlu oldu. Bildiyimə görə, o, çox geniş istifadə olunmur, çünki qismən atom əməliyyatları əvvəlkindən xeyli az resurs tələb edir. Amma ideya əla idi. Oracle-dan Deyv Dicenin işini də çox bəyənirəm. Etdiyi hər şey çox praktikdir və dəmirdən çox ağıllı şəkildə istifadə edir. O, NUMA-dan xəbərdar olan sinxronizasiya alqoritmlərinin və çox yivli məlumat strukturlarının əksəriyyətində əli olub. 

Vladimir: Alqoritmlər yazarkən və ya tələbələrə öyrətdiyiniz zaman işinizin nəticəsi dərhal görünmür. Cəmiyyətin, məsələn, yeni məqalə ilə tanış olması üçün bir az vaxt lazımdır. Yeni alqoritm dərhal tətbiq tapmır. 

Michael: Məqalənin əhəmiyyətli olub-olmayacağı dərhal aydın deyil. Düşünürəm ki, konfranslarda mükafat qazanmış məqalələri araşdırmaq maraqlı olardı. Yəni, bir vaxtlar proqram komitələrində olan insanların ən yaxşı hesab etdikləri məqalələrə baxın. Bağlantıların sayına və bu məqalələrin 10, 20, 25 il ərzində həqiqətən necə təsirli olduğunu biznesə təsirinə görə hesablamağa çalışmaq lazımdır. İkisi arasında güclü bir əlaqənin olacağına şübhə edirəm. Sıfır olmayacaq, amma çox güman ki, istədiyimizdən çox zəif olacaq. Bir çox ideyalar geniş yayılana qədər uzun müddət tələb olunmamış qalır. Məsələn, əməliyyat yaddaşını götürək. Orijinal məqalənin dərc edildiyi vaxtdan insanların əslində onunla maşınlar yaratmağa başladığı vaxta qədər 10 ildən çox vaxt keçdi. Və bu yaddaşın kommersiya məhsullarında görünməsindən əvvəl - və hamısı 20. Çox uzun müddətdir ki, heç kim məqaləyə diqqət yetirmirdi və sonra ona keçidlərin sayı kəskin şəkildə artdı. Bunu əvvəlcədən proqnozlaşdırmaq çətin olardı. Digər tərəfdən, bəzən ideyalar dərhal həyata keçirilir. Bir neçə il əvvəl mən DISC üçün Joe Izraelevitz ilə bir məqalə yazdım və bu, onları işlədən kompüter qəzaya uğradıqdan sonra istifadə edilə bilən davamlı məlumat strukturları üçün etibarlılığın yeni formal tərifini təklif etdi. Məqaləni əvvəldən bəyəndim, amma gözlədiyimdən qat-qat populyar oldu. Bir neçə fərqli qrup tərəfindən istifadə edildi və nəticədə davamlılıq strukturlarının standart tərifinə çevrildi. Hansı ki, xoşdur.

Vladimir: Qiymətləndirmə üçün istifadə etdiyiniz hər hansı üsullar varmı? Hətta məqalələrinizi və tələbələrinizi qiymətləndirməyə çalışırsınızmı? Öyrətdiyin adamın doğru yolda olub-olmaması baxımından.

Michael: Hər kəs kimi mən də bu dəqiqə gördüyüm işlərə daha çox fikir verirəm. Yenə hamı kimi mən də keçmiş sənədlərimə istinad edilib-edilmədiyini öyrənmək üçün vaxtaşırı Google Scholar-ı yoxlayıram, lakin bu, daha çox maraq doğurur. Əsasən tələbələrimin indi etdikləri ilə məşğul oluram. Cari işi qiymətləndirməyə gəldikdə, bunun bir hissəsi estetik mülahizələrdir, nəyin zərif, nəyin yox. Gündəlik səviyyədə isə açıq suallar böyük rol oynayır. Məsələn, bir şagird mənə bəzi nəticələrin qrafiki ilə gəlir və biz qrafikin hansısa qəribə davranışının haradan gəldiyini anlamağa çalışırıq. Ümumiyyətlə, işimizdə daima hələ dərk etmədiyimiz şeyləri anlamağa çalışırıq. 

Transaksiya yaddaşı

Виталий: Bəlkə bir az əməliyyat yaddaşı haqqında danışaq?

Michael: Düşünürəm ki, az da olsa deməyə dəyər, çünki çox səy göstərmişəm. Bu, digərlərindən daha çox nəşrlərim olduğu bir mövzudur. Ancaq eyni zamanda, qəribə də olsa, mən həmişə əməliyyat yaddaşına çox şübhə ilə yanaşırdım. Məncə, Herlihy və Mossun məqaləsi (M. Herlihy, J. E. B. Moss) vaxtından əvvəl nəşr olundu. 1990-cı illərin əvvəllərində onlar təklif etdilər ki, tranzaksiya yaddaşı istedadlı proqramçılara çox yivli məlumat strukturları üzərində işləməyə kömək edə bilər ki, bu strukturlar daha sonra adi proqramçılar tərəfindən kitabxana kimi istifadə olunsun. Yəni bu, Doug Lee üçün JSR 166-nı yerinə yetirməsi üçün kömək olardı. Lakin əməliyyat yaddaşı çox yivli proqramlaşdırmanı asanlaşdırmaq üçün nəzərdə tutulmamışdı. Lakin 2000-ci illərin əvvəllərində geniş yayıldığı zaman məhz belə qəbul olunmağa başladı. Paralel proqramlaşdırma problemini həll etmək üçün bir yol kimi reklam edildi. Bu yanaşma mənə həmişə ümidsiz görünüb. Transaksiya yaddaşı yalnız paralel verilənlər strukturlarının yazılmasını asanlaşdıra bilərdi. Mənə elə gəlir ki, bu onun əldə etdiyi şeydir. 

Çox yivli kodun yazılmasının çətinliyi haqqında

Alex: Çox maraqlı. Görünür, adi proqramçılarla çox yivli kod yaza bilənlər arasında müəyyən maneə var. Keçən il bəzi alqoritmik çərçivə tətbiq edən insanlarla bir neçə dəfə danışdım. Məsələn, Martin Tomsonla, eləcə də çox yivli kitabxanalar üzərində işləyən proqramçılarla. (Redaktorun qeydi: Martin Thompson çox məşhur bir tərtibatçıdır, yazdı Dağıdıcı и Aeron. Və o da var hesabat Joker 2015 konfransımızda, video qeyd YouTube-da mövcuddur. O, eynidir açıldı bu konfrans əsas qeyd də mövcuddur). Onlar deyirlər ki, əsas problem alqoritmləri həm sürətli, həm də asan istifadə etməkdir. Yəni bu baryeri aşmağa və mümkün qədər çox insanı bu sahəyə cəlb etməyə çalışırlar. Siz bu haqda nə düşünürsünüz?

Michael: Bu, çox iş parçacığının əsas problemidir: sistemin mürəkkəbliyini artırmadan yüksək performansa necə nail olmaq olar. 

Alex: Çünki mürəkkəblikdən qaçmağa çalışdıqları zaman alqoritm daha az universal olur.

Michael: Burada əsas düzgün tərtib edilmiş abstraksiyalardır. Mənə elə gəlir ki, bu, ümumiyyətlə, bir sahə kimi kompüter sistemləri üçün əsas məsələdir. Butler Lampson bu termindən istifadə etməyi xoşlayır və o, bizi “abstraksiya tacirləri” adlandırır. Bu gün sadə texnologiyalar mövcud deyil. İstifadə etdiyimiz prosessorlarda 10 milyard tranzistor var - sadəlikdən söhbət gedə bilməz. Eyni zamanda, ISA prosessordan daha sadədir, çünki biz onu yüksək performans və nisbətən sadə interfeys ilə təmin etmək üçün çox uzun müddət işləmişik. Ancaq onunla da hər şey qaydasında deyil. Eyni problem indi bazarda görünən sürətləndiricilərdə də var. Suallar yaranır - GPU, şifrələmə mexanizmi, sıxılma, kod dəyişdirmə mexanizmi, xətti cəbr mexanizmi və ya hətta daha çevik FPGA üçün düzgün interfeysi necə etmək olar. Alətdən istifadəni asanlaşdıran və mürəkkəbliyi gizlədən interfeysi necə yaratmaq olar? Ondan qurtulmayacaq, əksinə sadə bir proqramçıdan gizlədəcək. 

Alex: Anladığım kimi, abstraksiyaları anlamaqda hələ də maneəmiz var. Yaddaş modelini götürək, elm və texnologiyanın inkişaf mərhələsində bu, əsas abstraksiyalardan biridir. Bunun sayəsində bütün proqramçılar iki qrupa bölünür: böyük hissəsi onu başa düşməyənlər, kiçik hissəsi isə başa düşən və ya başa düşdüyünü düşünənlərdir. 

Michael: Bu yaxşı sualdır - bizdən hər hansı biri həqiqətən yaddaş modelini başa düşürmü?

Виталий: Xüsusilə C++ dilində.

Michael: Hans Boehm ilə nə vaxtsa danışın. O, tanıdığım ən ağıllı insanlardan biridir, yaddaş modelləri üzrə aparıcı mütəxəssisdir. Dərhal sizə başa düşmədiyi çox şey olduğunu söyləyəcək. Amma mücərrədlik məsələsinə qayıtsaq, mənim fikrimcə, yaddaş modelləri sahəsində son 30 ildə ən mühüm fikir ifadə olunub. Sarita Advenin dissertasiyasında. (Redaktorun qeydi: nəşrlərin tam siyahısı mövcuddur по ссылке).

Alex: Mənim sualım belədir: bu maneə konsepsiyanın təbiətindən irəli gəlirmi? 

Michael: Yox. Sarita belə nəticəyə gəldi ki, düzgün yanaşma ilə siz bütün mürəkkəbliyi uğurla gizlədə, yüksək performans əldə edə və proqramçıya sadə API verə bilərsiniz. Və bu API-yə əməl etsəniz, ardıcıl ardıcıllığa nail ola bilərsiniz. Məncə bu düzgün modeldir. Məlumat yarışları olmadan kodu yazın və ardıcıl ardıcıllıq əldə edin. Əlbəttə ki, yarış ehtimalını azaltmaq üçün xüsusi alətlər lazımdır, amma bu başqa məsələdir. 

Vladimir: Karyeranızda elə vaxtlar olubmu ki, həll olunmuş kimi görünən problem birdən-birə fəlakətə çevrilib, yoxsa bu problemin həll olunmaz olduğu ortaya çıxıb? Məsələn, nəzəri olaraq istənilən ədədi faktorlara ayıra və ya hər hansı bir ədədin sadə olub olmadığını müəyyən edə bilərsiniz. Ancaq praktikada bunu etmək çətin ola bilər; mövcud avadanlıqla nömrələri hesablamaq çətindir. Bənzər bir şey başınıza gəldi?

Michael: Mən dərhal belə bir şey xatırlamıram. Elə vaxtlar olub ki, mənə elə gəlirdi ki, müəyyən sahədə görüləsi heç nə qalmayıb, amma sonra orada yeni və maraqlı nəsə baş verib. Məsələn, mən fikirləşdim ki, limitsiz növbə sahəsi artıq yetkinlik həddinə çatıb. MTN növbəsində bir neçə təkmilləşdirmədən sonra artıq heç nə baş vermədi. Və sonra Morrison (Adam Morrison) və Afek (Yehuda Afek) icad etdilər LCRQ növbəsi. Məlum oldu ki, qeyri-məhdud çox yivli növbə mümkün idi, burada çox vaxt kritik yolda yalnız gətirmə və artırma təlimatı var idi. Və bu, daha yaxşı performans göstəricilərinə nail olmağa imkan verdi. Bu, biz gətirmə və artımın çox faydalı bir şey olduğunu bilmirik. Erik Freudenthal 1980-ci illərin sonunda Allan Gottlieb ilə Ultrakompüter üzərində işində bu barədə yazmışdı, lakin söhbət məhdud növbələrdən gedirdi. Morrison və Afek qeyri-məhdud növbədə gətirmə və artımdan istifadə edə bildilər.

Yeni memarlıqlar. Tranzaksiya yaddaşının qələbəsi yaxındırmı?

Vladimir: Alqoritmlər üçün faydalı ola biləcək yeni memarlıq həlləri axtarırsınız? 

Michael: Əlbəttə, həyata keçirilməsini arzuladığım çox şeylər var. 

Vladimir: Məsələn, hansı növ?

Michael: İlk növbədə, Intel və IBM prosessorlarında aparat səviyyəli əməliyyat yaddaşımıza bir neçə sadə genişləndirmə. Xüsusilə, mən istərdim ki, qeyri-əməliyyat yükü və anbarın əməliyyatlar içərisində dərhal mövcud olmasını istərdim. Onlar dərhal baş vermədən əvvəl ardıcıllıqla döngələrə səbəb olur, buna görə də çətin ola bilər. Ancaq abstraksiya təbəqələrini qoruyursanız, əməliyyat baş verərkən əməliyyatdan kənarda edə biləcəyiniz çox maraqlı şeylər var. Bunun həyata keçirilməsinin nə qədər çətin olacağını bilmirəm, amma çox faydalı olardı. 

Başqa bir faydalı şey uzaq yaddaşdan önbelleği yükləməkdir. Düşünürəm ki, gec-tez bu həyata keçiriləcək. Bu texnologiya parçalanmış yaddaşa malik sistemlərin yaradılmasına imkan verəcək. Rakda, məsələn, 100 terabayt qeyri-sabit yaddaş saxlamaq mümkün olardı və əməliyyat sistemi özü dinamik olaraq həmin yaddaşın hansı bölmələrinin prosessorların fiziki ünvan sahəsinə uyğun olmasına qərar verərdi. Bu, bulud hesablamaları üçün son dərəcə faydalı olardı, çünki bu, böyük həcmdə yaddaşın ona ehtiyacı olan tapşırıqlara verilməsinə imkan verəcəkdir. Düşünürəm ki, kimsə bunu edəcək.

Виталий: Tranzaksiya yaddaşı haqqında danışmağı bitirmək üçün bu mövzu ilə bağlı daha bir sualım var. Tranzaksiya yaddaşı nəticədə standart çox yivli məlumat strukturlarını əvəz edəcəkmi?

Michael: Yox. Əməliyyatlar spekulyativ mexanizmdir. Proqramlaşdırma səviyyəsində bunlar atom kilidləridir, lakin içərisində fərziyyələrdir. Təxminlərin çoxu doğru olarsa, bu cür proqnozlar işləyir. Buna görə də, tranzaksiya yaddaşı iplər bir-biri ilə çətin qarşılıqlı əlaqədə olduqda yaxşı işləyir və sadəcə qarşılıqlı əlaqənin olmadığına əmin olmaq lazımdır. Ancaq mövzular arasında bir mesaj başlayırsa, əməliyyatların az faydası var. İzah edim, söhbət əməliyyatların bütün atom əməliyyatı ətrafında cəmlənməsindən gedir. Onlar hələ də çox yivli məlumat strukturları üçün komponentlər kimi uğurla istifadə edilə bilər. Məsələn, üç sözdən ibarət CAS-a ehtiyacınız varsa və eyni zamanda iyirmi iplə işləyən həqiqətən çox yivli alqoritmin ortasında üç kiçik şeyi çoxillətməlisinizsə. Ümumilikdə, əməliyyatlar faydalı ola bilər, lakin onlar çox yivli məlumat strukturlarının düzgün tərtib edilməsi ehtiyacını aradan qaldırmayacaqlar. 

Qeyri-uçucu yaddaş, Optane DIMM, ultra sürətli cihazlar.

Виталий: Haqqında danışmaq istədiyim son şey hazırkı tədqiqatınızın mövzusudur: dəyişkən yaddaş. Yaxın gələcəkdə bu sahədə nə gözləmək olar? Yəqin ki, artıq mövcud olan hər hansı effektiv tətbiqləri bilirsiniz? 

Michael: Mən hardware mütəxəssisi deyiləm, yalnız xəbərlərdə oxuduqlarımı və həmkarlarımın mənə dediklərini bilirəm. Artıq hər kəs Intel-in satdığını eşitmişdir Optan DIMM, dinamik RAM ilə müqayisədə oxunma gecikməsi təxminən 3 dəfə və yazma gecikməsi 10 dəfədir. Onlar tezliklə çox böyük həcmli versiyalarda satışa çıxarılacaq. Bir neçə terabayt bayt ünvanlı operativ yaddaşa malik bir noutbuka sahib ola biləcəyinizi düşünmək gülüncdür. Çox güman ki, 10 ildən sonra biz bu yeni texnologiyadan istifadə etməyə qərar verəcəyik, çünki biz DRAM-dan istifadə edirik - sadəcə həcmi artırırıq. Amma enerji müstəqilliyi sayəsində bizim qarşımızda tamamilə yeni imkanlar açılır. Biz saxlama yığınını əsaslı şəkildə dəyişdirə bilərik ki, bayt ünvanlı iş yaddaşı ilə blok strukturlu davamlı yaddaş arasında heç bir fərq olmasın. Beləliklə, bir proqramdan digərinə ötürülməsi lazım olan hər şeyi blok strukturlu fayllara seriallaşdırmaq lazım olmayacaq. Buradan əməliyyat sistemlərinə, iş vaxtı mühitlərinə və paylanmış məlumat anbarlarına təsir edən bir çox mühüm prinsiplər əldə edə bilərik. Bu sahədə işləmək çox maraqlıdır. Şəxsən mənim üçün bunların nəyə gətirib çıxaracağını təxmin etmək çətindir, lakin buradakı problemlər olduqca əyləncəlidir. Burada inqilabi dəyişikliklər ola bilər və onlar çoxillik işdən çox təbii şəkildə irəli gəlir, çünki nasazlığın bərpası sistemin normal işləməsinin yanında “çox oxulu” prosesdir. 

Hazırda üzərində işlədiyim ikinci əsas mövzu ultra-sürətli cihazların idarə edilməsi və sistemli siyasət nəzarəti ilə istifadəçilər sahəsindən cihazlara təhlükəsiz girişdir. Son illərdə cihaza girişi istifadəçi sahəsinə köçürmək tendensiyası var. Bu ona görə edilir ki, TCP-IP kernel yığını hər 5 mikrosaniyədə bir yeni paketə ehtiyacı olan şəbəkə interfeysinin üstündə fəaliyyət göstərə bilməz; o, sadəcə olaraq davam etməyəcək. Buna görə istehsalçılar cihazlara birbaşa çıxışı təmin edirlər. Lakin bu o deməkdir ki, əməliyyat sistemi prosesə nəzarəti itirir və o, rəqabət aparan proqramlar üçün cihaza lazımi girişi təmin edə bilmir. Araşdırma qrupumuz hesab edir ki, bu çatışmazlığın qarşısını almaq olar. Bu ay USENIX ATC-də bununla bağlı məqaləmiz olacaq. Bu, davamlılıq üzərində işləmə ilə əlaqədardır, çünki uzun ömürlü bayt ünvanlı davamlı yaddaş, mahiyyət etibarilə, istifadəçi məkanında daxil olmaq lazım olan ultra sürətli I/O olan bir cihazdır. Bu tədqiqat mikrokernellərə, ekzokernellərə və funksionallığı OS nüvəsindən istifadəçi sahəsinə təhlükəsiz şəkildə köçürmək üçün digər ənənəvi cəhdlərə yeni yanaşmaları mümkün edir. 

Vladimir: Bayt ünvanlı yaddaş əladır, lakin fiziki məhdudiyyət var - işıq sürəti. Bu o deməkdir ki, cihazla qarşılıqlı əlaqə zamanı qaçılmaz olaraq gecikmə olacaq. 

Michael: Tamamilə doğru.

Vladimir: Yeni yüklərin öhdəsindən gəlmək üçün kifayət qədər imkan olacaqmı?

Michael: Bu əla sualdır, amma cavab vermək mənim üçün çətin olacaq. Yaddaşda emal ideyası uzun müddətdir ki, mövcuddur, çox maraqlı, eyni zamanda çox mürəkkəbdir. Mən bu sahədə işləməmişəm, amma orada bəzi kəşflər edilsə, çox yaxşı olardı. Qorxuram ki, əlavə edəcək heç nəyim yoxdur. 

Vladimir: Daha bir problem var. Yeni, əhəmiyyətli dərəcədə böyük həcmdə RAM-ı CPU-ya sığdırmaq mümkün olmayacaq. Buna görə də, fiziki məhdudiyyətlərə görə, bu RAM təcrid olunmalıdır. 

Michael: Hamısı inteqral sxemlərin istehsalındakı qüsurların sayından asılıdır. Əgər yarımkeçirici vafliləri tamamilə qüsursuz yaratmaq mümkün olsaydı, ondan bütöv bir mikrosxem düzəltmək olardı. Amma indi biz poçt markalarından daha böyük mikrosxemləri necə düzəltməyi bilmirik. 

Vladimir: Ancaq biz hələ də böyük ölçülərdən, təxminən santimetrdən danışırıq. Bu qaçılmaz olaraq gecikməyə təsir edir. 

Michael: Bəli. İşıq sürəti ilə bağlı heç nə edə bilməzsiniz. 

Vladimir: Təəssüf ki. 

Növbəti böyük tendensiya. İkili məlumat strukturları. Hidra.

Виталий: Mən başa düşdüyüm qədər, siz yeni trendləri çox tez tutursunuz. Transaksiya yaddaşında ilk işləyənlərdən biri, qeyri-sabit yaddaşda isə ilk işləyənlərdən biri oldunuz. Sizcə növbəti böyük trend nə olacaq? Yoxsa bu sirrdir?

Michael: Düzünü desəm, bilmirəm. Ümid edirəm ki, yeni bir şey gələndə fərq edə biləcəyəm. Öz başıma hər hansı yeni sahə icad etmək mənə qismət olmadı, amma bir neçə qismət oldu və başqalarının yaratdığı yeni sahələrdə kifayət qədər erkən işləməyə başladım. Ümid edirəm ki, gələcəkdə bunu bacaracam.

Alex: Bu müsahibədəki son sual Hydra-dakı performansınız və məktəbdəki fəaliyyətinizlə bağlı olacaq. Düzgün başa düşsəm, məktəbdəki hesabat bloklanmayan alqoritmlər, konfransda isə ikili məlumat strukturları haqqında olacaq. Bu hesabatlar haqqında bir neçə söz deyə bilərsinizmi?

Michael: Qismən biz bu müsahibədə artıq sizinlə bu mövzulara toxunmuşuq. Söhbət tələbəm Bill Şererlə etdiyim işdən gedir. O, bu barədə tezis yazdı və Doug Lee də buna öz töhfəsini verdi və nəticədə Java kitabxanasındakı çox yivli sinxron növbələrin bir hissəsi oldu. Tutaq ki, verilənlər strukturu bloklanmadan oxunur və yazılır, yəni hər bir əməliyyatın kritik yolda məhdud sayda təlimatları var. Boş konteynerdən məlumatları silməyə cəhd etsəniz və ya bu konteynerdə olmayan müəyyən məlumatları silməyə cəhd etsəniz, bunun edilə bilməyəcəyi barədə dərhal məlumat alacaqsınız. Lakin mövzu həqiqətən bu dataya ehtiyac duyarsa, bu davranış məqbul olmaya bilər. Sonra ağla gələn ilk şey, lazımi məlumatların göründüyünü daim soruşacaq bir döngə yaratmaqdır. Ancaq sonra hər kəs üçün müdaxilə var. Bundan əlavə, bu yanaşma ilə siz 10 dəqiqə gözləyə bilərsiniz, sonra başqa bir mövzu gələcək və təsadüfən ilk olaraq lazımi məlumatları alacaq. İkili məlumat strukturlarının hələ də kilidləri yoxdur, lakin onlar mövzuların düzgün gözləməsinə imkan verir. "İkiqat" termini o deməkdir ki, strukturda ya verilənlər, ya da verilənlər üçün sorğular var, gəlin onları anti-data adlandıraq. Beləliklə, boş konteynerdən bir şey götürməyə çalışsanız, bunun əvəzinə konteynerə sorğu göndəriləcək. İndi mövzu başqalarını narahat etmədən sorğu gözləyə bilər. Bundan əlavə, məlumat strukturu sorğulara prioritetlər təyin edir ki, qəbul edildikdə onları lazımi şəxsə ötürür. Nəticə, hələ də formal spesifikasiyaya və praktikada yaxşı performansa malik olan kilidlənməyən mexanizmdir. 

Alex: Bu məlumat strukturundan gözləntiləriniz nədir? Bütün ümumi hallarda performansı yaxşılaşdıracaq, yoxsa müəyyən vəziyyətlər üçün daha uyğundur? 

Michael: Birincisi, kilidləmədən bir konteynerə ehtiyacınız varsa, faydalıdır, ikincisi, içərisində olmayan konteynerdən məlumat almaq lazım olan bir vəziyyətdə gözləmək lazımdır. Mənim bildiyimə görə, bu iki şərt yerinə yetirildikdə çərçivəmiz optimal davranışı təmin edir. Buna görə də, bu hallarda istifadə etməyi məsləhət görürəm. Kilidsiz məlumat strukturlarının əsas üstünlüyü onların performans problemlərindən qaçmasıdır. Və məlumat bir ipdən digərinə ötürülürsə, bir çox alqoritmlərdə gözləmə çox vacibdir.

Виталий: İcazə verin aydınlaşdırım: həm məktəbdə, həm də konfransda eyni şey haqqında danışacaqsınız?

Michael: Məktəbdə Mən danışacam dərsin əvvəlində qeyd olunan əsas prinsiplərlə birlikdə çox yivli məlumat strukturları haqqında ümumi. Güman edirəm ki, tamaşaçılar iplərin nə olduğunu bilir və qıfıllarla tanışdır. Bu əsas biliklərə əsaslanaraq, kilidsiz məlumat strukturları haqqında danışacağam. Yaddaşın idarə edilməsi kimi mövzulara toxunaraq, bu sahədəki ən mühüm problemlərə dair ümumi məlumat verəcəyəm. MS növbəsindən daha mürəkkəb bir şey olacağını düşünmürəm.

Alex: Məktəbdə sinifinizin sonunda ikili məlumat strukturları haqqında dərs keçməyi planlaşdırırsınız?

Michael: Onları qeyd edəcəm, amma onlara çox vaxt sərf etməyəcəyəm. Hydra hesabatı onlara həsr olunacaq. Bu, nəhayət Java-ya çevrilmiş layihəni, həmçinin LCRQ növbəsinin ikili variantını yaratmaq üçün Co İsraeleviç ilə işləməyi və ikili məlumat strukturları üçün demək olar ki, universal dizaynı əhatə edəcək.

Alex: Beləliklə, məktəbdəki mühazirə yeni başlayanlar üçün, Hydra-da ikiqat məlumat strukturları haqqında mühazirə isə artıq müəyyən təcrübəsi olan insanlar üçün tövsiyə oluna bilər?

Michael: Səhv edirəmsə, məni düzəldin, lakin Hydra-da auditoriya çox müxtəlif olacaq, o cümlədən bir çox Java mütəxəssisləri və ümumiyyətlə, çoxillik proqramlaşdırma ilə xüsusi məşğul olmayan insanlar. 

Виталий: Bəli bu doğrudur.

Alex: Ən azından ümid edirik.

Michael: Bu halda, mən bu müsahibəyə başladığımız problemlə qarşılaşacağam: həm texniki detallarla kifayət qədər zəngin, həm də bütün dinləyicilər üçün əlçatan olan hesabatı necə etmək olar.

Виталий: Siz mühazirə oxuduğunuz kimi hesabat verəcəksinizmi? Yəni tamaşaçılarla danışıb vəziyyətə uyğunlaşmaq?

Michael: Mən qorxuram ki, bu cür nəticələnməyəcək, çünki hesabatda slaydlar olacaq. Dinləyicilər əvvəlcə müxtəlif dillərdə danışdıqda slaydlar vacibdir. Çoxları məni ingiliscə başa düşməkdə çətinlik çəkəcək, xüsusən də çox tez danışsam. Bu mövzuları ona görə seçdim Peter Kuznetsov SPTDC Məktəbində kilidsiz məlumat strukturları haqqında danışmağımı istədi; və sonra mənə Java istifadəçi qrupu konfransı üçün hesabat lazım idi və mən xüsusi olaraq Java proqramçıları üçün maraqlı olacaq bir şey seçmək istədim. Ən asan yol Java kitabxanasında bu və ya digər şəkildə əlimdə olan şeylər haqqında danışmaq idi. 

Alex: Güman edirik ki, Hydra-dakı tamaşaçılar artıq kilidsiz proqramlaşdırma haqqında nəsə bilirlər və bəlkə də bu sahədə müəyyən təcrübəyə malikdirlər. Amma bu, yalnız bir fərziyyədir, konfransın özündə vəziyyət daha aydın olacaq. Hər halda, vaxt ayırdığınız üçün təşəkkür edirik. Əminəm ki, müsahibə oxucularımız üçün çox maraqlı olacaq. Çox sağ olun!

Виталий: Çox sağ ol. 

Michael: Sizinlə Sankt-Peterburqda görüşməyimə şad olaram. 

Alex: Bizim də gözəl şəhərimiz var. Heç burda olmusan?

Michael: Xeyr, mən heç vaxt Rusiyada olmamışam. Amma Sankt-Peterburq həmişə olmadığım, amma həqiqətən getmək istədiyim yerlərin siyahısında olub, ona görə də dəvətə çox sevindim. 

Alex: Yeri gəlmişkən, natiqlər üçün ekskursiya proqramımız olacaq. Müsahibə üçün çox sağ olun, gününüz xoş keçsin!

Mayklla söhbətinizi 2019-11 iyul 12-cu il tarixlərində Sankt-Peterburqda keçiriləcək Hydra 2019 konfransında davam etdirə bilərsiniz. O, hesabatla gələcək "İkili məlumat strukturları". Biletləri əldə etmək olar rəsmi saytında.

Mənbə: www.habr.com

Добавить комментарий