window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Lõplik lagunemine: Ruby vs. Python - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-09-22
Tarkvaraarendus

Lõplik lagunemine: Ruby vs. Python

Łukasz Brzeszcz

Ruby ja Python on kaks suurepärast programmeerimiskeelt tõlgenduse ja dünaamilise tüpiseerimise mõttes. Nende rakenduste, populaarsuse ja kogukonna kohta saate lugeda ühest selle blogi sissekandest. Neil keeltel on palju ühist, kuid ka palju erinevusi. Selles artiklis tutvustan mõningaid neist.

Sarnasused

Kuna need keeled võib lisada samasse dünaamiliselt tüpiseeritud interpreteeritud keelte kategooriasse, siis ei ole kahtlust, et nad on sarnased.

Dünaamiline sisestamine

Mõlemad Python ja Ruby on dünaamiliselt tüpiseeritud keeled. Selle tulemusena ei pea programmeerija muutujate tüüpi määrama muutujate kirjutamisel kood. Nende tüüp määratakse programmi töötamise ajal ja see võib muutuda. Muutuja tüüp tuletatakse sellesse salvestatud väärtusest. Järgnev kood töötab nendes keeltes korrektselt:

 muutuja = 1
 variable += 2.5
 variable = 'sample string'
 variable = [2, 3.5, 'sample string']

Puhas süntaks

See on muu hulgas seotud eespool esitatud punktiga. Tänu sellele, et ei ole vaja deklareerida tüüpe, lõpetada avaldised semikooloniga, ja ka sellele, et tegemist on skriptikeelega, on nii kirjutamine kui ka lugemine lihtne. Hästi kirjutatud kood on loetav ka inimestele, kes ei ole nende keeltega varem kokku puutunud.

Neil on interaktiivsed konsoolitõlgid

Kui soovite sooritada lihtsat toimingut või testida koodi, ei ole vaja luua faili ja käivitada koodi spetsiaalse käsu abil. Nii Ruby kui ka Python omavad interaktiivseid konsoolitõlkeid (REPL). Python puhul saame sellise interpretaatori käivitada käsuga python (võipython3), samas kui Ruby puhul võib see olla näiteks, irb:

$ irb
 2.5.8 :001 > tulemus = 2 + 1
 => 3
 2.5.8 :002 > tulemus += 3.5
 => 6.5

Erinevused

Kuna need on erinevad programmeerimiskeeled, muidugi peavad neil olema erinevused (ma tean, milline paljastav väide). Python ja Ruby puhul on need erinevused arvukad. Kirjeldan mõningaid minu arvates kõige olulisemaid.

Sügavused

Sügavus on Python puhul väga oluline. Kõik koodiplokid on määratletud taandamisega. Oluline on, et iga rida antud plokis oleks ühesuguse taandumisega. Vastasel juhul saame koodi käivitamisel IndentationError. Ruby kasutab teistsugust lähenemist. Siin on koodiblokk piiratud märksõnadega. Me eristame algussõna (nt.begin, if, class, def) ja lõppsõna lõpp. Ei ole oluline, kuidas kood on koodiplokis sissepandud.

Pärimine

Üks objektorienteeritud programmeerimise põhijoontest. Õigetes kätes võib see imet teha. Python toetab mitme baasiga pärimist:

 example.py
 class ClassA:
     def callA(self):
         print('callA')
 class ClassB:
     def callB(self):
         print('callB')
 class ClassAB(ClassA, ClassB):
     pass
 class_inst = ClassAB()
 class_inst.callA()
 class_inst.callB()

Selle tulemusena saame:

 $ python3 example.py
 callA
 callB

Ruby toetab vaikimisi ainult ühe baasi pärimist, kasutades operaatorit <. Siiski on võimalik simuleerida mitme baasiga pärimist, kasutades mooduleid:

example.rb
klass ClassA
def calla
puts 'calla'
end
end

moodul ModuleB
def callb
puts 'callb'
end
end

class ClassAB < ClassA
include ModuleB
end

classinst = ClassAB.new
classinst.calla
classinst.call_b

Mis annab meile:

 $ ruby example.rb
 call_a
 call_b

lisada on vaid üks Ruby's olemasolevatest seguniversaalidest. Mixins on viis lisafunktsionaalsuse lisamiseks klassidele. Ruby's on kolm mixins'i.

Lisada

Kui me helistame lisada klassi definitsioonis, muutub lisatud moodul selle klassi otseseks esivanemaks. See tähendab, et iga mooduli meetod muutub selle klassi meetodiks. Me võime neid klassis üle kirjutada ja kutsuda ka algset (moodulis defineeritud) meetodit kasutades super märksõna.

example.rb
moodul ModuleA
def print_something
puts 'Teade moodulist'
end
end

klass ClassB
include ModuleA

def print_something
puts 'Teade klassilt'
super
end
end

ClassB.new.print_something

Tulemus:

 $ ruby example.rb
 Klassi sõnum
 Teade moodulist
 

Esileedi

See töötab peaaegu nagu lisada, kuid eelistatud moodul muutub klassi otseseks järeltulijaks. See tähendab, et me ei saa klassis mooduli meetodit üle kirjutada, kuid mooduli meetod võib kutsuda klassi meetodit kasutadessuper märksõna.

example.rb
moodul ModuleA
def print_something
puts 'Teade moodulist'
super
end
end

klass ClassB
prepend ModuleA

def print_something
puts 'Teade klassilt'
end
end

ClassB.new.print_something 

Tulemus:

 $ ruby example.rb
 Teade moodulist
 Teade klassist

Laiendada

See toimib sarnaselt include'iga, kuid moodulis defineeritud meetodid muutuvad klassi meetoditeks.

Tulemus:

 $ ruby example.rb Mooduli sõnum

Funktsioonid ja plokid

Python-l on funktsioonid. Ruby toetab ainult meetodeid. Mida see tähendab? Muuhulgas saab Python funktsiooni hoida muutujas ja anda selle argumendina edasi teisele funktsioonile. Ruby's ei saa me seda nii lihtsalt teha. See on seotud ka sulgudes. Antud funktsioon, millel pole Python-s argumente või mille argumendid on vaikimisi, kui kasutate selle nime ilma sulgudeta, siis tagastatakse funktsioon. Ainult sulgude lisamine viib selle täitmiseni. Ruby's saame funktsioone kutsuda ilma sulgudeta:

example.py
def inner_function():
print('Sisemine funktsioon')

def wrapper_function(function):
print('Wrapper function')
# funktsioon on muutuja, mis sisaldab funktsiooni objekti
function() # sisemine funktsioon kutsutakse siin välja.

wrapperfunction(innerfunction)

Tulemus:

 $ python3 example.py
 Wrapper funktsioon
 Sisemine funktsioon

Rubiinis:

example.rb
def inner_function
puts 'Sisemine funktsioon'
end

def wrapper_function(function)
puts 'Wrapper function'
function
end

wrapperfunction(innerfunction) # inner_function kutsutakse siin.

Tulemus:

 $ ruby example.rb
 Sisemine funktsioon
 Wrapper funktsioon

Loomulikult saab sellisel juhul teha Ruby's mõningaid trikke, et saavutada soovitud efekt. Esiteks saame kasutada Proc-objekti:

example.rb
def inner_function
puts 'Sisemine funktsioon'
end

def wrapper_function(function)
puts 'Wrapper function'
function.call
end

func = Proc.new { innerfunction }
wrapperfunction(func)

Tulemus:

 $ ruby example.rb
 Wrapper funktsioon
 Sisemine funktsioon

Teine lähenemisviis on kasutada plokke:

example.rbdef inner_function
puts 'Sisemine funktsioon'
end

def wrapper_function
puts 'Wrapper function'
yield
end

wrapperfunction do
innerfunction
end

Tulemus:

 $ ruby example.rb
 Wrapper funktsioon
 Sisemine funktsioon

Loetelu mõistmine

See on väga kasulik Python funktsioon. See seisneb nimekirja loomises teise nimekirja alusel. Oletame, et meil on selline ülesanne: antud numbrite loetelu, koostada nimekiri paaritu arvu ruutudest. Pythons kasutame loendi mõistmist:

 numbrid = [1, 3, 4, 7, 8, 12, 15]
 tulemus = [num*num for num in numbers if num % 2]

Eeliseks on see, et meil on mälus ainult kaks nimekirja.

Ruby's on asjad veidi teisiti. Selle ülesande lahendamiseks on mitu võimalust. Esitan neist kõige loetavama:

numbrid = [1, 3, 4, 7, 8, 12, 15]
 result = []
 numbers.each { |num| result << num * num if num.odd? }

Nagu näeme, saab seda teha, kuid mitte nii elegantselt kui Python-s.

Kõik klassid on muudetavad

Ruby's on kõik klassid muutuvad. Mida see tähendab? Me võime lisada või üle kirjutada kõikide klasside meetodeid, isegi sisseehitatud klasside omad. Oletame, et tahame meetodit, mis muudab iga tähe an stringis b-ks. Me saame seda teha lihtsal viisil:

example.rb
klass String
def atob!
self.gsub!(/a/, 'b')
end
end

string = 'Näidis string paljude a-tähtedega'
puts string
string.atob!
puts string

Tulemus:

 $ ruby example.rb
 Näide string paljude a-tähtedega
 Näide string mbny b-tähtedega

Kokkuvõte

Veebiarendus on olnud dünaamiline valdkond, mis võtab pidevalt vastu ja kujundab erinevaid programmeerimiskeeled oma vajadustele. Kaks populaarset valikut selles valdkonnas on Python programmeerimiskeel ja Ruby. Mõlemad on tõestanud oma väärtust veebirakenduste ehitamine ja muud liiki tarkvara, millel kõigil on oma unikaalsed eelised ja puudused.

Python on kõrgetasemeline programmeerimiskeel austatud oma lihtsuse ja koodi loetavus, mis sageli meeldib algajatele programmeerijatele. Veebileht Python programmeerimiskeel on mitmekülgne ja seda saab kasutada mitmesuguste ülesannete täitmiseks. See üldotstarbeline programmeerimiskeel kasutatakse sageli sellistes valdkondades nagu masinõpe, suured andmed ja eelkõige, veebiarendus. Laialdane Python arendajate kogukond aitab kaasa selle raamatukogude ja raamistike rikkalikule ökosüsteemile, mis suurendab selle sobivust veebirakenduste ehitamine. Django, Flask ja Pyramid on erinevate Python veebiraamistikud võimendatud veebiarendajad üle maailma.

Teisalt, Ruby, teine kõrgetasemeline üldotstarbeline programmeerimiskeel, paistab silma oma paindlikkuse ja väljendusrikkusega. See objektorienteeritud programmeerimiskeel on paljude ettevõtete selgroog veebirakendused. Rubiini võlu seisneb tema võimekuses hõlbustada veebiarendus läbi Rails raamistik, võimas vahend veebirakenduste ehitamine kiiresti.

Ruby, kuigi vähem populaarne kui Python, võib uhkeldada aktiivse ja pühendunud Ruby kogukond mis pidevalt arendab ja hooldab raamatukogude ja tööriistade valikut, rikastades seeläbi kogemust veebiarendajad kasutades seda keelt. Kuna objektorienteeritud keel, Ruby on hinnatud oma elegantsuse ja puhta, loetava koodi poolest, mis teeb sellest sobiva valiku nii väikeste kui ka suuremahuliste projektide jaoks. veebirakendused.

Python ja Ruby, nagu objektorienteeritud programmeerimiskeeled, on palju sarnast. Nad toetavad ka funktsionaalne programmeerimine, pakkudes programmeerijatele erinevaid stiile koodimiseks. Python koodhinnatakse eelkõige selle lihtsa süntaksi eest, mis rõhutab keele rõhuasetust lihtsusele ja loetavus.

Igal keelel on oma tugevused; Python'd mitmekülgsus ja lai kogukond tugi teevad sellest suurepärase tööriista erinevate ülesannete jaoks, samas kui Ruby väljendusrikkus ja Rails raamistik muudab selle tugevaks kandidaadiks veebirakendus areng. See on ainulaadne vajaduste ja eelistuste veebiarendajad mis määrab, milline keel teenib kõige paremini nende projekt.

Valdkonnas operatsioonisüsteemid, näitavad mõlemad keeled muljetavaldavat kaasaskantavust, mis suurendab veelgi nende sobivust paljude ülesannete jaoks, mis ei piirdu ainult järgmisega veebiarendus. Seetõttu on keeruline selles duellis lõplikku "võitjat" välja kuulutada.

Kuigi Python programmeerimiskeel on laiema ulatusega ja suurem kogukond, ei tohiks Ruby võimalusi alahinnata. Nende keelte täielikuks hindamiseks tuleb neisse süveneda, mõista nende keerukust ja rakendada neid seal, kus nad kõige rohkem särama hakkavad. Olenemata sellest, kas te olete veebirakenduste loomine koos Python või Ruby, iga keel pakub töökindlat platvormi, et pakkuda kvaliteetset veebirakendused. Ruby, kuigi vähem tuntud, väärib kindlasti oma väärilist tunnustust maailmas programmeerimiskeeled.

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

    etEstonian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch elGreek etEstonian