Zdroj obrázka: pixabay.com

Programovacie jazyky na výučbu algoritmov

Predtým, ako začnem s ťažkými delostreleckými vecami o jazykoch a ich maskách s algoritmami, dajte najskôr vedieť, aké sú algoritmy.

Možno ste to počuli vo filmoch, najmä vo filmoch ako The Swordfish alebo v akomkoľvek inom rádobylom hackerskom filme, v ktorom hacker uvádza niečo podobné, ako keby som šiel a zmenil algoritmus a pridal bla bla a bla, potom budem schopný preniknúť do CIA a tak.

Ale to je celkom bláznivé. Takáto vec neexistuje. Algoritmy nie sú určené iba na hackovanie.

Najprv prvé, Algoritmy len Dátové štruktúry. Sú to spôsob alebo spôsob, ako robiť veci, s väčšou pravdepodobnosťou riešiť problémy s algoritmami. Stále zmätený, dovoľte mi to zobrať jednoduchšie.

Algoritmy považujte za receptúry. Formule, ktoré vám môžu pomôcť pri plnení vašej úlohy bez toho, aby ste museli robiť veľa práce. Niečo ako toto:

(a + b) 2 = a2 + 2ab + b2

Ale to je celkom jednoduché. Správne algoritmy sú oveľa užitočnejšie ako len (a + b). Tieto algoritmy sa používajú v bankách, ale nielen v oblasti bezpečnosti a podobne, ale všade. Povedzme, že si otvoríte svoj účet v banke.

Vložíte doň X množstvo peňazí a chcete vedieť, o akú sumu by ste mali záujem.

Účtovník v banke potom jednoducho vložil čísla týkajúce sa sumy, počtu periód a úrokovej sadzby do škatule v softvéri. Softvér algoritmov sa spúšťa a poskytuje výstup.

Teraz bol tento výstup vypočítaný pomocou algoritmov … kus kódu, ktorý už má vzorce na výpočet úroku. V našom prípade pre jednoduchý záujem by to bolo:

A = P (1 + rt)

A = suma

P = príkazca

R = úroková miera

T = čas alebo n

Teraz musíte pravdepodobne získať predstavu o tom, čo sú algoritmy. Jedna vec, ktorú treba mať na pamäti, ak ste začiatočník v programovaní, to nie je a nikdy sa nezmení funkciami a algoritmami. Obidve veci sú dve rôzne veci.

Ak máte nejaké nejasnosti, jednoducho ich vyčistite a až potom pokračujte ďalej.

Jazyky, matematika a algoritmus

Len málo vecí, ktoré treba mať na pamäti, že pochopenie matematických algoritmov je najdôležitejšie, keď chcete písať lepšie algoritmy. Podobné je to s nerozbitnými alebo bláznivými algoritmami.

Tieto algoritmy, ktoré sa nazývajú nerozbitné, sú iba kúsky kódu čistej matematiky, ktoré problém nevyriešia bez požadovaných častí. Povedzme napríklad: a + b = 20

Predpokladajme, že a je 5. Teraz, ak viem, že a je 5, potom sa tento algoritmus dá ľahko rozbiť. Ak však neviem, čo je a, stále existuje možnosť, že môžem tento algoritmus rozlúštiť.

Cesta k prasknutiu by bola niečo ako by som to brutálne nútil. Hrubá sila znamená vyskúšať každú možnú kombináciu.

Takže by som začal hádať čísla ako 1 + 19, 2 + 18, 3 + 17, 10 + 10 a tak ďalej. Takže teraz sa stane jedna z týchto dvoch vecí.

Prvá pravdepodobnosť je, že keďže všetky vyššie uvedené kombinácie by mi dali odpoveď ako 20, všetky z nich by mohli tento algoritmus prelomiť. Ak by ho však programátor naprogramoval tak, aby akceptoval iba 5 + 15, potom by všetky kombinácie nefungovali.

Ale opäť, pretože skúšam všetky možné kombinácie, nastal čas, keď by som vyskúšal 5 + 15 a algoritmus by to prelomil.

Programátor sa opäť mohol pokúsiť udržať medzi tým obmedzený počet pokusov a oveľa väčšiu štruktúru zabezpečenia, ale aj tak máme množstvo nástrojov, ktoré by ho mohli obísť.

Neporušiteľný algoritmus alebo mýtus?

Otázkou teda je, či existuje niečo, čo sa nazýva nerozbitný algoritmus, alebo je to iba mýtus. Odpoveď je oboje. Nedávno som čítal niektoré veci na internete, kde som čítal slávny citát:

„Nemožné znamená iba to, že človek nevyskúšal všetky riešenia.“

Jo. Takto fungujú algoritmy. Zoberme si vyššie uvedený prípad. Predpokladajme, že existuje ďalší algoritmus, ktorý funguje takto:

a + b + c + d + e + f = (-9)

Áno. Takto napíšete nerozbitný algoritmus. Ide o slušný počítač s dobrou grafickou kartou, ktorý to bez problémov dokáže oclhashcat. Ale to je len príklad. Tu môžu byť kombinácie ako čokoľvek iné.

Odpoveď je záporná deväť, čo znamená, že v a, b, c, d, e a f môže byť niekoľko záporných čísel, najmenej jedno veľké množstvo sa odpočíta malým počtom.

Toto ma privádza späť k našim prvým príkladom algoritmu a + b = 20. Aj tu môže byť oveľa viac kombinácií ako -1 + 21 alebo -29354+ 29374. Získanie môjho názoru.

Teória nerozbitných algoritmov teda siaha až tak ďaleko, ako si myslia mysle. Neporušiteľné algoritmy nie sú mýtus. Dobre napísaný algoritmus môže trvať až 2 až 3 mesiace, dokonca aj viac mesiacov, kým sa počítač nerozbije, napríklad šifrované súbory WPA2.

Ide o to, že človek musí mať trpezlivosť, aby zostal v duševnom pokoji, kým sa nevyrieši. Podľa matematiky neexistuje taký algoritmus, ktorý by sa nedal zlomiť. Potrebuje niekoho, aby sa o ňu skutočne zaujímal.

Najlepšie jazyky na písanie algoritmov

Úprimne povedané, neexistuje žiadny oficiálny jazyk, ktorý by bol vynikajúci na písanie algoritmov.

Funkčné jazyky však majú navrch, z dôvodu výpočtov a matematiky sú však oveľa lepšie ako iné objektovo orientované jazyky. Ale ja by som len algoritmy zoznam niektoré z nich, ktoré považujem za dosť dobré na kódovanie matematiky v:

  • Python a Ruby

V prvom rade by som odporučil jazyky na vysokej úrovni. Jazyky na vysokej úrovni sa najľahšie používajú. Dôvod, prečo sú tieto jazyky jednoduchšie, je ten, že na rozdiel od jazyka C alebo iného jazyka nízkej úrovne sú tieto jazyky ľahšie čitateľné.

Dokonca aj ich syntax je taká ľahká, že ju pochopí iba čistý začiatočník bez toho, aby ich niekto učil.

Všetky spoločné dátové štruktúry v týchto jazykoch majú abstrakcie. Môžete dokonca vytvárať svoje vlastné implementované verzie a vytvárať dátové štruktúry na dátových štruktúrach. Tieto jazyky sú písané dynamicky.

Je tu však len jeden problém, s ktorým môže byť pre programátora jednoduchšie začať, ale pri spustení testov môžu na rozdiel od iných jazykov na nízkej úrovni vidieť veľa chýb, ktoré pred spustením nevideli.

  • C

C je presne opak Pythonu. Môžete sa tu dokonca zmiasť, pretože hoci C je jazyk na vysokej úrovni, niektorí ľudia ho kvôli svojmu spôsobu kódovania dokonca považujú za jazyk na nízkej úrovni.

Dokonca aj C je z hľadiska abstrakcie veľmi dobrý. Ak pracujete s algoritmami, možno sa jedného alebo druhého dňa budete musieť naučiť správne jazyky nízkej úrovne, napríklad zostavenie.

Ak však viete C veľmi dobre, bolo by celkom ľahké migrovať z jazyka C alebo iného podobného jazyka na jazyk zostavy. Správa pamäte je tiež veľmi dobrá v C a to je veľmi dôležité pre algoritmy.

  • Jáva

Mnoho ľudí skutočne nenávidí Javu za to, že sú príliš podrobní a prísni. Dokonca aj niektorí ľudia hovoria, že nemá veľa funkcií, ktoré sú k dispozícii v moderných sofistikovaných jazykoch. To však v skutočnosti nejde o obavy.

Java, na rozdiel od Pythonu, nie je dynamicky napísaný jazyk. Je to staticky napísaný jazyk a má veľa zbierok odpadu.

To znamená, že Java bude skutočne vykazovať chyby počas kompilácie a dokonca aj pred spustením. A v porovnaní s inými jazykmi vysokej úrovne má Java extrémne nízky únik pamäte, ktorý je samozrejme možné opraviť a nemá chyby segmentácie.

  • C # a C ++

C # je takmer podobný Java. Je to skôr ako Java so schopnosťou moderného jazyka. Niektorí ľudia radi používajú aj C ++. Je to však zbytočne komplikované.

Niektorí ľudia to používajú, pretože keďže je ťažké porozumieť, ale akonáhle sa vám podarí rozlúsknuť, ľudia budú mať vážne ťažkosti pochopiť vaše algoritmy, vďaka ktorým je perfektný pre túto prácu. Na druhej strane má C # kolekciu odpadkov podobnú kolekcii Java.

Existujú aj ďalšie funkčné jazyky ako Haskell (rodina Lisp) a Scala (založené na Java). Môžete si prečítať moje ďalšie blogy na nich, kde som napísal podrobne o tom, ako fungujú a podobne. Java, C a C ++ všetky fungujú na jednom alebo druhom virtuálnom počítači.

Zatiaľ čo Ruby a Python sú tlmočníkmi ich tlmočníka.

Ak sa ma pýtate, uprednostnil by som C #, pretože má všetky moderné schopnosti a tiež by uľahčil prenos do nižších programovacích jazykov. Z vedeckého hľadiska má vlastnosti jazykov Java, Scala, C a nižšej úrovne.

Ak chcete iba začať s algoritmami, pravdepodobne by ste mohli zvážiť použitie vydania Visual Studio community edition alebo Visual Studio Express. Pravdepodobne by ste si to museli kúpiť, až na to, že v prípade pythonu bude väčšina vecí, ktoré chcete, zadarmo.

Odporúčané články: -

Tu je niekoľko článkov, ktoré vám pomôžu získať viac podrobností o programovacích jazykoch na výučbu algoritmov, takže stačí prejsť na odkaz.

  1. 8 úžasných algoritmov rozhovory otázky a odpovede
  2. Najlepšie algoritmy a kryptografia (príklady)
  3. Najlepšie dátové štruktúry a algoritmy C ++ | základy
  4. Rozhovor o dátových štruktúrach a algoritmoch

Kategórie: