Daži izklaidei, daži, lai pierādītu esamību vai atspēkotu hipotēzi, daži, lai izvingrinātu smadzenes (ceļojot pa Kleina pudeles virsmu vai četrdimensiju telpā), bet simtiem cilvēku ir radījuši "ezotēriskas" programmēšanas valodas. Esmu izgājis cauri apmēram 150 no šīm valodām, un es nekad vairs nebūšu tāds pats.

“Argh!”, “Oof!”, “2-ill”, “Nhohnhehr”, “Noit o” mnain gelb”, “DZZZZ”, “Ypsilax”, “YABALL”, fuckfuck - tās ir burvestības, dzeja ir tikai vārdi ... zem catom - kodu piemēri uzkrītošākajās programmēšanas valodās.

Zaķa bedre ir dziļa.

INTERCAL (Tjūringa-pabeigts)



Dons Vudss un Džims Lions

Viena no vecākajām ezotēriskajām programmēšanas valodām. Pēc veidotāju domām, tās nosaukums nozīmē “kompilatora valoda bez izrunājama akronīma”. Valodu 1972. gadā radīja studenti Dons Vudss un Džeimss M. Lions kā parodiju par esošajām programmēšanas valodām un garīgo vingrošanu.

Sveika pasaule

Katrai programmas komandai var norādīt varbūtību, ar kādu tā tiks izpildīta, programmai startējot. Turklāt ir komandas, kas bloķē turpmāko noteikta veida komandu izpildi vai mainīgo lielumu izmaiņas.

Sveika pasaule!

// Stīvena Makgreāla “Sveika pasaule”.
// Ņemiet vērā, ka šajā pirmkodā paustie viedokļi ne vienmēr sakrīt ar viedokļiem

Gr34t l33tN3$$?
M3h…
iT 41n"t s0 7RICY.

L33t sP33k ir U8er keWl 4nD eA5y wehn u 7hink 1t tHr0uGh.
1f u w4nn4be UB3R-l33t u d3f1n1t3lY w4nt in 0n a b4d4sS h4xX0r1ng s1tE!!! ;lpp
w4r3Z c0ll3cT10n2 r 7eh l3Et3r!

Qu4k3 cL4nS r 7eh bE5t tH1ng 1n teh 3nTIr3 w0rlD!!!
g4m3s wh3r3 u g3t līdz 5h00t ppl r 70tAl1_y w1cK1d!!!
I"M teh fr4GM4ster AN I"L t0t41_1Ly WWiE phr34k1ng fL00r ***j3d1 5tYlE*** ar y0uR h1dE!!! L0L0L0L!
t3lEphR4gG1nG l4m3rs wit my M8tes r34lLy k1kK$ A$$

L33t hAxX0r$ Cre4t3 u8er- k3wL 5tUff lIkE n34t pR0gR4mm1nG slaucītsGe$…
sa
n080DY unDer5tAnD$ l33t RUNĀ 4p4rT fr0m j3d1!!!
50 mE BĒRNS 0n A me$$4gEb04rD m1ghT 8E a r0xX0r1nG hAxX0r wH0 w4nT2 t0 bR34k 5tuFf, 0r mAyb3 ju5t sh0w 7eh way5 l33t ppl0dl0an!!! hE i5 teh u8ER!!!
1t m1ght 8E 5omE v1rus 0r a Pl4ySt4tI0n ch34t c0dE.
1t 3v3n MiTe jUs7 s4y “H3LL0 W0RLD!!!” u ju5t can"T gu3s5.
tH3r3"s n3v3r aY P0iNt l00KiNg sC3pT1c4l c0s th4t, be1_1Ev3 iT 0r n0t, 1s kas th1s 1s!!!

5uxX0r5!!!L0L0L0L0L!!!

Arnolds Č

Terminatora programmēšanas valoda.

Sveika pasaule!

Labi!

Vai nu orangutānu valoda, vai arī Okamas Viljama sapnis.

Sveika pasaule!

Pavārs

Deivida Morgana-Mara izstrādāta ezotēriska programmēšanas valoda, kurā programmas ir līdzīgas kulinārijas receptēm. Katra programma šajā valodā sastāv no nosaukuma, mainīgo lielumu un to vērtību saraksta un instrukciju saraksta. Mainīgos var nosaukt tikai ar pamata pārtikas produktu nosaukumiem. Tiek izsaukta kaudze, kurā tiek ievietotas mainīgo vērtības. maisīšanas traukā, un darbības mainīgo lielumu manipulēšanai ir maisīšana, maisīšana utt.

Sveika pasaule

Sveiki, pasaules suflē.

Sastāvdaļas.
72 g pupiņu
101 ola
108 g speķa
111 glāzes eļļas
32 cukini
119 ml ūdens
114 g sarkanā laša
100 g dižonas sinepju
33 kartupeļi

Metode.
Ielieciet kartupeļus maisīšanas traukā.
Ielieciet Dižonas sinepes maisītāja traukā.

Ielieciet sarkano lasi maisītāja traukā.

Ielejiet ūdeni maisīšanas traukā.
Ielieciet cukīni maisītāja traukā.
Ielejiet eļļu maisīšanas traukā.
Ielieciet speķi maisītāja traukā.
Ielieciet speķi maisītāja traukā.
Ielejiet olas maisīšanas traukā.
Ielieciet pupiņas maisītāja traukā.
Sašķidriniet maisītāja trauka saturu.
Ielejiet maisītāja trauka saturu cepamajā traukā.

Tagad, kad jūs saprotat programmēšanas jēdzienu, mēs apskatīsim pirmkodu - tā galvenās sastāvdaļas un to, kā ar tiem strādāt.

Šis raksts ir daļa no rakstu sērijas par attīstību iesācējiem.

2. daļa — avota kods

Daudzām programmēšanas valodām ir daudz bibliotēku. Tos parasti sauc SDK(programmatūras izstrādes komplekti). Ielādēta kopā ar kompilatoru turpmākai tehnoloģiju, lietojumprogrammu un projektu izveidei. Tur ir arī ietvarus, kas izveidota, lai atvieglotu projekta izstrādi un apvienotu dažādas tā sastāvdaļas.

Dažus identifikatorus, kas iekļauti atlasītajā valodā, nevar izmantot kā lietotāja identifikatoru. Piemērs ir vārds virkne Java valodā. Šādi identifikatori kopā ar atslēgvārdiem tiek izsaukti Rezervēti vārdi. Viņi arī ir īpaši.

Visi atslēgvārdi ir rezervēti. Turklāt jūsu izvēlētajiem vārdiem ir jābūt saprotamiem tiem, kuri tos redz pirmo reizi.

Pamatdatu veidi

Avota kods ir dažādu veidu datu koncentrācija: cipariem(3, 5,7, -100, 3,142) un simboliem(M, A). Dažas programmēšanas valodas sadala skaitļus apakštipos, piemēram, veseli skaitļi(veseli skaitļi).

Veseli skaitļi var būt ikonisks Un neparakstīts, lieli un mazi. Pēdējie faktiski ir atkarīgi no šādiem numuriem rezervētās atmiņas apjoma. Ir skaitļi ar decimāldaļām, ko parasti sauc dubultā Un peldēt, atkarībā no valodas, kuru mācāties.

Ir arī loģiski datu veidi Būlašī lieta taisnība vai viltus.

Sarežģīti datu veidi

Iepriekš minētie veidi ir pazīstami kā elementāri, primārie vai pamata. No šiem pamata datu veidiem mēs varam izveidot sarežģītākus datu tipus.

Masīvs( Masīvs) ir kompleksā tipa vienkāršākā forma. Līnija ( Stīga) ir rakstzīmju masīvs. Mēs nevaram iztikt bez šiem datiem un bieži tos izmantojam, rakstot kodu.

Rakstzīmju kombinācija ir līniju. Izmantojot analoģiju, virkne datoram nozīmē, ka vārds pieder cilvēkam. Vārds "termometrs" sastāv no 9 rakstzīmēm - mēs to vienkārši saucam par rakstzīmju virkni. Stīgu apstrāde ir plaša tēma, kas jāapgūst katram topošajam programmētājam.

Sarežģīti datu tipi nāk ar lielāko daļu izmantoto programmēšanas valodu. Ir arī citas, piemēram, klašu sistēmas. Šī parādība ir pazīstama arī kā objektorientētā programmēšana ( OOP).

Mainīgie lielumi

Mainīgie ir vienkārši atmiņas vietu nosaukumi. Dažreiz jums ir jāsaglabā dati avota kodā vietā, kur varat tos izsaukt, lai tos izmantotu. Parasti tā ir atmiņas vieta, kuru rezervē kompilators/tulks. Mums ir jānosauc šīs atmiņas šūnas, lai mēs tās varētu atcerēties vēlāk. Apsveriet tālāk norādīto Python koda fragmentu:

pet_name = "Nīlzirgs" izdrukāt pet_name

pet_name = "nīlzirgs"

izdrukāt mājdzīvnieka_nosaukumu

mājdzīvnieka vārds– mainīgā lieluma piemērs un saglabāto datu veids mājdzīvnieka vārds, ir virkne, kas padara mainīgo par virkni. Ir arī cipari. Tādējādi mainīgie tiek klasificēti pēc datu veida.

Konstantes

Konstantes ir vērtības, kas nemainās visā programmas dzīves ciklā. Visbiežāk viņu nosaukumos tiek izmantoti lielie burti. Dažas valodas atbalsta pastāvīgu vērtību izveidi, bet dažas ne.

Pastāv spēcīgi drukātas programmēšanas valodas, kurā katram mainīgajam ir jābūt noteikta veida. Kad esat atlasījis veidu, vairs nevarēsiet to mainīt. Java ir labs šādas valodas piemērs.

Citi nenodrošina šīs funkcijas. Viņi ir brīvi rakstīts vai dinamiskās programmēšanas valodas. Piemērs - Python.

Lūk, kā deklarēt nemainīgu vērtību JavaScript:

JavaScript

const petName = "Nīlzirgs"

const petName = "Nīlzirgs"

Literāļi

Katrā avota kodā ir datu veidi, kas tiek izmantoti visā un mainās tikai tad, ja tie tiek rediģēti. Šis burtiski, ko nevajadzētu sajaukt ar mainīgajiem vai konstantēm. Neviens pirmkods nevar iztikt bez tiem. Literāļi var būt virknes, skaitļi, decimāldaļas vai jebkurš cits datu tips.

Iepriekš minētajā fragmentā vārds "Hippo" ir virknes burts. Līdz avota koda rediģēšanai tas vienmēr būs "Hippo". Kad iemācīsities kodēt, jūs uzzināsit, kā manipulēt ar burtiem tā, lai lielākā daļa koda netiktu mainīta.

Pieturzīmes/simboli

Lielākajā daļā rakstīto programmu jūs atradīsit dažādas pieturzīmes atkarībā no izvēlētās programmēšanas valodas. Piemēram, Java izmanto vairāk pieturzīmju nekā Python.

Pamatrakstzīmes ietver komatu ( , ), semikolu ( ; ), kols ( : ), cirtaini breketes ( {} ), parastās iekavas ( () ), kvadrātiekavas (), pēdiņas ( «» vai » ), vertikāla josla ( | ), slīpsvītra ( \ ), punkts ( . ), jautājuma zīme ( ? ), ratiņi ( ^ ) un procenti ( % ).

Laipni lūdzam programmēšanas pasaulē, kur pieturzīmes ir jūsu labākie draugi. Drīz jūs atklāsiet, ka jūsu kodā vienmēr ir daudz to.

Operatori

Iespēja, ka rakstīsit pirmkodu, lai veiktu kādu darbību, ir ārkārtīgi liela. Visas mūsu izmantotās programmēšanas valodas ietver daudzus operatorus. Starp izmantotajiem ir papildinājums ( + ), nodaļa ( / ) reizināšana ( * ), atņemšana ( ) un lielāks par zīmi ( > ).

Operatorus parasti klasificē šādi:

  1. Piešķiršanas operatori. Dažreiz tos interpretē kā vienāds, kas vainas. Vienlīdzību izmanto, lai salīdzinātu divas vērtības. Bet, piemēram, piešķiršanas operators piešķir vērtību mainīgajam pet_name = 'nīlzirgs'
  2. Aritmētiskie operatori. Sastāv no operatoriem, lai veiktu aritmētiskos uzdevumus, piemēram, saskaitīšanu un atņemšanu. Dažas programmēšanas valodas nodrošina aritmētiskos operatorus, bet citās to arsenālā var nebūt. Piemēram, moduļa/atlikuma operators ( % ) atgriež atlikušās sadalīšanas operācijas.
  3. Relāciju operatori. Izmanto vērtību salīdzināšanai. Tajos ietilpst lielāks par, mazāks par, vienāds ar, nav vienāds ar. To prezentācija ir atkarīga arī no tā, kādu programmēšanas valodu jūs mācāties. Dažam PL tas nav vienāds - ir <> , citiem - != vai !== .
  4. Loģiskie operatori. Izmanto loģisku darbību veikšanai. Parasti izmantotie loģiskie operatori ir Un, vai, . Dažās valodās šie operatori tiek attēloti kā īpašās rakstzīmes. Piemēram, && pārstāvēt loģiski Un, || - Priekš vai, Un ! - Priekš . Ir ierasts novērtēt loģiskās vērtības, izmantojot Būla vērtības taisnība vai viltus.

komentāri

Dokumentācija būs svarīgs plānošanas pasākumu aspekts. Šādi jūs izskaidrojat savu kodu citiem programmētājiem. Tas tiek darīts, izmantojot komentārus, kas tiek pievienoti dažādām koda daļām. Ar komentāriem varat palīdzēt citiem programmētājiem, izmantojot savu rakstīto programmu.

Kompilators ignorē koda rindas, kas ir komentāri.

Komentāru deklarācija dažādās valodās ir atšķirīga. Piemēram, # izmanto komentāru ievadīšanai Python.

Šeit ir Python komentāra piemērs:

# programmas fragments Fibonači aprēķināšanai no N skaitļiem

Java

// rekursīvā ieviešana Factorial import java.util.Scanner; class RecursiveFactorial (publisks statisks void main(String args) (Skeneris input=new Scanner(System.in); System.out.print("Atrast faktoriālu: "); int num=input.nextInt(); System.out .println("Factoriāls no "+num+" = "+fact(num)); ) statisks garš fakts(int n) ( if(n)< 2) return 1; return n * fact(n-1); } }

Mūsdienās daudzi uzņēmumi, kā arī privātpersonas izjūt nepieciešamību pēc savas mājas lapas, tāpēc informācija par interneta projektu izstrādes un veicināšanas tēmu ir tik pieprasīta. Daudzus interesē jautājums - kā izveidot savu vietne, programmas kods kam tas ir kā pamats mājai? Mēģināsim izprast šo jautājumu, iedziļinoties tīmekļa izstrādes tēmā.

Vietne nav tikai teksta, saišu, attēlu un krāsainu baneru kolekcija, tā ir arī programmas kods, kas darbojas lietotāja datorā vai servera pusē. Un, ja šodien gandrīz ikviens var izveidot vajadzīgā formāta attēlus vajadzīgajā izšķirtspējā un kvalitātē, izmantojot gatavus attēlus no interneta vai jebkura populāra grafiskā redaktora, tad izveidojiet vietnes kods nespeciālistam tas ir pilns ar ievērojamām grūtībām.

Lietojumprogrammu un interneta projekta kvalitāte kopumā lielā mērā ir atkarīga no programmētāja prasmēm, kas izstrādā vietni, kuras programmas kodā var būt kļūdas, kas lielā mērā ietekmē tīmekļa lapu ielādes ātrumu un daudzus citus visas vietnes darbības aspektus. vietne, tostarp tās, kas saistītas ar drošību. Tāpēc, veidojot jebkuru vietni, kļūdu noteikšana un novēršana kodā ir obligāta sastāvdaļa. Sarežģītas korporatīvās vietnes izstrādi vislabāk ir uzticēt speciālistiem (ja tāds neesat), jo dažas kļūdas ir grūti atklāt, un daudzas no tām var vēl vairāk novest pie lēnas ielādes un nepareizas tīmekļa lapu parādīšanas uzņēmuma pārlūkprogrammās. interneta lietotāju datori. Pārāk ilga ielāde var izraisīt apmeklētāju aizplūšanu no vietnes un trafika kvalitātes pazemināšanos, kas samazina komerciālo interneta projektu izmantošanas peļņu un efektivitāti.

Vispirms HTML un CSS

Tīmekļa dokumenta pamatā ir kods, kas rakstīts HTML iezīmēšanas valodā. Iezīmēšanas valodu nevajadzētu jaukt ar programmēšanas valodu, un tā faktiskā atšķirība ir uzrakstīta detalizēti. Principā, izmantojot komandu komplektu, ko HTML piedāvā vietnes izstrādātājam, var iestatīt visus nepieciešamos statiskā tīmekļa dokumenta parametrus - elementu izkārtojumu (bloka marķējumu), virsrakstus, rindkopas, tabulas, attēlus utt. Un ar CSS palīdzību, kas ir īpašs HTML papildinājums, jūs varat novietot visus uzskaitītos iezīmēšanas objektus, mainīt to stilu - krāsu, izmēru, formātu utt.

Pēc tam JavaScript

Interneta lapās darbojas interaktīvie un animēti elementi, piemēram, baneri, atzīmes, atgriezeniskās saites veidlapas, pateicoties servera vai klienta programmēšanas valodās rakstītu skriptu un koda klātbūtnei. Skripti, kas izstrādāti, izmantojot JavaScript programmēšanas valodu, ir ļoti populāri. Šādi klientu skripti savā darbā neizmanto servera iespējas un tiek izpildīti lietotāja datora pusē, tas ir, pārlūkprogrammā. Tas padara JavaScript lietojumprogrammas vienkāršas un ātras.

Un visbeidzot PHP

Ja nepieciešams rakstīt sarežģītus un apjomīgus kodus, piemēram, forumiem vai viesu grāmatām, programmētāji pēc palīdzības vēršas pie servera puses programmēšanas valodām, un jo īpaši uz . PHP kodi tiek izpildīti servera pusē, tāpēc to darbība var būt nedaudz lēnāka atkarībā no savienojuma ātruma ar attālo datoru un tā noslogotības. Izmantojot PHP un SQL komandas (speciāla vaicājumu valoda relāciju datu bāzei), var organizēt mājas lapas mijiedarbību ar datu bāzēm un veidot interaktīvus interneta projektus – forumus, interneta veikalus, ziņojumu dēļus, dažādus direktorijus u.c.

Vietnes pamatā ir programmas kods pēdējo reizi modificēja: 2016. gada 3. martā Administrators

2014. gada 3. septembrī plkst. 16:07

Vai jums tiešām ir nepieciešams avota kods?

  • Mikrokontrolleru programmēšana
  • Tulkošana
Daudzās zināšanās, daudzās bēdās
Ja jautājat jebkuram programmaparatūras izstrādātājam, vai viņš vēlas piekļūt izmantotās reāllaika operētājsistēmas pirmkodam, atbilde gandrīz noteikti ir jā. Tas pats attiecas uz jebkuru iegādāto programmatūru. Vai tā ir saprātīga atbilde visos gadījumos un kāpēc avota kods dažreiz ir nepieciešams un dažreiz tas ir mazāk noderīgs, nekā gaidīts?

Ir vairāki galvenie kritēriji, ko inženieri izmanto, izvēloties reāllaika operētājsistēmu (RTOS). Daudzi no tiem - izmaksas, funkcionalitāte, licencēšana, atbalsts - neapšaubāmi ir ļoti svarīgi (jo īpaši izmaksas - tā ir mūsu realitāte). Tomēr cits kritērijs - pirmkoda pieejamība - var nebūt tik svarīgs, bet vienmēr tiek novērtēts kā spēcīgs faktors.

Avota koda pieejamība nenozīmē, ka tas tiek automātiski nodrošināts bez maksas. Šī pieeja attiecas tikai uz atvērtā pirmkoda produktiem; citos gadījumos ražotāji var iekasēt maksu par pirmkodu vai padarīt to pieejamu pēc pieprasījuma.

Aparatūras izstrāde. Tas ietver arī pirmkodu, kas jo īpaši attiecas uz izstrādi, izmantojot VHDL un Verlog. Kā te iet? Vēsturiski, izvēloties integrālo shēmu un izstrādājot tās pielietojumu, inženieris paļāvās uz specifikācijām, kas noteica funkcionalitāti, kontaktligzdu, jaudas prasības utt. Un tajā pašā laikā neviens negaidīja redzēt pilnīgu IC iekšējās struktūras diagrammu, lai gan bieži varēja redzēt blokshēmu (galvenokārt kā ilustratīvu materiālu, kas atviegloja darbības principu izpratni), un dažreiz pat shēmas shēma (analogiem IC, piemēram, darbības pastiprinātājiem), lai gan bez nominālvērtības.
Inženieris, kurš izstrādā ASIC vai FPGA programmaparatūru šodien, visticamāk, izmantos dažus iepriekš iebūvētus IP blokus — iepakotu bloku, kas nodrošina noteiktu funkcionalitāti. Tomēr izvēle būs balstīta uz specifikācijām, un nepavisam nav skaidrs, ka oriģinālais HDL IP tiks iekļauts komplektā. Šī melnās kastes pieeja ir labi zināma aparatūras pasaulē.

Drošība. Jebkura tehnoloģija, kas ir iekļauta produktā, ir jāizvēlas, ņemot vērā turpmāko tehnisko atbalstu. Piemēram, izvēloties IP, jums vajadzētu izvairīties no unikālu produktu izmantošanas no viena ražotāja, kas var mazināt piegādes traucējumu problēmas.
Lietojot IP — neatkarīgi no tā, vai tā ir aparatūra vai piegādātā programmatūra, piegādes kļūmes kā tādas, visticamāk, nenotiks (izņemot vienreizējo licenču gadījumā), taču ir jānodrošina pastāvīgs atbalsts. Tāpēc jautājumu par to, vai jūsu piegādātājs darbosies visu jūsu produkta darbības laiku, vislabāk ir uzdot pirms konkrētas ieviešanas izvēles.

Ja ir pieejams IP avota kods, tas ļauj atrisināt jebkuru (labi, gandrīz jebkuru) programmatūras problēmu, pat ja pārdevējs vairs nevar piedāvāt atbalstu. Šī iemesla dēļ daudzi RTOS pircēji utt. katram gadījumam vēlētos, lai avota kods būtu plauktā, pat ja viņi to nekad neskatās.

Programmatūras pielāgošana Galvenā atšķirība starp iegultajām sistēmām un galddatoriem ir to mainīgums. Lielākā daļa datoru ir līdzīgi daudziem citiem, un vienīgā izvēle ir starp izpildes vidi: Windows, Mac vai Linux. No otras puses, iegultās sistēmas ir neticami mainīgas — atšķiras procesori, atmiņas konfigurācijas un perifērijas ierīces. Rezultātā IP programmatūrai jābūt elastīgai, lai to varētu izvietot dažādās sistēmās. Lai gan daudzi produkti, piemēram, RTOS, tiek piegādāti binārā formā (parasti bibliotēka, kas ir pielāgota noteiktai arhitektūrai), pirmkoda piegādes prasības var stimulēt pārdevējus, novēršot nepieciešamību uzglabāt un atbalstīt vairākas variācijas, jo IP kā avota nodrošināšana atrisina daudzas no šīm problēmām. jautājumiem. Lietotājs var izveidot kodu konkrētam procesoram, pielāgot to ierīces atmiņas kartei un pievienot nepieciešamos ierīces paplašinājumus. Dažos gadījumos IP bloku var konfigurēt, izmantojot nosacījumu kompilāciju — parasti galvenes fails tiek rediģēts, lai definētu konfigurāciju.

Sertifikācija. Dažiem lietojumu veidiem, piemēram, militārām/aviācijas un medicīnas, programmaparatūrai ir jābūt sertificētai, lai nodrošinātu drošību un atbilstību dažādiem standartiem. Šis process ir sarežģīts un dārgs, un parasti tas ietver katras koda rindiņas pārbaudi. Tāpēc parasti nav iespējams iegādāties "iepriekš sertificētas" programmatūras vienības, jo visa lietojumprogramma tiek pārskatīta. Tādējādi lietojumprogrammu izstrādātājs, kam ir būtiska nozīme, visticamāk, meklēs IP, kas ir pieejams kopā ar avota kodu, lai varētu veikt pilnu verifikāciju.

Kas ir pirmkods?
Jautājums var šķist dīvains, bet bez atbildes jebkura tā klātbūtnes (vai neesamības) aspekta apspriešana pārvēršas par dīvainu vingrinājumu. Atbilde var šķist acīmredzama: programmas avota kods ir failu kolekcija, kas satur augsta līmeņa vai montāžas valodas instrukcijas, kuras var apkopot un apkopot funkcionējošās binārās instrukcijās. Tūlīt rodas jautājums - vai transformācijas procesam nepieciešamās programmas un to izpildes vide ir daļa no pirmkoda (binārā formā)? Tomēr šī definīcija atbilst vismaz 3 formām, kurās var nodrošināt “avota kodu” (piemēram, parunāsim par C valodu) kvalitātes pasliktināšanās secībā:
1) Patiešām pirmkods, ar labu izkārtojumu, skaidriem mainīgo nosaukumu piešķiršanas noteikumiem un labi komentētiem (ja IP izstrādātājam tāds ir, kas nav obligāti).
2) koda rindas, kuras tiks veiksmīgi kompilētas, BET bez komentāriem vai īpaši jēgpilniem identifikatoru nosaukumiem.
3) Koda rindas pēc šķēršļiem, kas padara kodu cilvēkiem nelasāmu, bet kompilatoram pieņemamu. Tas tiek darīts, aizstājot identifikatoru nosaukumus ar bezjēdzīgiem un noņemot visus komentārus un sintaktiski nevajadzīgās atstarpes. Ir apgriezts process, taču tā rezultātus diez vai var saukt par pieņemamiem.
Visas šīs veidlapas programmatūras nodrošinātāji izmanto šādiem mērķiem:
1) ir tas, ko lielākā daļa pircēju cer saņemt un ko daudzi ražotāji faktiski nodrošina. Tomēr, pieņemot lēmumu par pirkumu, ja jums ir nepieciešams avota kods, ir svarīgi pārliecināties, ka tā ir iespēja; ja rodas šaubas, vienkārši pieprasiet paraugus.
2) parasti izmanto, ja pārdevējs vēlas piegādāt minimālo nepieciešamo daudzumu, kas var būt (tikai) pietiekami labs sertifikācijai.
3) tiek izmantots, lai aizsargātu IIP saturu no nevēlamiem skatieniem, kas nozīmē, ka programmatūra iegūst konfigurējamības priekšrocības, bet ne vairāk.

Avota koda trūkumi.
Lielākais avota koda trūkums: tas ir ļoti vilinoši. Katrs izstrādātājs vēlas padarīt savu programmatūru pēc iespējas labāku (nu, ir tāds viedoklis). Tātad, piemēram, ja RTOS API nedarbojas tieši tā, lai tā būtu optimāla lietojumprogrammai, avota koda pieejamība nodrošina iespēju to mainīt.
Lai gan var šķist, ka ir lieliski padarīt lietojumprogrammu optimālu, pastāv problēma ar ilgtermiņa atbalstu. Ko darīt, ja rodas problēmas ar RTOS funkcionalitāti? Piegādātājs neatbalstīs modificēto produktu. Ko darīt, ja tiek izlaista jauna RTOS versija? To iekļaušana pārprojektēšanā var prasīt ievērojamu laiku atkārtotām modifikācijām, īpaši, ja to autors vairs nestrādā jūsu labā (nu, vai nu jūs veicāt šīs modifikācijas pirms 3 gadiem un, protams, vai, kā saka, protams, jūs to nedarījāt rakstot atbilstošu dokumentāciju).

Apsverot situācijas, kurās pirmkods var būt vēlams, noderīgs vai nepieciešams, jāsecina, ka tas nav absolūti un vienmēr vajadzīgs. Ja iegādājaties IP no liela, labi zināma un stabila pakalpojumu sniedzēja, kas var piedāvāt ilgtermiņa atbalstu, avota koda izmantošana nav svarīga un var pat tikt uzskaitīta kā trūkums.

Montāžas (vai montētāja) valoda ir zema līmeņa programmēšanas valoda datoram vai citai programmējamai aparatūrai, kurā pastāv korelācija starp valodu un arhitektūras mašīnkoda instrukcijām. Katra uz mašīnu orientēta valoda (profesionālajā terminoloģijā - “montētājs”) attiecas uz noteiktu datora arhitektūru. Turpretim lielākā daļa augsta līmeņa programmēšanas valodu ir starpplatformas, taču tām ir nepieciešama interpretācija vai apkopošana.

Platformai raksturīgo kodu var saukt arī par simbolisku valodu vai instrukciju kopu, ko tieši izpilda datora centrālais procesors. Katra programma, ko izpilda procesors, sastāv no instrukciju sērijas. Mašīnkods pēc definīcijas ir programmētājam redzamais programmēšanas zemākais līmenis.

Lietošana

Daudzām operācijām ir nepieciešams viens vai vairāki operandi, kas spēj izveidot pilnīgu instrukciju, un daudzi montieri var pieņemt skaitļu izteiksmes un konstantes, kā arī reģistrus un etiķetes kā operandus. Tas atbrīvo mašīnkoda programmētāju no nogurdinošiem, atkārtotiem aprēķiniem. Atkarībā no arhitektūras šos elementus var kombinēt arī specifiskiem norādījumiem vai adresācijas režīmiem, izmantojot nobīdes vai citus datus, kā arī fiksētas adreses. Daudzi "veidotāji" piedāvā papildu mehānismus, lai atvieglotu programmu izstrādi, kontrolētu veidošanas procesu un atbalstītu atkļūdošanu.

Vēsturiskā perspektīva

Pirmo montāžas valodu 1947. gadā izstrādāja Ketlīna Būta priekš ARC2 Birkbeka procesā, sadarbojoties ar Džonu fon Neimani un Hermani Goldšteinu Padziļināto pētījumu institūtā. SOAP (Symbolic Optimal Assembly Program) bija montāžas valoda 650, ko 1955. gadā izveidoja Stens Pavlijs.

Vēsturiski daudzi programmatūras risinājumi tika rakstīti tikai montāžas valodā. Operētājsistēmas tika rakstītas tikai šajā valodā līdz Burroughs MCP (1961) ieviešanai, kas tika uzrakstīta Executive Systems Problem Oriented Language (ESPOL). Daudzas komerciālas lietojumprogrammas tika rakstītas mašīnorientētā valodā, tostarp liela daļa IBM lieldatoru programmatūras, ko radījuši IT milži. COBOL un FORTRAN galu galā aizstāja lielu daļu darba, lai gan daudzas lielas organizācijas saglabāja montāžas valodas lietojumprogrammu infrastruktūras deviņdesmitajos gados.

Lielākā daļa agrīno mikrodatoru tika kodēti ar roku, tostarp lielākā daļa operētājsistēmu un liela mēroga lietojumprogrammas. Tas ir tāpēc, ka šīm iekārtām bija nopietni resursu ierobežojumi, tās aplika ar nodokli pielāgoto atmiņu un displeja arhitektūru un nodrošināja ierobežotus sistēmas pakalpojumus ar kļūdām. Varbūt svarīgāks bija pirmās klases, augsta līmeņa valodu kompilatoru trūkums, kas piemēroti mikrodatoru lietošanai, kas apgrūtināja mašīnkoda apguvi.

Pielietojuma zona

Montāžas valodas novērš lielu daļu problemātiskās, nogurdinošās un laikietilpīgās pirmās paaudzes montāžas valodas programmēšanas, kas nepieciešama senākajos datoros. Tas atbrīvo programmētājus no ikdienas ciparu kodu iegaumēšanas un adrešu aprēķināšanas. Sākotnējos posmos "fabrikatori" tika plaši izmantoti visu veidu programmēšanai. Tomēr līdz 80. gadu beigām. to izmantošanu lielā mērā ir aizstājušas augstāka līmeņa valodas, lai palielinātu programmēšanas produktivitāti. Mūsdienās montāžas valodu joprojām izmanto tiešai aparatūras manipulācijai, piekļuvei specializētām procesora instrukcijām vai kritisku veiktspējas problēmu risināšanai. Tipiskas lietojumprogrammas ietver ierīču draiverus, zema līmeņa iegultās sistēmas un reāllaika parametrus.

Pieteikumu paraugi

Parasti lielu montāžas valodu programmu piemēri ir IBM PC DOS operētājsistēmas, Turbo Pascal kompilators un agrīnās lietojumprogrammas, piemēram, Lotus 1-2-3 izklājlapu programma.

Mašīnai raksturīgā valoda bija galvenā izstrādes valoda daudziem 80. un 90. gadu populārajiem mājas datoriem (piemēram, MSX, Sinclair ZX Spectrum, Commodore 64, Commodore Amiga un Atari ST). Tas ir tāpēc, ka interpretētie BASIC dialoglodziņi šajās sistēmās nodrošināja lēnu izpildes ātrumu, kā arī ierobežotu iespēju pilnībā izmantot pieejamo aparatūru. Dažām sistēmām pat ir integrēta izstrādes vide (IDE) ar ļoti progresīviem atkļūdošanas un makro rīkiem. Dažiem kompilatoriem, kas bija pieejami Radio Shack TRS-80 un tā pēctečiem, bija iespēja apvienot iebūvēto montāžas avotu ar augsta līmeņa programmām. Pēc kompilēšanas iekļautais montētājs izveidoja iekļauto bināro kodu.

Mašīnas kods manekeniem. Terminoloģija

Asamblera programma izveido opkodus, pārvēršot mnemonikas un sintaktisko noteikumu kombinācijas operācijām un adresācijas režīmiem to skaitliskajos ekvivalentos. Šis attēlojums parasti ietver operācijas kodu, kā arī citus vadības bitus un datus. Montētājs arī novērtē nemainīgas izteiksmes un definē simboliskus nosaukumus atmiņas vietām un citiem objektiem.

Mašīnas kodi var veikt arī dažus vienkāršus optimizācijas veidus, kas atkarīgi no instrukciju kopas. Viens konkrēts piemērs tam varētu būt populārie x86 "būvētāji" no dažādiem pārdevējiem. Lielākā daļa pēc pieprasījuma var veikt filiāles komandu aizstāšanu jebkurā piegājienu skaitā. Iespēja arī vienkāršu instrukciju pārgrupēšanu vai ievietošanu, piemēram, dažus RISC arhitektūru komplektētājus, kas var palīdzēt optimizēt inteliģento instrukciju plānošanu, lai maksimāli izmantotu CPU konveijera iespējas.

Tāpat kā agrīnās programmēšanas valodas, piemēram, Fortran, Algol, Cobol un Lisp, montieri ir pieejami kopš 1950. gadiem, tāpat kā pirmās paaudzes uz tekstu balstītas datoru saskarnes. Tomēr kompilatori bija pirmajā vietā, jo tos ir daudz vieglāk rakstīt nekā kompilatorus augsta līmeņa valodām. Tas ir tāpēc, ka katra mnemonika, kā arī instrukciju adresācijas režīmi un operandi tiek pārtulkoti katras konkrētās instrukcijas skaitliskos attēlojumos bez īpaša konteksta vai analīzes. Ir bijušas arī vairākas tulkotāju klases un pusautomātiskie kodu ģeneratori, kuru īpašības ir līdzīgas gan komplektiem, gan augsta līmeņa valodām, un ātruma kods, iespējams, ir viens no pazīstamākajiem piemēriem.

Piespēļu skaits

Ir divi montāžas valodas programmēšanas veidi, kuru pamatā ir caurlaides caur avotu (lasīšanas mēģinājumu skaits), lai izveidotu objekta failu.

Vienas piespēles montētāji vienu reizi iziet cauri pirmkodam. Jebkurš simbols, kas tiek izmantots pirms tā definēšanas, objekta koda beigās prasīs kļūdu.
Vairāku gājienu montētāji izveido tabulas ar visiem simboliem un to nozīmi pirmajās piegājienos, un pēc tam izmanto tabulu nākamajās piegājienos, lai ģenerētu kodu.

Sākotnējais iemesls vienas piegājiena montētāju izmantošanai bija montāžas ātrums — bieži vien, veicot otro piegājienu, bija nepieciešams pārtīt un atkārtoti nolasīt programmas avotu lentē. Vēlāk datoros ar daudz lielāku atmiņu (īpaši diska glabāšanai) bija vieta, lai veiktu visu nepieciešamo apstrādi bez atkārtotas lasīšanas. Multi-pass assembler priekšrocība ir tāda, ka kļūdu neesamība nozīmē, ka saistīšanas process (vai programmas ielāde, ja montētājs tieši ražo izpildāmo kodu) ir ātrāks.

Kas ir binārais kods?

Programma, kas rakstīta montāžas valodā, sastāv no procesora mnemonisku instrukciju un metapaziņojumu sērijas (pazīstamas kā direktīvas, pseidoinstrukcijas un pseidooperācijas), komentāriem un datiem. Montāžas valodas instrukcijas parasti sastāv no operētājkoda mnemonikas. Tam seko datu, argumentu vai parametru saraksts. Montētājs tos pārtulko mašīnvalodas instrukcijās, kuras tiek ielādētas atmiņā un izpildītas.

Piemēram, tālāk sniegtā instrukcija liek x86/IA-32 procesoram pārvietot 8 bitu vērtību reģistrā. Šīs instrukcijas binārais kods ir 10110, kam seko 3 bitu identifikators, kas izmanto reģistru. AL ID ir 000, tāpēc šāds kods ielādē AL reģistru ar datiem 01100001.

Rodas jautājums: kas ir binārais kods? Tā ir kodēšanas sistēma, kas izmanto bināros ciparus "0" un "1", lai attēlotu burtu, ciparu vai citu simbolu datorā vai citā elektroniskā ierīcē.

Mašīnas koda piemērs: 10110000 01100001.

Tehniskās īpašības

Asamblejas valodas konvertēšana mašīnkodā ir montāžas valodas uzdevums. Apgrieztais process tiek veikts, izmantojot demontētāju. Atšķirībā no augsta līmeņa valodām, pastāv savstarpēja atbilstība starp daudziem vienkāršiem montāžas priekšrakstiem un mašīnvalodas instrukcijām. Tomēr dažos gadījumos montētājs var nodrošināt pseidoinstrukcijas (makro). Tie aptver vairākas mašīnas valodas instrukcijas, lai nodrošinātu bieži nepieciešamo funkcionalitāti. Lielākā daļa pilnas kaudzes komplektētāju nodrošina arī bagātīgu makro valodu, ko pārdevēji un programmētāji izmanto, lai ģenerētu sarežģītākas kodu un datu secības.

Katrai datora arhitektūrai ir sava mašīnvaloda. Datori atšķiras pēc to atbalstīto operāciju skaita un veida, reģistru lieluma un skaita, kā arī krātuvē esošo datu attēlojuma. Lai gan vairums vispārējas nozīmes datoru spēj veikt gandrīz tādu pašu funkcionalitāti, veids, kādā tie to dara, atšķiras. Atbilstošās montāžas valodas atspoguļo šīs atšķirības.

Vienai instrukciju kopai var būt vairākas mnemonikas vai montāžas valodas sintakses kopas, kuras parasti tiek izveidotas dažādās programmās. Šādos gadījumos vispopulārākais parasti ir tas, ko nodrošina ražotājs un izmanto savā dokumentācijā.

Dizaina valoda

Pastāv liela dažādība, kā kolekcionāri klasificē paziņojumus un izmantoto nomenklatūru. Jo īpaši daži apraksta visu, kas nav mašīna vai paplašināta mnemonika, kā pseidooperāciju. Pamata montāžas vārdnīca sastāv no instrukciju kopas — trīs pamata instrukciju veidi, kas tiek izmantoti programmatūras darbību definēšanai:

  • opkoda mnemonika;
  • datu definīcijas;
  • kolekcionāru direktīvas.

Opkoda mnemonika un paplašinātā mnemonika

Instrukcijas, kas rakstītas montāžas valodā, ir elementāras, atšķirībā no augsta līmeņa valodām. Parasti mnemonika (patvaļīgi simboli) ir simbolisks apzīmējums vienai izpildāmā koda instrukcijai. Katra instrukcija parasti sastāv no operācijas koda plus nulles vai vairāk operandu. Lielākā daļa komandu attiecas uz vienu vai divām vērtībām.

Paplašināta mnemonika bieži tiek izmantota instrukciju specializētai darbībai - mērķiem, kas nav acīmredzami no rokasgrāmatas nosaukuma. Piemēram, daudziem procesoriem nav skaidras NOP instrukcijas, bet tiem ir iebūvēti algoritmi, kas tiek izmantoti šim nolūkam.

Daudzi veidotāji atbalsta elementārus iebūvētus makro, kas var ģenerēt divas vai vairākas mašīnas instrukcijas.

Datu direktīvas

Ir instrukcijas, ko izmanto, lai definētu elementus datu un mainīgo glabāšanai. Tie nosaka datu veidu, garumu un līdzinājumu. Šīs instrukcijas var arī noteikt, vai informācija ir pieejama ārējām programmām (savākta atsevišķi) vai tikai programmai, kurā ir definēta datu sadaļa. Daži montieri tos definē kā pseidooperatorus.

Veidot direktīvas

Montāžas norādījumi, saukti arī par pseidokodiem vai pseidooperācijām, ir montētājam sniegtās instrukcijas, kas liek tam veikt darbības, kas nav montāžas instrukcijas. Direktīvas ietekmē montētāja darbību un var ietekmēt objekta kodu, simbolu tabulu, saraksta failu un iekšējās montētāja parametru vērtības. Dažreiz termins pseidokods ir rezervēts direktīvām, kas ģenerē objekta kodu.

Pseido-op nosaukumi bieži sākas ar punktu, lai tos atšķirtu no mašīnas norādījumiem. Vēl viena izplatīta pseidooperāciju izmantošana ir glabāšanas apgabalu rezervēšana izpildlaika datiem un, iespējams, to satura inicializācija līdz zināmām vērtībām.

Pašdokumentācijas kods

Simboliskie montieri ļauj programmētājiem saistīt patvaļīgus nosaukumus (iezīmes vai simbolus) ar atmiņas vietām un dažādām konstantēm. Bieži vien katrai konstantei un mainīgajam tiek piešķirts savs nosaukums, tāpēc norādījumi var atsaukties uz šīm vietām pēc nosaukuma, tādējādi veicinot pašdokumentācijas kodu. Izpildāmajā kodā jebkuras apakšprogrammas nosaukums ir saistīts ar tās ieejas punktu, tāpēc visi apakšprogrammas izsaukumi var izmantot tās nosaukumu. GOTO etiķetes tiek piešķirtas apakšprogrammās. Daudzi kolekcionāri atbalsta vietējos simbolus, kas leksiski atšķiras no parastajiem simboliem.

Assemblers, piemēram, NASM, nodrošina elastīgu simbolu pārvaldību, ļaujot programmētājiem pārvaldīt dažādas nosaukumvietas, automātiski aprēķināt nobīdes datu struktūrās un piešķirt etiķetes, kas attiecas uz burtiskām vērtībām vai vienkāršu montētāja veiktu aprēķinu rezultātu. Īsceļus var izmantot arī, lai inicializētu konstantes un mainīgos, izmantojot pārvietojamas adreses.

Montāžas valodas, tāpat kā lielākā daļa citu, ļauj programmas avota kodam pievienot komentārus, kas montāžas procesa laikā tiks ignorēti. Kriminālistikas anotācija ir svarīga montāžas valodas programmās, jo ir grūti noteikt bināro mašīnu instrukciju secības definīciju un mērķi. "Neapstrādāta" (bez komentāriem) montāžas valoda, ko ražo kompilatori vai demontētāji, ir diezgan grūti lasāma, kad ir jāveic izmaiņas.