ProHoster > Blog > berita internet > "Manifesto untuk memulakan pengaturcara daripada kepakaran yang berkaitan" atau bagaimana saya sampai ke tahap ini dalam hidup
"Manifesto untuk memulakan pengaturcara daripada kepakaran yang berkaitan" atau bagaimana saya sampai ke tahap ini dalam hidup
Artikel saya hari ini adalah pemikiran yang lantang daripada seseorang yang mengambil jalan pengaturcaraan hampir secara tidak sengaja (walaupun secara semula jadi).
Ya, saya faham bahawa pengalaman saya hanyalah pengalaman saya, tetapi nampaknya ia sesuai dengan trend umum. Selain itu, pengalaman yang diterangkan di bawah lebih berkaitan dengan bidang aktiviti saintifik, tetapi apa yang bukan main-main - ia boleh berguna di luar.
Secara umum, khusus untuk semua pelajar semasa daripada bekas pelajar!
Harapan
Apabila saya menamatkan ijazah sarjana muda saya dalam Teknologi Maklumat dan Sistem Komunikasi pada tahun 2014, saya hampir tidak tahu apa-apa tentang dunia pengaturcaraan. Ya, seperti kebanyakan orang lain, saya mengambil subjek "Sains Komputer" pada tahun pertama saya - tetapi, Tuhan, ia adalah pada tahun pertama saya! Ia adalah keabadian!
Secara umum, saya tidak mengharapkan apa-apa yang berbeza daripada ijazah sarjana muda, dan apabila saya memasuki program sarjana "Komunikasi dan Pemprosesan Isyarat" Institut Teknologi Baru Jerman-Rusia.
Tetapi sia-sia...
Kami hanya pengambilan kedua, dan lelaki dari yang pertama masih mengemas beg mereka untuk Jerman yang jauh (magang mengambil masa enam bulan pada tahun kedua ijazah sarjana). Dalam erti kata lain, tiada seorang pun dari kalangan terdekat yang telah menemui kaedah pendidikan Eropah secara serius, dan tiada siapa yang bertanya tentang butirannya.
Pada tahun pertama kami, sudah tentu, kami mempunyai pelbagai jenis amalan, di mana kami biasanya ditawarkan secara demokratik pilihan antara menulis skrip (terutamanya dalam bahasa MATLAB) dan menggunakan pelbagai GUI yang sangat khusus (dalam erti kata tanpa menulis skrip - simulasi persekitaran pemodelan).
Tidak perlu dikatakan, kami, Sarjana Sains masa depan, daripada kebodohan masa muda kami, mengelak daripada menulis kod seperti api. Di sini, sebagai contoh, ialah Simulink dari MathWorks: berikut adalah bloknya, inilah sambungannya, di sini adalah semua jenis tetapan dan suis.
Pandangan yang asli dan boleh difahami oleh seseorang yang pernah bekerja dalam reka bentuk litar dan kejuruteraan sistem!
Salah satu kerja amali pada semester pertama ialah pembangunan transceiver isyarat OFDM sebagai sebahagian daripada subjek "Kaedah untuk Pemodelan dan Pengoptimuman". Idea ini sangat berjaya: teknologi ini masih relevan dan agak popular kerana penggunaannya, contohnya, dalam rangkaian Wi-Fi dan LTE/LTE-A (dalam bentuk OFDMA). Ini adalah perkara terbaik untuk sarjana untuk mempraktikkan kemahiran mereka dalam memodelkan sistem telekom.
Dan kini kami diberi beberapa pilihan spesifikasi teknikal dengan parameter bingkai yang jelas tidak praktikal (supaya tidak mencari penyelesaian di Internet), dan kami menerkam Simulink yang telah disebutkan... Dan kami dipukul di kepala dengan teko daripada realiti:
Setiap blok penuh dengan banyak parameter yang tidak diketahui, yang menakutkan untuk berubah pada penurunan topi.
Manipulasi dengan nombor perlu dilakukan, nampaknya, mudah, tetapi anda masih perlu kecoh, Allah melarang.
Mesin katedral ketara perlahan daripada penggunaan GUI yang terburu-buru, walaupun pada peringkat melayari perpustakaan blok yang tersedia.
Untuk menyelesaikan sesuatu di rumah, anda perlu mempunyai Simulink yang sama. Dan, sebenarnya, tiada alternatif.
Ya, pada akhirnya kami, sudah tentu, menyelesaikan projek itu, tetapi kami menyelesaikannya dengan hembusan nafas lega yang kuat.
Beberapa waktu berlalu, dan kami sampai ke penghujung tahun pertama ijazah sarjana. Jumlah kerja rumah yang menggunakan GUI mula menurun secara berkadar dengan peningkatan dalam perkadaran subjek Jerman, walaupun ia masih belum mencapai titik anjakan paradigma. Ramai di antara kita, termasuk saya, mengatasi amplitud yang besar untuk membina, semakin banyak menggunakan Matlab dalam projek saintifik kami (walaupun dalam bentuk Kotak Alat), dan bukannya Simulink yang kelihatan biasa.
Perkara yang menjadi keraguan kami ialah ungkapan salah seorang pelajar tahun dua (mereka baru sahaja pulang ke Rusia pada masa itu):
Lupakan, sekurang-kurangnya untuk tempoh latihan, tentang Similink, MathCad dan LabView lain - di atas bukit semuanya ditulis dalam MATLAB, menggunakan MatLab sendiri atau Oktaf "versi" percumanya.
Kenyataan itu ternyata sebahagiannya benar: di Ilmenau, pertikaian mengenai pilihan alat juga tidak diselesaikan sepenuhnya. Benar, pilihannya kebanyakannya antara MATLAB, Python dan C.
Pada hari yang sama, saya terpesona oleh keseronokan semula jadi: tidakkah saya patut memindahkan bahagian saya daripada model pemancar OFDM ke dalam bentuk skrip? Hanya untuk bersuka-ria.
βJadi,β saya fikir, βmari kita ulangi, apakah yang akan kita jadikan model?β
Kami akan model Penjana bingkai OFDM (penjana bingkai OFDM).
Perkara yang akan disertakan:
simbol maklumat
isyarat juruterbang
sifar (DC)
Apa (demi kesederhanaan) kami abstrak daripada:
daripada memodelkan awalan kitaran (jika anda tahu asasnya, menambahnya tidak sukar)
Gambar rajah blok model yang sedang dipertimbangkan. Kami akan berhenti di blok FFT songsang (IFFT). Untuk melengkapkan gambar, semua orang boleh meneruskan selebihnya sendiri - Saya berjanji kepada guru-guru dari jabatan untuk meninggalkan sesuatu untuk pelajar.
Mari kita tentukan sendiri. senaman:
bilangan tetap sub-pembawa;
panjang bingkai tetap;
kita mesti menambah satu sifar di tengah dan sepasang sifar pada permulaan dan akhir bingkai (jumlah, 5 keping);
simbol maklumat dimodulasi menggunakan M-PSK atau M-QAM, di mana M ialah susunan modulasi.
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
Kini kami menentukan indeks simbol maklumat, menerima premis bahawa isyarat perintis semestinya perlu pergi sebelum dan/atau selepas sifar:
%concatenation and ascending sorting
inf_and_nulls_idx = union(inf_ind, nulls_idx);
Sehubungan itu, indeks isyarat perintis adalah segala-galanya:
%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);
Sekarang mari kita fahami isyarat perintis.
Kami mempunyai templat (pembolehubah juruterbang), dan katakan kami mahu juruterbang daripada templat ini dimasukkan ke dalam bingkai kami secara berurutan. Sudah tentu, ini boleh dilakukan dalam gelung. Atau anda boleh bermain sedikit rumit dengan matriks - mujurlah MATLAB membenarkan anda melakukan ini dengan keselesaan yang mencukupi.
Mula-mula, mari kita tentukan bilangan templat ini sesuai sepenuhnya ke dalam bingkai:
pilots_len_psudo = floor(N_pil/length(pilots));
Seterusnya, kami membentuk vektor yang terdiri daripada templat kami:
Dan kami mentakrifkan vektor kecil yang mengandungi hanya sekeping templat - "ekor", yang tidak sesuai sepenuhnya ke dalam bingkai:
tail_len = fr_len - N_inf - length(nulls_idx) ...
- length(pilots)*pilots_len_psudo;
tail = pilots(1:tail_len); % "tail" of pilots vector
Kami mendapat watak perintis:
vec_pilots = [resh; tail]; % completed pilots vector that frame consists
Mari kita beralih kepada simbol maklumat, iaitu, kita akan membentuk mesej dan memodulasinya:
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
"Bliss!" β Saya berfikir dengan puas dan menutup komputer riba. Saya mengambil masa beberapa jam untuk melakukan segala-galanya: termasuk menulis kod, mempelajari beberapa fungsi Matlab dan berfikir melalui helah matematik.
Apakah kesimpulan yang saya buat ketika itu?
Subjektif:
Kod penulisan adalah menyenangkan dan serupa dengan puisi!
Skrip ialah kaedah penyelidikan yang paling mudah untuk bidang Komunikasi dan Pemprosesan Isyarat.
Objektif:
Tidak perlu menembak burung pipit dari meriam (melainkan matlamat pendidikan seperti itu, sudah tentu, berbaloi): menggunakan Simulink, kami menyelesaikan masalah mudah dengan alat yang canggih.
GUI adalah baik, tetapi memahami apa yang terkandung "di bawah tudung" adalah lebih baik.
Dan sekarang, kerana jauh dari menjadi seorang pelajar, saya ingin mengatakan perkara berikut kepada persaudaraan pelajar:
Tenanglah!
Cuba tulis kod, walaupun ia buruk pada mulanya. Dengan pengaturcaraan, seperti mana-mana aktiviti lain, bahagian yang paling sukar adalah permulaan. Dan lebih baik untuk bermula lebih awal: jika anda seorang saintis atau hanya seorang juruteknik, lambat laun anda akan memerlukan kemahiran ini.
Permintaan!
Tuntut pendekatan dan alat progresif daripada guru dan penyelia. Jika ini boleh, sudah tentu...
Cipta!
Di manakah lebih baik untuk mengatasi semua luka seorang pemula, jika tidak dalam rangka program pendidikan? Cipta dan asah kemahiran anda - sekali lagi, lebih cepat anda bermula, lebih baik.
Aspirasi pengaturcara dari semua negara, bersatulah!
PS
Untuk merakam hubungan langsung saya dengan pelajar, saya melampirkan foto kenangan 2017 bersama dua rektor: Peter Scharff (di sebelah kanan) dan Albert Kharisovich Gilmutdinov (di sebelah kiri).
Ia berbaloi untuk menamatkan program sekurang-kurangnya untuk pakaian ini! (gurau)