Β«ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉΒ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ

БСгодняшняя моя ΡΡ‚Π°Ρ‚ΡŒΡ β€” это мысли вслух ΠΎΡ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ встал Π½Π° ΠΏΡƒΡ‚ΡŒ программирования ΠΏΠΎΡ‡Ρ‚ΠΈ случайно (хотя ΠΈ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎ).

Π”Π°, я понимаю, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ β€” это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΉ ΠΎΠΏΡ‹Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½, ΠΌΠ½Π΅ каТСтся, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΠ±Ρ‰ΡƒΡŽ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠΏΡ‹Ρ‚, описанный Π½ΠΈΠΆΠ΅, большС относится ΠΊ сфСрС Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‡Π΅ΠΌ Ρ‡Ρ‘Ρ€Ρ‚ Π½Π΅ ΡˆΡƒΡ‚ΠΈΡ‚ β€” ΠΌΠΎΠΆΠ΅Ρ‚ пригодится ΠΈ Π²Π½Π΅.

«ΠœΠ°Π½ΠΈΡ„Сст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://xkcd.com/664/

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, всСм настоящим студСнтам ΠΎΡ‚ Π±Ρ‹Π²ΡˆΠ΅Π³ΠΎ студСнта посвящаСтся!

ОТидания

Когда Π² 2014 Π³ΠΎΠ΄Ρƒ я Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π» Π±Π°ΠΊΠ°Π»Π°Π²Ρ€ΠΈΠ°Ρ‚ ΠΏΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ «Π˜Π½Ρ„ΠΎΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ систСмы связи» я ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π» ΠΎ ΠΌΠΈΡ€Π΅ программирования. Π”Π°, Ρƒ мСня, ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ…, Π±Ρ‹Π» Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ курсС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°» β€” Π½ΠΎ, господи, это ΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ курсС! ΠŸΡ€ΠΎΡˆΠ»Π° цСлая Π²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ!

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΈ Ρ†Π΅Π»ΠΎΠΌ, Π½ΠΈΡ‡Π΅Π³ΠΎ особСнно ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ Π±Π°ΠΊΠ°Π»Π°Π²Ρ€ΠΈΠ°Ρ‚Π° я Π½Π΅ ΠΆΠ΄Π°Π», ΠΈ поступая Π½Π° ΠΌΠ°Π³ΠΈΡΡ‚Π΅Ρ€ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ «Communication and Signal Processing» Π“Π΅Ρ€ΠΌΠ°Π½ΠΎ-Российского Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚Π° Новых Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

А зря…

ΠœΡ‹ Π±Ρ‹Π»ΠΈ всСго Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ, ΠΈ рСбята с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΅Ρ‰Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ собирали Ρ‡Π΅ΠΌΠΎΠ΄Π°Π½Ρ‹ Π² Π΄Π°Π»Ρ‘ΠΊΡƒΡŽ Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΡŽ (стаТировка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ курсС магистратуры). Π˜Π½Π°Ρ‡Π΅ говоря, Π½ΠΈΠΊΡ‚ΠΎ ΠΈΠ· блиТайшСго ΠΊΡ€ΡƒΠ³Π° Π΅Ρ‰Ρ‘ Π½Π΅ сталкивался Π²ΡΠ΅Ρ€ΡŒΡ‘Π· с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ СвропСйского образования, ΠΈ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΎ дСталях Π±Ρ‹Π»ΠΎ особо Π½Π΅ Ρƒ ΠΊΠΎΠ³ΠΎ.

Π‘Ρ‹Π»ΠΈ Ρƒ нас Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ курсС, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΌ Π΄Π΅ΠΌΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‡Π½ΠΎ прСдлагался Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ написаниСм скриптов (прСимущСствСнно Π½Π° языкС MATLAB) ΠΈ использованиСм Ρ€Π°Π·Π½Ρ‹Ρ… узкоспСциализированных GUI (Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ Π±Π΅Π· написания скриптов β€” срСд ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ модСлирования).

«ΠœΠ°Π½ΠΈΡ„Сст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹, Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ Masters of Science, ΠΏΠΎ своСй юношСской дурости, ΠΊΠ°ΠΊ огня, ΡΡ‚ΠΎΡ€ΠΎΠ½ΠΈΠ»ΠΈΡΡŒ написания ΠΊΠΎΠ΄Π°. Π’ΠΎΡ‚, ΠΎΠ½, допустим, Simulink ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ MathWorks: Π²ΠΎΡ‚ ΠΎΠ½ΠΈ Π±Π»ΠΎΠΊΠΈ, Π²ΠΎΡ‚ ΠΎΠ½ΠΈ связи, Π²ΠΎΡ‚ ΠΎΠ½ΠΈ всякого Ρ€ΠΎΠ΄Π° настройки ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ.

Π ΠΎΠ΄Π½ΠΎΠΉ ΠΈ понятный для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, занимавшСгося ΠΏΡ€Π΅ΠΆΠ΄Π΅ схСмотСхникой ΠΈ систСмотСхникой, Π²ΠΈΠ΄!

«ΠœΠ°Π½ΠΈΡ„Сст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://ch.mathworks.com/help/comm/examples/parallel-concatenated-convolutional-coding-turbo-codes.html

Π’Π°ΠΊ Π½Π°ΠΌ казалось…

Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Одной ΠΈΠ· практичСских Ρ€Π°Π±ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ сСмСстра Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° OFDM сигнала Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° «Methods for Modeling and Optimization». ИдСя вСсьма удачная: тСхнология ΠΈ ΠΏΠΎ сСй дСнь Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΈ довольно популярная Π² силу использования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² сСтях Wi-Fi ΠΈ LTE/LTE-A (Π² Π²ΠΈΠ΄Π΅ OFDMA). Π‘Π°ΠΌΠΎΠ΅ Ρ‚ΠΎ для магистров, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π²Ρ‹ΠΊΠΈ модСлирования Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌ систСм.

«ΠœΠ°Π½ΠΈΡ„Сст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ

И Π²ΠΎΡ‚ Π½Π° Ρ€ΡƒΠΊΠΈ Π½Π°ΠΌ Π²Ρ‹Π΄Π°ΡŽΡ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π’Π— с Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠ°Π΄Ρ€Π° (Π΄Π°Π±Ρ‹ Π½Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅), ΠΈ ΠΌΡ‹ накидываСмся Π½Π° ΡƒΠΆΠ΅ упомянутый Simulink… И ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ Π³ΠΎΠ»ΠΎΠ²Π΅:

  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ‚Π°ΠΈΡ‚ Π² сСбС ΡƒΠΉΠΌΡƒ нСизвСстных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с ΠΊΠΎΠ½Π΄Π°Ρ‡ΠΊΠ° β€” ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ²Π°Ρ‚ΠΎ.
  • ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΠΈ с числами произвСсти Π½ΡƒΠΆΠ½ΠΎ, Π²Ρ€ΠΎΠ΄Π΅, простыС, ΠΎΠ΄Π½Π°ΠΊΠΎ Π³ΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ приходится всё Ρ€Π°Π²Π½ΠΎ Π΄Π°ΠΉ Π±ΠΎΠΆΠ΅.
  • ΠšΠ°Ρ„Π΅Π΄Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎΠ΄Ρ‚ΠΎΡ€ΠΌΠ°ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‚ Π»ΠΈΡ…ΠΎΡ€Π°Π΄ΠΎΡ‡Π½ΠΎΠ³ΠΎ использованиС GUI, Π΄Π°ΠΆΠ΅ Π½Π° этапС сСрфинга ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ доступных Π±Π»ΠΎΠΊΠΎΠ².
  • Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΌΠ°, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Simulink. И Π½ΠΈΠΊΠ°ΠΊΠΈΡ…, собствСнно, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ².

Π”Π°, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄ΠΎΠ΄Π΅Π»Π°Π»ΠΈ, Π½ΠΎ Π΄ΠΎΠ΄Π΅Π»Π°Π»ΠΈ с Π³Ρ€ΠΎΠΌΠΊΠΈΠΌ Π²Ρ‹Π΄ΠΎΡ…ΠΎΠΌ облСгчСния.

ΠŸΡ€ΠΎΡˆΠ»ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, ΠΈ ΠΌΡ‹ подошли ΠΊ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ курса магистратуры. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ с использованиСм GUI стало ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΡΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠ»ΠΈ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ², хотя Π΅Ρ‰Ρ‘ ΠΈ Π½Π΅ достигало Ρ‚ΠΎΡ‡ΠΊΠΈ смСны ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹. МногиС ΠΈΠ· нас, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ мСня, прСодолСвая свою Π½Π΅ΠΌΠ°Π»ΡƒΡŽ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ Π½Π° раскачку, всё большС ΠΈ большС использовали Π² своих Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈΠΌΠ΅Π½Π½ΠΎ Matlab (ΠΏΡƒΡΡ‚ΡŒ ΠΈ Π² Π²ΠΈΠ΄Π΅ Toolbox’ΠΎΠ²), Π° Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ, казалось Π±Ρ‹, Simulink.

Π’ΠΎΡ‡ΠΊΠΎΠΉ Π² Π½Π°ΡˆΠΈΡ… сомнСниях стала Ρ„Ρ€Π°Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· студСнтов Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ курса (ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ Π² Россию):

  • Π—Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Ρ€Π΅ Π½Π° врСмя стаТировки, ΠΏΡ€ΠΎ Similink, MathCad ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΉ LabView β€” Π·Π° Π±ΡƒΠ³Ρ€ΠΎΠΌ всё ΠΏΠΈΡˆΡƒΡ‚ Π½Π° языкС MATLAB, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ собствСнно сам MatLab ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ «Π²Π΅Ρ€ΡΠΈΡŽ» Octave.

ЗаявлСниС оказалось Π²Π΅Ρ€Π½Ρ‹ΠΌ отчасти: Π² Π˜Π»ΡŒΠΌΠ΅Π½Π°Ρƒ спор ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ инструмСнтария Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π±Ρ‹Π» Ρ€Π΅ΡˆΠ΅Π½ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. ΠŸΡ€Π°Π²Π΄Π°, Π²Ρ‹Π±ΠΎΡ€ стоял ΠΏΠΎ большСй части ΠΌΠ΅ΠΆΠ΄Ρƒ языками MATLAB, Python ΠΈ C.

Π’ Ρ‚ΠΎΡ‚ ΠΆΠ΅ дСнь мСня взял Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π°Π·Π°Ρ€Ρ‚: Π° Π½Π΅ пСрСнСсти Π»ΠΈ свою Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ OFDM ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π² ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ? Just for fun.

И я приступил ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅.

Step by step

ВмСсто тСорСтичСских Π²Ρ‹ΠΊΠ»Π°Π΄ΠΎΠΊ я просто Π΄Π°ΠΌ ссылку Π½Π° эту ΠΏΡ€Π΅ΠΊΡ€Π°ΡΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ 2011 Π³ΠΎΠ΄Π° ΠΎΡ‚ tgx ΠΈ Π½Π° слайды ΠΏΠΎ физичСскому ΡƒΡ€ΠΎΠ²Π½ΡŽ LTE профСссора МишСль-Виля (Π’Π£ Π˜Π»ΡŒΠΌΠ΅Π½Π°Ρƒ). Π― Π΄ΡƒΠΌΠ°ΡŽ, этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно.

«Π˜Ρ‚Π°ΠΊ, β€” ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» я, β€” ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?»
ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ OFDM ΠΊΠ°Π΄Ρ€Π° (OFDM frame generator).

Π§Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ:

  • ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ символы
  • ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹Π΅ сигналы
  • Π½ΡƒΠ»ΠΈ (DC)

ΠžΡ‚ Ρ‡Π΅Π³ΠΎ (простоты Ρ€Π°Π΄ΠΈ) ΠΌΡ‹ абстрагируСмся:

  • ΠΎΡ‚ модСлирования цикличСского прСфикса (ΠΏΡ€ΠΈ Π·Π½Π°Π½ΠΈΠΈ основ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ½Ρ‹ΠΉ ΡƒΠΆΠ΅ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π°)

«ΠœΠ°Π½ΠΈΡ„Сст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ

Π‘Π»ΠΎΠΊ-схСма рассматриваСмой ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ ΠΌΡ‹ Π΄ΠΎ Π±Π»ΠΎΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π‘ΠŸΠ€ (IFFT). ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ сам β€” я ΠΎΠ±Π΅Ρ‰Π°Π» прСподаватСлям с ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈ для студСнтов.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ для сСбя Ρ‚Π΅Ρ…. Π·Π°Π΄Π°Π½ΠΈΠ΅:

  • фиксированноС количСство поднСсущих (sub-carriers);
  • фиксированная Π΄Π»ΠΈΠ½Π° ΠΊΠ°Π΄Ρ€Π°;
  • ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ноль Π² сСрСдину ΠΈ ΠΏΠΎ ΠΏΠ°Ρ€Π΅ Π½ΡƒΠ»Π΅ΠΉ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΈ ΠΊΠΎΠ½Ρ†Ρƒ ΠΊΠ°Π΄Ρ€Π° (ΠΈΡ‚ΠΎΠ³ΠΎ, 5 ΡˆΡ‚ΡƒΠΊ);
  • ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ символы ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ M-PSK ΠΈΠ»ΠΈ M-QAM, Π³Π΄Π΅ M β€” это порядок модуляции.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Π΅ΠΌ ΠΊ ΠΊΠΎΠ΄Ρƒ.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎ ссылкС.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

clear all; close all; clc

M = 4; % e.g. QPSK 
N_inf = 16; % number of subcarriers (information symbols, actually) in the frame
fr_len = 32; % the length of our OFDM frame
N_pil = fr_len - N_inf - 5; % number of pilots in the frame
pilots = [1; j; -1; -j]; % pilots (QPSK, in fact)

nulls_idx = [1, 2, fr_len/2, fr_len-1, fr_len]; % indexes of nulls

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ индСксы ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… символов, приняв прСдпосылку, Ρ‡Ρ‚ΠΎ ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹Π΅ сигналы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ΄Ρ‚ΠΈ Π΄ΠΎ ΠΈ/ΠΈΠ»ΠΈ послС Π½ΡƒΠ»Π΅ΠΉ:

idx_1_start = 4;
idx_1_end = fr_len/2 - 2;

idx_2_start = fr_len/2 + 2;
idx_2_end =  fr_len - 3;

Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ linspace, привСдя значСния ΠΊ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΈΠ· Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… Ρ†Π΅Π»Ρ‹Ρ…:

inf_idx_1 = (floor(linspace(idx_1_start, idx_1_end, N_inf/2))).'; 
inf_idx_2 = (floor(linspace(idx_2_start, idx_2_end, N_inf/2))).';

inf_ind = [inf_idx_1; inf_idx_2]; % simple concatenation

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ этому индСксы Π½ΡƒΠ»Π΅ΠΉ ΠΈ отсортируСм:

%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx); 

БоотвСтствСнно, индСксы ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹Ρ… сигналов β€” это всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅:

%numbers in range from 1 to frame length 
% that don't overlape with inf_and_nulls_idx vector
pilot_idx = setdiff(1:fr_len, inf_and_nulls_idx); 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΌΠΈ сигналами.

Π£ нас Π΅ΡΡ‚ΡŒ шаблон (пСрСмСнная pilots), ΠΈ, допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² наш ΠΊΠ°Π΄Ρ€ ΠΏΠΈΠ»ΠΎΡ‚Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΠ»ΠΈΡΡŒ ΠΈΠ· этого шаблона ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅. А ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΡƒΠ΄Ρ€ΠΈΡ‚ΡŒ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ β€” Π±Π»Π°Π³ΠΎ MATLAB позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ это с достаточным ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚ΠΎΠΌ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, сколько Ρ‚Π°ΠΊΠΈΡ… шаблонов помСщаСтся Π² ΠΊΠ°Π΄Ρ€ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ:

pilots_len_psudo = floor(N_pil/length(pilots));

Π”Π°Π»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· Π½Π°ΡˆΠΈΡ… шаблонов:

% linear algebra tricks:
mat_1 = pilots*ones(1, pilots_len_psudo); % rank-one matrix
resh = reshape(mat_1, pilots_len_psudo*length(pilots),1); % vectorization

И опрСдСляСм нСбольшой Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ кусок шаблона β€” «Ρ…вост», Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΊΠ°Π΄Ρ€:

tail_len = fr_len  - N_inf - length(nulls_idx) ...
                - length(pilots)*pilots_len_psudo; 
tail = pilots(1:tail_len); % "tail" of pilots vector

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹Π΅ символы:

vec_pilots = [resh; tail]; % completed pilots vector that frame consists

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ символам, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ сформируСм сообщСниС ΠΈ ΠΏΡ€ΠΎΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ:

message = randi([0 M-1], N_inf, 1); % decimal information symbols

if M >= 16
    info_symbols = qammod(message, M, pi/4);
else
    info_symbols = pskmod(message, M, pi/4);
end 

Всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ! Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°Π΄Ρ€:

%% Frame construction
frame = zeros(fr_len,1);
frame(pilot_idx) = vec_pilots;
frame(inf_ind) = info_symbols

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅:

frame =

   0.00000 + 0.00000i
   0.00000 + 0.00000i
   1.00000 + 0.00000i
  -0.70711 - 0.70711i
  -0.70711 - 0.70711i
   0.70711 + 0.70711i
   0.00000 + 1.00000i
  -0.70711 + 0.70711i
  -0.70711 + 0.70711i
  -1.00000 + 0.00000i
  -0.70711 + 0.70711i
  -0.70711 - 0.70711i
   0.00000 - 1.00000i
   0.70711 + 0.70711i
   1.00000 + 0.00000i
   0.00000 + 0.00000i
   0.00000 + 1.00000i
   0.70711 - 0.70711i
  -0.70711 + 0.70711i
  -1.00000 + 0.00000i
  -0.70711 + 0.70711i
   0.70711 + 0.70711i
   0.00000 - 1.00000i
  -0.70711 - 0.70711i
   0.70711 + 0.70711i
   1.00000 + 0.00000i
   0.70711 - 0.70711i
   0.00000 + 1.00000i
   0.70711 - 0.70711i
  -1.00000 + 0.00000i
   0.00000 + 0.00000i
   0.00000 + 0.00000i

«ΠšΠ°ΠΉΡ„!» β€” ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» я довольно ΠΈ Π·Π°ΠΊΡ€Ρ‹Π» Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ. Ушло Ρƒ мСня Π½Π° всё ΠΏΡ€ΠΎ всё ΠΏΠ°Ρ€Ρƒ часов: Π²ΠΊΠ»ΡŽΡ‡Π°Ρ написаниС ΠΊΠΎΠ΄Π°, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… матлабовских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°Π½ΠΈΠ΅ матСматичСских Ρ‚Ρ€ΡŽΠΊΠΎΠ².

КакиС Π²Ρ‹Π²ΠΎΠ΄Ρ‹ я Ρ‚ΠΎΠ³Π΄Π° сдСлал

Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅:

  • ΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ приятно ΠΈ сродни поэзии!
  • НаписаниС скриптов β€” Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ исслСдований для области Communication and Signal Processing.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅:

  • НС Π½Π°Π΄ΠΎ ΠΏΠ°Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΡƒΡˆΠΊΠΈ ΠΏΠΎ Π²ΠΎΡ€ΠΎΠ±ΡŒΡΠΌ (Ссли такая учСбная Ρ†Π΅Π»ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ стоит): использовав Simulink, ΠΌΡ‹ взялись Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ простой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π°Π²ΠΎΡ€ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΌ инструмСнтом.
  • GUI β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ содСрТится «ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ» β€” Π»ΡƒΡ‡ΡˆΠ΅.

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡƒΠΆΠ΅ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ студСнтом, я Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ студСнчСской Π±Ρ€Π°Ρ‚ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π”Π΅Ρ€Π·Π°ΠΉΡ‚Π΅!

ΠŸΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΈΠΌ. Π‘ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈ с любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π»ΠΈΡ…Π° Π±Π΅Π΄Π° β€” Π½Π°Ρ‡Π°Π»ΠΎ. А Π½Π°Ρ‡Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π½ΡŒΡˆΠ΅: Ссли Π²Ρ‹ ΡƒΡ‡Π΅Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ просто Ρ‚Π΅Ρ…Π½Π°Ρ€ΡŒ β€” Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ этот Π½Π°Π²Ρ‹ΠΊ Π²Π°ΠΌ понадобится.

  • Π’Ρ€Π΅Π±ΡƒΠΉΡ‚Π΅!

Π’Ρ€Π΅Π±ΡƒΠΉΡ‚Π΅ ΠΎΡ‚ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ прогрСссивных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ инструмСнтов. Если это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, сколько-Ρ‚ΠΎ возмоТно…

  • Π’Π²ΠΎΡ€ΠΈΡ‚Π΅!

Π“Π΄Π΅ ΠΆΠ΅ Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠ΅Ρ€Π΅Π±ΠΎΠ»Π΅Ρ‚ΡŒ всСми болячками Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΊΠ°ΠΊ Π½Π΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹? Π’Π²ΠΎΡ€ΠΈΡ‚Π΅ ΠΈ ΠΎΡ‚Ρ‚Π°Ρ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ своё мастСрство β€” ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ Ρ‡Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅.

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты всСх стран, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ!

P.S.

Π”Π°Π±Ρ‹ Π·Π°ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своё прямоС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ студСнчСству, ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽ памятноС Ρ„ΠΎΡ‚ΠΎ 2017 Π³ΠΎΠ΄Π° с двумя Ρ€Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ: ΠŸΠ΅Ρ‚Π΅Ρ€ΠΎΠΌ Π¨Π°Ρ€Ρ„Ρ„ΠΎΠΌ (справа) ΠΈ ΠΠ»ΡŒΠ±Π΅Ρ€Ρ‚ΠΎΠΌ Π₯арисовичСм Π“ΠΈΠ»ΡŒΠΌΡƒΡ‚Π΄ΠΈΠ½ΠΎΠ²Ρ‹ΠΌ (слСва).

«ΠœΠ°Π½ΠΈΡ„Сст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов ΠΈΠ· смСТных ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ» ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ я дошСл Π΄ΠΎ ΠΆΠΈΠ·Π½ΠΈ Ρ‚Π°ΠΊΠΎΠΉ

Π‘Ρ‚ΠΎΠΈΠ»ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ€Π°Π΄ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΡΡ‚ΡŽΠΌΠΎΠ²! (ΡˆΡƒΡ‡Ρƒ)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ