Billedkilde: pixabay.com

Programmering af sprog til indlæring af algoritmer

Så før jeg begynder med mine tunge artilleristing om sprog og deres masker med algoritmer, skal du først vide, hvad algoritmer er.

Du har muligvis hørt det i film, især film som The Swordfish eller en hvilken som helst anden wannabe-hacking-film, hvor hackeren siger noget i retning af, hvis jeg går og ændrer algoritmen og tilføjer bla bla og bla, så vil jeg være i stand til at hacke ind i CIA og ting.

Men det er temmelig gibberish. Der er ikke sådan noget. Algoritmer er ikke kun beregnet til hacking.

Første ting først, algoritmer bare datastrukturer. De er en metode eller en måde at gøre ting på, mere sandsynligt at løse algoritmer problemer. Lad mig stadig forvirre, lad mig tage dette på en enklere måde.

Tænk på algoritmer som formler. Formler, der kan hjælpe dig med at udføre din opgave uden meget. Noget som følgende:

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

Men disse er ganske enkle. Korrekte algoritmer er meget mere nyttige end bare (a + b). Disse algoritmer bruges i banker, men ikke kun til sikkerhed og ting, men overalt. Lad os sige, at du åbner din konto i en bank.

Du indsætter X mængde penge i det og vil vide, hvor meget renter du vil få.

Revisor i banken lægger derefter tallene for beløb, antal perioder og rente inde i en kasse i en software. Algoritmsoftwaren kører og giver dig output.

Nu blev denne output beregnet ved hjælp af algoritmerne… det kodestykke, der allerede har formlerne til beregning af interesse. I vores tilfælde for enkel interesse ville det være:

A = P (1 + rt)

A = Beløb

P = rektor

R = Interesse

T = Tid eller n

Nu skal du sandsynligvis have fået en idé om, hvad algoritmer er. Bare en ting at huske på, hvis du er nybegynder inden for programmering, der ikke bliver og aldrig forveksles med funktioner og algoritmer. Begge er to forskellige ting.

Hvis du har nogen forvirring, skal du bare rydde dem og derefter fortsætte videre.

Sprog, matematik og algoritme

Få ting at huske på, at forståelse af algoritmer matematik er det vigtigste, når du vil skrive bedre algoritmer. Tilsvarende er tilfældet med uknuselige eller narresikre algoritmer.

Disse algoritmer, der kaldes ubrydelige, er bare kodestykker af ren matematik, som ikke løser problemet uden de krævede dele. Lad os sige for eksempel: a + b = 20

Lad os antage, at a er 5 her. Nu, her hvis jeg ved, at a er 5, kan denne algoritme let kunne brydes. Men hvis jeg ikke engang ved, hvad a er, er der stadig en mulighed for, at jeg kan knække denne algoritme.

Måden til at knække ville være noget som om jeg ville brute tvinge den. Brute force betyder at prøve alle mulige kombinationer.

Så hvad jeg ville gøre, er at jeg ville begynde at gætte tal som 1 + 19, 2 + 18, 3 + 17, 10 + 10 og så videre. Så nu ville en af ​​de to ting ske.

Den første sandsynlighed er, at da alle ovennævnte kombinationer ville give mig svaret som 20, kunne alle af dem knække denne algoritme. Men hvis programmereren har hårdkodet den til kun at acceptere 5 + 15, ville alle kombinationer ikke fungere.

Men igen, da jeg prøver alle de mulige kombinationer, ville der være et tidspunkt, hvor jeg ville prøve 5 + 15, og det ville knække algoritmen.

Igen, programmereren kunne prøve at holde det begrænsede antal forsøg og meget mere sikkerhedsstruktur imellem, men selv for det har vi en masse værktøjer til at omgå det.

Ubrudelig algoritme eller myte?

Så spørgsmålet er, om der er noget, der kaldes en uknuselig algoritme, eller er det bare en myte. Svaret er begge. Jeg læste for nylig nogle ting på Internettet, hvor jeg læste et berømt citat:

”Umuligt betyder kun, at man ikke har prøvet alle løsningen”

Ja. Sådan fungerer algoritmer. Lad os tage ovenstående sag. Lad os antage, at der er en anden algoritme, der går som:

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

Ja. Sådan skriver du en ubrydelig algoritme. Sagen er, at en anstændig computer med et godt grafikkort let kan knække dette med oclhashcat. Men det er bare et eksempel. Her kan kombinationerne være som alt andet.

Svaret er en negativ ni, hvilket betyder, at i a, b, c, d, e og f kan der være et par tal, som er negative, hvor mindst et stort antal trækkes fra med et lille antal.

Dette bringer mig tilbage til vores første algoritmeeksempler på a + b = 20. Selv her kan der være meget flere kombinationer som -1 + 21 eller -29354+ 29374. At få min pointe.

Så teorien om ubrydelige algoritmer går kun så vidt et menneskeligt sind kan tænke på. Ubrydelige algoritmer er ingen myte. En velskrevet algoritme kan tage op til 2-3 eller endnu flere måneder at knække selv på en computer, som den WPA2-krypterede ting.

Sagen er, man skal have tålmodighed til at forblive i mental fred, indtil det bliver løst. I henhold til matematik er der ingen sådan algoritme, som ikke kan knækkes. Det har bare brug for nogen, der faktisk interesserer sig for det.

Bedste sprog til at skrive algoritmer

Ærligt talt er der officielt ikke noget specifikt sprog, der er fremragende til at skrive algoritmer.

Funktionelle sprog har imidlertid en overhånd, da grunden til at de er meget mere overordnede med hensyn til beregninger og matematik end andre objektorienterede sprog. Men jeg vil bare algoritmer angive et par af dem, som jeg synes er godt nok til at kode matematik i:

  • Python og Ruby

Først og fremmest vil jeg anbefale sprog på højt niveau. Sprog på højt niveau er mest lettere at komme videre med. Årsagen til, at disse sprog er lettere, er, at i modsætning til C eller andre sprog på lavt niveau er disse sprog lettere med hensyn til læsning.

Selv deres syntaks er så let, at bare en ren begynder ville forstå det, uden at nogen lærte dem.

Alle de almindelige datastrukturer på disse sprog har abstraktioner. Du kan endda bygge dine egne implementerede versioner og bygge datastrukturer på datastrukturer. Disse sprog indtastes dynamisk.

Men der er kun et problem her, som det kan være lettere for en programmerer at starte med, men når de kører test, kan de se mange fejl, som de ikke har set før runtime, i modsætning til andre sprog på lavt niveau.

  • C

C er nøjagtigt det modsatte af Python her. Du kan endda blive forvirret her, selv om C er et sprog på højt niveau, nogle mennesker endda betragter det som et lavt sprog på grund af dets måde at kode på.

Selv C er meget god med hensyn til abstraktion her. Hvis du bruger algoritmer, kan du muligvis på et senere tidspunkt den ene eller den anden dag at lære ordentlige sprog på lavt niveau som samlingen.

Pointen er, at hvis du kender C meget godt, ville det være ret let at migrere fra C eller en hvilken som helst lignende type sprog til samlingssprog. Hukommelsesadministration er også meget god i C, og dette er meget vigtigt for algoritmer.

  • Java

Mange mennesker hader faktisk Java for at være for ordblade og strenge. Selv nogle mennesker siger, at det mangler masser af funktioner, der er tilgængelige på moderne sofistikerede sprog. Men dette peger faktisk ikke på at være bekymret for.

Java, i modsætning til Python, er ikke et dynamisk indtastet sprog. Det er et statisk typisk sprog og har masser af affaldsindsamling.

Dette betyder, at Java faktisk vil vise fejl under kompilering og endda før runtime. Og sammenlignet med andre sprog på højt niveau har Java en ekstrem lav hukommelseslækage, som åbenbart kan rettes og har ingen segmenteringsfejl.

  • C # og C ++

C # ligner næsten Java. Det ligner mere Java med det moderne sprogs muligheder. Nogle mennesker kan lide at bruge endda C ++. Men det er ekstremt unødvendigt kompliceret.

Nogle mennesker bruger det, fordi da det er svært at forstå, men når du først har formået at knække det, vil folk alvorligt have det svært for at forstå dine algoritmer, hvilket gør det perfekt til jobbet. På den anden side har C # affaldsopsamling, der ligner Java.

Der er også andre funktionelle sprog som Haskell (Lisp Family) og Scala (baseret på Java). Du kan læse mine andre blogs om dem, hvor jeg har skrevet detaljeret om, hvordan de fungerer og sånt. Java, C og C ++ kører alle på den ene eller den anden virtuelle maskine.

Mens Ruby og Python er tolke på deres tolk.

Hvis du spørger mig, foretrækker jeg C #, da det har alle de moderne muligheder og også vil gøre det lettere at port til lavere programmeringssprog. I videnskabelige termer har det egenskaberne Java, Scala, C og lavere niveau sprog.

Hvis du bare vil starte med algoritmer, kan du sandsynligvis overveje at bruge Visual Studio Community Edition eller Visual Studio Express. Du bliver sandsynligvis nødt til at købe det, bortset fra at i tilfælde af python ville de fleste af de ting, du ønsker, være gratis.

Anbefalede artikler: -

Her er nogle artikler, der hjælper dig med at få mere detaljeret information om programmeringssprog til at lære algoritmer, så bare gå gennem linket.

  1. 8 Awesome algoritme Interview Spørgsmål og svar
  2. De bedste algoritmer og kryptografi (eksempler)
  3. Bedste datastrukturer og algoritmer C ++ | Grundlæggende
  4. Datakonstruktioner og algoritmer Interview

Kategori: