Kirjoittaja Aihe: Kuinka muuttaa C++ ohjelmisto Pythonille?  (Luettu 3182 kertaa)

ilkant

  • Käyttäjä
  • Viestejä: 1380
  • Kubuntu
    • Profiili
Kuinka muuttaa C++ ohjelmisto Pythonille?
« : 30.11.22 - klo:05.38 »
Tässä yhden avoimen lähdekoodin ohjelman kehittäjäyhteisö alkanut miettiä ohjelmankehittämisen tehostamista. Ohjelmisto on koodattu C++:lla ja siinä käytetään aika paljon Qt::tä. Ohjelman käyttämä omaperäinen tietokantamuotokin on ollut keskustelun alla. On ollut tarpeita tehdä siitä loogisempi ja helpommin hallittava. Ohjelmointikieliä on ollut esillä Java, Python, Ruby, Go ja sitten on voinut ehdottaa itse jotain kieltä.

Onko vinkkejä, miten avoimen lähdekoodin projektin voisi portata C++:sta Pythoniin? Ohjelma on monikielinen, joten ensimmäisenä on tullut kysymys, miten Pythonilla voi koodata monikielisyyden (Internationalization, Localization). Pythonilla tietääkseni voi kutsua myös C++ -moduuleita, jos on jotain kriittisiä koodinpätkiä.

Jere Sumell

  • Käyttäjä
  • Viestejä: 742
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Vs: Kuinka muuttaa C++ ohjelmisto Pythonille?
« Vastaus #1 : 01.12.22 - klo:13.22 »
Itse ja joskus selvittelin selaillen nettiä oikeilla hakusanoilla vastaavaa.

Itselläni oli lähdekieli C ja kohdekieli oli muistaakseni ja Python. Mitään One-Click -Solution -kääntäjää ei ole olemassa käsittääkseni tuolle kieliparille.

Vaikuttaa siltä, että vaikka nyt jotain C++ -koodin osia saisikin joiltain osin käännettyä (compile) Pythonille, varmaan vaatii tuossa teidän projektissa paljon myös käsityötä se koodin muokkaus.

Ei äkkiseltään tullut mitään tulosta Google-haulla, kun katsoin "C++ compiiling Python", lähinnä tuli lähteitä, miten Pythonissa kutsutaan C++-funktioita.

Kääntäjähän on siis se työkalu, jolla tietokonekielestä toiseen käännetään se lähdekoodi toiselle kielelle. C++ -kääntäjä esimerkiksi kääntää sen ihmisen kirjoittaman lähdekoodin karkeasti ottaen sitten konekieliseen muotoon, jotta tietokone ymmärtää ajaa sitä ohjelmaa, kun Intelin prosessoritehtaalla poltettuna hyvin alhaisen tason "mikro-ohjelma"  siihen prosessoripiirin ROM-muistiin, että tietokone ymmärtää sitä käännöstä. Mutta siinä on muitakin vaiheita siinä kääntäjän toiminnassa, mutta tuossa ne ainoastaan alku->lopputuloste.

De- etuliitteellä tuo compiler on sitten siitä konekielisestä ohjelmasta muutettuna ihmisen ymmärtämään lähdekoodi-muotoon. En ole koskaan kuullut, että tietojenkäsittelyn tuo kääntäjä -compiler termi saisi muita etuliitteitä, kuin tuon de, mitä niitä on englannin kielessä muitakin, esim. in, DEcremenet, INcrement, DEcrease,INcrease, onhan niitä muitakin, esim EN. Jos nyt ajatellaan jotan koodi sanaa, Code, Decode, Encode.

Siinähän sinulle oma projekti? Ala kehittämään C++-> Python -kääntäjää ainakin niiltä lähdekoodin osilta, jotka on koneellisesti mahdolista kääntää. Kääntäjän toiminta nyt on julkisesti netti täynnä lähteitä, miten se toimii.

Oliko tästä mitään valaisevaa apua?
« Viimeksi muokattu: 01.12.22 - klo:13.32 kirjoittanut Jere Sumell »
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: Kuinka muuttaa C++ ohjelmisto Pythonille?
« Vastaus #2 : 01.12.22 - klo:13.32 »
Onko vinkkejä, miten avoimen lähdekoodin projektin voisi portata C++:sta Pythoniin?

Koodaamalla uudelleen.  :)


Ohjelma on monikielinen, joten ensimmäisenä on tullut kysymys, miten Pythonilla voi koodata monikielisyyden (Internationalization, Localization).

Esimerkiksi gettextillä, joka kuuluu standardikirjastoon:
https://docs.python.org/3/library/gettext.html


Pythonilla tietääkseni voi kutsua myös C++ -moduuleita, jos on jotain kriittisiä koodinpätkiä.

Joo, on mahdollista, mutta vaatii jonkin verran ylimääräistä wrapperikoodia ja datan muuntelua tyypistä toiseen.

ilkant

  • Käyttäjä
  • Viestejä: 1380
  • Kubuntu
    • Profiili
Vs: Kuinka muuttaa C++ ohjelmisto Pythonille?
« Vastaus #3 : 02.12.22 - klo:01.41 »
Siinähän sinulle oma projekti? Ala kehittämään C++-> Python -kääntäjää ainakin niiltä lähdekoodin osilta, jotka on koneellisesti mahdolista kääntää. Kääntäjän toiminta nyt on julkisesti netti täynnä lähteitä, miten se toimii.
Oliko tästä mitään valaisevaa apua?

Kyllä noista jotain apua on. Minä välitän vain tietoja. En ota itse tästä mitään projektia. Voin olla hanslankarina kylläkin tuossa. Ihan senkin takia kun on vähäisellä koodauksellakin ymmärtänyt Pythonin ja C++:n erot abstraktiossa (verbi on abstrahoida ja substantiivi lienee abstraktio), niin voisi hyvinkin suositella muutosta. Toiseksi vielä ohjelmisto on saavuttanut jonkunlaisen kypsyystason ja sen kehittäjä-ohjelmoijilla ei ole nyt niin paljon tekemistä.  :D Tietokantamuodon muutokseenkin menee varmasti suunnittelutyötä. Se ei mielesätni ole kiinni toteutuskielestä vaan siinä muutetaan vain tietorakenteita.

Loppukäyttäjälle tuosta muutoksesta ole välttämättä mitään hyötyä. Mutta ohjelmiston ylläpidettävyys paranee. Ja sitten se, että kehittäjillä on oltava aina tekemistä.

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: Kuinka muuttaa C++ ohjelmisto Pythonille?
« Vastaus #4 : 02.12.22 - klo:07.54 »
Tässä yhden avoimen lähdekoodin ohjelman kehittäjäyhteisö alkanut miettiä ohjelmankehittämisen tehostamista. Ohjelmisto on koodattu C++:lla ja siinä käytetään aika paljon Qt::tä. Ohjelman käyttämä omaperäinen tietokantamuotokin on ollut keskustelun alla. On ollut tarpeita tehdä siitä loogisempi ja helpommin hallittava. Ohjelmointikieliä on ollut esillä Java, Python, Ruby, Go ja sitten on voinut ehdottaa itse jotain kieltä.

Onko vinkkejä, miten avoimen lähdekoodin projektin voisi portata C++:sta Pythoniin? Ohjelma on monikielinen, joten ensimmäisenä on tullut kysymys, miten Pythonilla voi koodata monikielisyyden (Internationalization, Localization). Pythonilla tietääkseni voi kutsua myös C++ -moduuleita, jos on jotain kriittisiä koodinpätkiä.

Aluksi kannattaa tutkia sitä onko vastaavaa ohjelmistoa jo mahdollisesti tehty toisella ohjelmointikielellä. Siis ellei välttämättä halua keksiä pyörää uudestaan alusta asti.


ilkant

  • Käyttäjä
  • Viestejä: 1380
  • Kubuntu
    • Profiili
Vs: Kuinka muuttaa C++ ohjelmisto Pythonille?
« Vastaus #5 : 02.12.22 - klo:19.04 »
Aluksi kannattaa tutkia sitä onko vastaavaa ohjelmistoa jo mahdollisesti tehty toisella ohjelmointikielellä. Siis ellei välttämättä halua keksiä pyörää uudestaan alusta asti.

Tuolle Oscarille ei ole vastaavaa ohjelmaa. Ja se päihittää ominaisuuksissa jopa ammattilaisohjelmat joissakin suhteissa. ResMed julkaisee omaa ResScan, mutta se ei ole niin hyvä kuin Oscar.

Tässä on Oscarin lataussivusto, jonka alalaidassa on linkit koodeihin, jos joku haluaa tutustua. Minusta tuosta ohjelmasta ei ole kunnollisia esittelysivuja. Niitä on, mutta kun ne on tehty ilmaisille sivustoille, jotka pukkaavat paljon mainoksia, niin ei ole kiva.

Noita C++:lla tehtyjä avoimen lähdekoodin ohjelmistoja on muitakin. Mieleen tulee heti eräs KDE.
« Viimeksi muokattu: 02.12.22 - klo:19.09 kirjoittanut ilkant »