Zdroj obrázku: pixabay.com

Programovací jazyky pro výuku algoritmů

Než začnu s těžkými dělostřeleckými věcmi o jazycích a jejich maskách s algoritmy, dejte nejprve vědět, jaké jsou algoritmy.

Možná jste to slyšeli ve filmech, zejména ve filmech, jako je The Swordfish, nebo v jakémkoli jiném rádoby hacknutém filmu, ve kterém hacker uvádí něco jako kdybych šel a změnil algoritmus a přidal bla bla a bla, pak budu schopen proniknout do CIA a věci.

Ale to je docela blábol. Neexistuje nic takového. Algoritmy nejsou určeny pouze pro hackování.

Nejdříve první, Algoritmy jen Datové struktury. Jsou to metoda nebo způsob, jak dělat věci, s větší pravděpodobností řešit problémy s algoritmy. Stále zmatený, dovolte mi to jednodušším způsobem.

Algoritmy považujte za formulace. Formule, které vám mohou pomoci plnit váš úkol bez velkého obtěžování. Něco jako následující:

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

Ale to je celkem jednoduché. Správné algoritmy jsou mnohem užitečnější než jen (a + b). Tyto algoritmy se používají v bankách, ale nejen pro zabezpečení a tak, ale všude. Řekněme, že si otevřete svůj účet v bance.

Vložíte do něj X množství peněz a chcete znát výši úroku, kterou byste dostali.

Účetní v bance pak jednoduše vloží čísla, pokud jde o částku, počet období a úrokovou sazbu do krabičky v softwaru. Software algoritmů běží a dává vám výstup.

Nyní byl tento výstup vypočítán pomocí algoritmů … kus kódu, který již má vzorce pro výpočet úroku. V našem případě pro jednoduchý zájem by to bylo:

A = P (1 + rt)

A = částka

P = hlavní

R = úroková míra

T = čas nebo n

Nyní musíte mít představu o tom, jaké algoritmy jsou. Jen jedna věc, kterou byste měli mít na paměti, pokud jste začátečník v programování, to není a nikdy se nezaměňuje s funkcemi a algoritmy. Obě jsou dvě různé věci.

Pokud máte jakýkoli zmatek, nechte je vyjasnit a teprve potom pokračujte dále.

Jazyky, matematika a algoritmus

Jen málo věcí, které je třeba mít na paměti, že porozumění algoritmům matematiky je nejdůležitější, když chcete psát lepší algoritmy. Podobné je to s nerozbitnými nebo bláznivými algoritmy.

Tyto algoritmy, které se nazývají nerozbitné, jsou jen kousky kódu čisté matematiky, které problém nevyřeší bez požadovaných částí. Řekněme například: a + b = 20

Předpokládejme, že a je 5 zde. Teď, když vím, že a je 5, pak může být tento algoritmus snadno rozbitelný. Ale pokud ale ani nevím, co je, pak je tu stále možnost, že můžu tento algoritmus crackovat.

Cesta k prasknutí by byla něco, jako bych to brutálně přinutil. Brutální síla znamená vyzkoušet každou možnou kombinaci.

Takže bych začal hádat čísla jako 1 + 19, 2 + 18, 3 + 17, 10 + 10 atd. Teď se stane jedna z těchto dvou věcí.

První pravděpodobnost je, že jelikož všechny výše uvedené kombinace by mi daly odpověď jako 20, všechny by mohly tento algoritmus crackovat. Pokud však programátor pevně kóduje, aby akceptoval pouze 5 + 15, všechny kombinace by nefungovaly.

Ale znovu, protože zkouším všechny možné kombinace, nastal čas, kdy bych zkusil 5 + 15 a to by prasklo algoritmus.

Programátor se opět mohl pokusit zachovat omezený počet pokusů a mnohem více struktury zabezpečení mezi tím, ale i tak máme mnoho nástrojů, abychom ji obešli.

Neporušitelný algoritmus nebo mýtus?

Otázkou tedy je, zda existuje něco, co se nazývá nerozbitný algoritmus, nebo je to jen mýtus. Odpověď je obojí. Nedávno jsem četl pár věcí na internetu, kde jsem četl slavnou citaci:

„Nemožné znamená, že člověk nezkoušel všechna řešení“

To jo. Takto fungují algoritmy. Vezměme si výše uvedený případ. Předpokládejme, že existuje další algoritmus, který vypadá takto:

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

Ano. Takto píšete nerozbitný algoritmus. Jde o slušný počítač s dobrou grafickou kartou, který to snadno dokáže rozbít oclhashcatem. Ale to je jen příklad. Zde mohou být kombinace jako cokoli.

Odpověď je záporná devět, což znamená, že v a, b, c, d, e a f může být několik čísel, která jsou záporná, alespoň jedno velké číslo je odečteno malým počtem.

To mě vezme zpět k našim prvním příkladům algoritmů a + b = 20. I zde může být mnohem více kombinací, jako je -1 + 21 nebo -29354+ 29374. Získání mého názoru.

Teorie nerozbitných algoritmů jde tak daleko, jak jen dokáže lidská mysl vymyslet. Neporušitelné algoritmy nejsou mýtem. Dobře napsaný algoritmus může trvat až 2–3 nebo i více měsíců, než dojde k prasknutí počítače, například u šifrovaných věcí WPA2.

Jde o to, že člověk musí mít trpělivost, aby zůstal v duševním klidu, dokud nebude vyřešen. Podle matematiky neexistuje žádný takový algoritmus, který nelze popraskat. Potřebuje někoho, aby se o to skutečně zajímal.

Nejlepší jazyky pro psaní algoritmů

Upřímně řečeno, neexistuje oficiálně žádný specifický jazyk, který by byl vynikající pro psaní algoritmů.

Funkční jazyky však mají navrch, důvodem je, že jsou z hlediska výpočtů a matematiky mnohem lepší než jiné objektově orientované jazyky. Ale algoritmy bych uvedl jen pár z nich, které mi připadají dost dobré na to, abych matematiku kódoval:

  • Python a Ruby

Především bych doporučil jazyky na vysoké úrovni. Jazyky na vysoké úrovni jsou nejsnadněji dosažitelné. Důvod, proč jsou tyto jazyky jednodušší, je ten, že na rozdíl od jazyka C nebo jiného jazyka nízké úrovně jsou tyto jazyky jednodušší z hlediska čtení.

Dokonce i jejich syntaxe je tak snadná, že ji pochopí jen čistý začátečník, aniž by je někdo učil.

Všechny běžné datové struktury v těchto jazycích mají abstrakce. Můžete dokonce vytvářet vlastní implementované verze a stavět datové struktury na datových strukturách. Tyto jazyky jsou psány dynamicky.

Je tu však pouze jeden problém, s nímž může být pro programátora snazší začít, ale při spuštění testů mohou na rozdíl od jiných jazyků nízké úrovně vidět spoustu chyb, které neviděli před spuštěním.

  • C

C je přesně opak Pythonu. Můžete se zde dokonce zmást, protože ačkoli C je jazyk na vysoké úrovni, někteří lidé jej kvůli jeho způsobu kódování dokonce považují za jazyk na nízké úrovni.

Dokonce i C je zde z hlediska abstrakce velmi dobrý. Pokud jste v algoritmech, možná se později nebo v jeden den budete muset naučit správné jazyky nízké úrovně, jako je shromáždění.

Jde o to, že pokud dobře znáte C, bylo by docela snadné přejít z jazyka C nebo jiného podobného jazyka na jazyk sestavovací. Správa paměti je také velmi dobrá v C a to je velmi důležité pro algoritmy.

  • Jáva

Mnoho lidí ve skutečnosti nenávidí Javu za to, že jsou příliš podrobní a přísní. Dokonce i někteří lidé říkají, že postrádá spoustu funkcí, které jsou k dispozici v moderních sofistikovaných jazycích. To však ve skutečnosti neznamená, že by se to mělo zajímat.

Java, na rozdíl od Pythonu, není dynamicky psaným jazykem. Jedná se o staticky napsaný jazyk a má spoustu odpadu.

To znamená, že Java bude skutečně zobrazovat chyby během kompilace a dokonce i před spuštěním. A ve srovnání s jinými jazyky na vysoké úrovni má Java extrémně nízký únik paměti, který lze samozřejmě opravit a nemá žádné chyby segmentace.

  • C # a C ++

C # je téměř podobný Java. Je to spíše jako Java se schopnostmi moderního jazyka. Někteří lidé rádi používají i C ++. Ale je to nesmírně zbytečně komplikované.

Někteří lidé to používají, protože protože je těžké to pochopit, ale jakmile se vám podaří crackovat, budou mít lidé vážně těžký čas na pochopení vašich algoritmů, díky čemuž je ideální pro tuto práci. Na druhou stranu má C # sbírku odpadků podobnou sbírce Java.

Existují také další funkční jazyky jako Haskell (rodina Lispů) a Scala (založené na Javě). Můžete si přečíst mé další blogy na nich, kde jsem psal podrobně o tom, jak fungují a tak. Java, C a C ++ všechny běží na jednom nebo druhém virtuálním stroji.

Zatímco Ruby a Python jsou tlumočníky jejich tlumočníka.

Pokud se mě zeptáte, dávám přednost C #, protože má všechny moderní schopnosti a také by usnadnil portování do nižších programovacích jazyků. Vědecky to má vlastnosti jazyka Java, Scala, C a nižších jazyků.

Pokud chcete pouze začít s algoritmy, pravděpodobně byste měli zvážit použití sady Visual Studio community edition nebo Visual Studio express. Pravděpodobně byste si to museli koupit, kromě toho, že v případě pythonu bude většina věcí, které chcete, zdarma.

Doporučené články: -

Zde je několik článků, které vám pomohou získat více podrobností o programovacích jazycích pro učení algoritmů, takže stačí projít odkaz.

  1. 8 úžasných algoritmů rozhovory otázky a odpovědi
  2. Nejlepší algoritmy a kryptografie (příklady)
  3. Nejlepší datové struktury a algoritmy C ++ | Základy
  4. Rozhovor o datových strukturách a algoritmech

Kategorie: