Bildkälla: pixabay.com

Programmeringsspråk för att lära sig algoritmer

Så innan jag börjar med mina tunga artillerivakor om språk och deras masker med algoritmer, låt oss först veta vad algoritmer är.

Du kanske har hört den i filmer, särskilt filmer som The Swordfish, eller någon annan wannabe-hackingfilm där hackaren säger något som om jag går och ändrar algoritmen och lägger till bla bla och bla, då kommer jag att kunna hacka till CIA och sånt.

Men det är ganska gibberish. Det finns inget sådant. Algoritmer är inte bara avsedda för hacking.

Första saker först, algoritmer bara datastrukturer. De är en metod eller ett sätt att göra saker, mer sannolikt att lösa problem med algoritmer. Fortfarande förvirrad, låt mig ta detta på ett enklare sätt.

Tänk på algoritmer som formler. Formler som kan hjälpa dig att utföra din uppgift utan mycket förresten. Något som följande:

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

Men dessa är ganska enkla. Rätta algoritmer är mycket mer användbara än bara (a + b). Dessa algoritmer används i banker, men inte bara för säkerhet och grejer, utan överallt. Låt oss säga att du öppnar ditt konto i en bank.

Du sätter in X-belopp i det och vill veta hur mycket ränta du skulle få.

Revisorn i banken skulle då bara lägga siffrorna på belopp, antal perioder och ränta i en låda i en programvara. Programvaran för algoritmer körs och ger dig utdata.

Nu beräknades denna utgång av algoritmerna … kodstycket som redan har formler för beräkning av intresse. I vårt fall för enkelintresse skulle det vara:

A = P (1 + rt)

A = Belopp

P = rektor

R = Räntesats

T = Tid eller n

Nu måste du troligen ha fått en uppfattning om vilka algoritmer som är. Bara en sak att tänka på om du är en nybörjare i programmering, som inte och aldrig blir förvirrad med funktioner och algoritmer. Båda är två olika saker.

Om du har någon förvirring, bara rensa dem och fortsätt sedan vidare.

Språk, matematik och algoritm

Få saker att tänka på, att förståelse av algoritmer matte är det viktigaste när du vill skriva bättre algoritmer. Liknande är fallet med obrottsliga eller lurssäkra algoritmer.

Dessa algoritmer som kallas obrytbara är bara kodkoder av ren matematik som inte löser problemet utan de nödvändiga delarna. Låt oss till exempel säga: a + b = 20

Låt oss anta att a är 5 här. Nu, här om jag vet att a är 5, kan denna algoritm vara lätt att bryta. Men om jag inte ens vet vad en är, finns det fortfarande en möjlighet att jag kan knäcka den här algoritmen.

Sättet att knäcka skulle vara något som jag skulle tvinga det. Brute Force innebär att du försöker alla möjliga kombinationer.

Så vad jag skulle göra är att jag skulle börja gissa siffror som 1 + 19, 2 + 18, 3 + 17, 10 + 10 och så vidare. Så nu skulle någon av de två sakerna hända.

Den första sannolikheten är att eftersom alla ovanstående kombinationer skulle ge mig svaret som 20, alla av dem kunde knäcka denna algoritm. Men om programmeraren har hårdkodat den för att bara acceptera 5 + 15, skulle alla kombinationer inte fungera.

Men igen, eftersom jag försöker alla möjliga kombinationer, skulle det vara en tid då jag skulle försöka 5 + 15 och det skulle knäcka algoritmen.

Återigen kan programmeraren försöka hålla det begränsade antalet försök och mycket mer säkerhetsstruktur emellan, men även för det har vi många verktyg för att kringgå det.

Obrottslig algoritm eller myt?

Så frågan är om det finns något som kallas en obrottslig algoritm eller är det bara en myt. Svaret är båda. Jag läste nyligen några saker på internet, där jag läste en berömd offert:

"Omöjligt betyder bara att man inte har testat alla lösningar"

Ja. Så fungerar algoritmer. Låt oss ta ovanstående fall. Låt oss anta att det finns en annan algoritm som går som:

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

Ja. Så här skriver du en okrossbar algoritm. Saken är att en anständig dator med ett bra grafikkort kan enkelt knäcka detta med oclhashcat. Men det är bara ett exempel. Här kan kombinationerna vara som vad som helst.

Svaret är ett negativt nio, vilket innebär att i a, b, c, d, e och f kan det finnas några få siffror som är negativa, att minst ett stort antal dras av med ett litet antal.

Detta tar mig tillbaka till våra första algoritmexempel på a + b = 20. Även här kan det finnas mycket fler kombinationer som -1 + 21 eller -29354+ 29374. Att få min poäng.

Så, teorin om okrossbara algoritmer går bara så långt som ett mänskligt sinne kan tänka på. Obrytbara algoritmer är ingen myt. En välskriven algoritm kan ta upp till 2-3 eller fler månader att knäcka även av en dator, som den WPA2-krypterade grejer.

Saken är att man måste ha tålamod att stanna i mental fred tills det löses. Enligt matematik finns det ingen sådan algoritm som inte kan knäckas. Det behöver bara någon som faktiskt intresserar sig för det.

Bästa språk att skriva algoritmer

Ärligt talat finns det officiellt inget specifikt språk som är utmärkt för att skriva algoritmer.

Funktionella språk har dock en överhand, varför de är mycket mer överlägsna vad gäller beräkningar och matematik än andra objektorienterade språk. Men jag skulle bara lista på några av dem som jag tycker är tillräckligt bra för att koda matematik i:

  • Python och Ruby

Först och främst skulle jag rekommendera språk på hög nivå. Språk på hög nivå är lättare att komma på med. Anledningen till att dessa språk är lättare är att, till skillnad från C eller något annat lågnivåspråk, är dessa språk lättare när det gäller läsning.

Till och med deras syntax är så lätt att bara en ren nybörjare skulle förstå det utan att någon lär dem.

Alla vanliga datastrukturer på dessa språk har abstraktioner. Du kan till och med bygga dina egna implementerade versioner och bygga datastrukturer på datastrukturer. Dessa språk skrivs dynamiskt.

Men det finns bara ett problem här som det kan vara lättare för en programmerare att börja med, men när de kör tester kan de se massor av fel som de inte såg innan körtiden, till skillnad från andra språk på låg nivå.

  • C

C är exakt motsatsen till Python här. Du kan till och med bli förvirrad här för även om C är ett språk på hög nivå, ser vissa människor till och med det som ett lågnivåspråk på grund av dess sätt att koda.

Även C är mycket bra när det gäller abstraktion här. Om du använder algoritmer kan du senare en eller annan dag behöva lära dig ordentligt lågnivåspråk som församlingen.

Det är viktigt att om du känner C mycket väl skulle det vara ganska enkelt att migrera från C eller någon annan typ av språk till mötesspråk. Minneshantering är också mycket bra i C och detta är mycket viktigt för algoritmer.

  • Java

Många människor hatar faktiskt Java för att vara för ordlista och strikta. Även vissa säger att det saknar många funktioner som finns tillgängliga på moderna sofistikerade språk. Men detta pekar inte faktiskt på att vara bekymrad över.

Java, till skillnad från Python, är inte ett dynamiskt typspråk. Det är ett statiskt typspråk och har massor av sopor.

Detta innebär att Java faktiskt kommer att visa fel under kompilering och till och med före körning. Och jämfört med andra högnivåspråk har Java en extremt låg minnesläcka som uppenbarligen kan fixas och har inga segmenteringsfel.

  • C # och C ++

C # liknar nästan Java. Det är mer som Java med det moderna språket. Vissa människor gillar att använda till och med C ++. Men det är extremt onödigt komplicerat.

Vissa människor använder det eftersom eftersom det är svårt att förstå, men när du lyckas knäcka det kommer människor på allvar att ha svårt att förstå dina algoritmer vilket gör det perfekt för jobbet. C # har å andra sidan skräpkollektion som liknar Java.

Det finns också andra funktionella språk som Haskell (Lisp Family) och Scala (baserat på Java). Du kan läsa mina andra bloggar på dem där jag har skrivit i detalj om hur de fungerar och saker. Java, C och C ++ körs alla på en eller den andra virtuella maskinen.

Medan Ruby och Python är tolkar på sin tolk.

Om du frågar mig, skulle jag föredra C #, eftersom det har alla moderna funktioner och också skulle göra det lättare att hamna till lägre programmeringsspråk. I vetenskapliga termer har den egenskaperna Java, Scala, C och lägre språk.

Om du bara vill börja med algoritmer kan du förmodligen överväga att använda Visual Studio Community Edition eller Visual Studio Express. Du skulle förmodligen behöva köpa det förutom att i fallet med python skulle de flesta saker du vill vara gratis.

Rekommenderade artiklar: -

Här är några artiklar som hjälper dig att få mer detaljerad information om programmeringsspråk för att lära sig algoritmer så bara gå igenom länken.

  1. 8 Fantastiska algoritmintervjufrågor och svar
  2. De bästa algoritmerna och kryptografin (exempel)
  3. Bästa datastrukturer och algoritmer C ++ | Grunderna
  4. Datastrukturer och algoritmerintervju

Kategori: