Programmcode Grundgerüst

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

Guten Abend,

Wenn ich in das falsche Forum posten sollte tut es mir wirklich leid.
Ich bin ein blutiger Anfänger wenn es um programmieren geht.

Meine Frage ist,

gibt es ein Grundgerüst von den Scripts/ Codes , also mit was man am besten anfängt womit man weiter macht und endet.
Man kann ja nicht einfach drauf losprogrammieren wenn man nicht weiß mit was man anfängt usw.

Danke schon mal im voraus.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Vielleicht sowas wie:

Code: Alles auswählen

def main():
   pass

if __name__ == '__main__':
   main()
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Und in main() kann man dann weitere Funktionsaufrufe zu leeren Funktionen packen. Ggf. noch mit Parametern wenn man den ungefähren Aufbau weiß.

Allgemein ist dieser Ansatz als Top-Down bekannt, Bottom-Up wäre die umgekehrte Variante.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich würde ja auch noch den Shebang setzen:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8
Encoding kann man auch weglassen, wenn man für Python3 programmiert oder entsprechend abändern, wenn man - wieso auch immer - nicht in UTF-8 programmiert. Ggf. muss man dann noch den Python-Aufruf anpassen und eine "2" oder "3" anhängen; das hängt ja vom OS ab.

Je nach Gusto / Anforderung kann man noch einen Lizenz-Kommentar einbauen, oder sogar einen Modul-Doc-String, der bereits den Autornamen und seine Email setzt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Hyperion hat geschrieben:Encoding kann man auch weglassen, wenn man für Python3 programmiert oder entsprechend abändern, wenn man - wieso auch immer - nicht in UTF-8 programmiert.
Oder wenn alle sich alle Zeichen in der Datei innerhalb des ASCII-Encodings befinden.
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

Danke für die Antworten,

ich habe eher an sowas gedacht,

Code: Alles auswählen

# -*#!/usr/bin/python
- coding: utf-8 -*-
def begin():
    print 'begin'
def commit():
    print 'commit'
def rollback():
    print 'rollback'
def commit_on_success(func):
    '''
    Führe commit() aus, falls die dekorierte Funktion keine Exception
    wirft. Ansonsten wird rollback() aufgerufen.
    '''
    def _commit_on_success(*args, **kw):
        begin()
        try:
            res = func(*args, **kw)
        except Exception, e:
            rollback()
            raise # Re-raise (aufgefangene Exception erneut werfen)
        else:
            commit()
        return res
    return _commit_on_success

@commit_on_success
def foo(do_raise):
    if do_raise:
        raise Exception()

foo(False)  # --> commit()
foo(True)   # --> rollback()

'''
===> python deco.py
begin
commit
begin
rollback
Traceback (most recent call last):
  File "tmp/deco.py", line 32, in <module>
    foo(True)   # --> rollback()
  File "tmp/deco.py", line 17, in _commit_on_success
    res = func(*args, **kw)
  File "tmp/deco.py", line 29, in foo
    raise Exception()
Exception
'''
Er hat also ein Programm / Script im Kopf und will es programmieren, woher weiß ich das ich in

#!/usr/bin/python
# -*- coding: utf-8 -*-

anfangen muss und das es Sachen für mein Programm beinhaltet ?

und ich dann weiter mache mit

def begin():
print 'begin'
def commit():
print 'commit'
def rollback():
print 'rollback'
def commit_on_success(func):

und nicht mit was anderen anfange ?

Sorry wenn ich nerven sollte.

Danke an alle
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Es wurde dir ja schon zwei Posts weiter oben vorgeschlagen den Shebang und die Enkodierung an den Anfang zu setzen. Das dadrunter sind Funktionen, die später wohl mit sinnvollerem Code als den Print-Anweisungen gefüllt werden, noch weiter oben wurde dir ja vorgeschlagen ähnliches Verhalten mit pass hinzubekommen.

Die Struktur selbst hat er sich entweder überlegt (zusammen mit ihm sinnvoll erscheinenden Namen für alles) oder aufgrund von gelesener Literatur/Code gewusst wie er in etwa vorzugehen hat. Je mehr Erfahrung man hat, desto eher wird man mithilfe dieser letztere Variante nutzen können.
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

ahhhh ok,

jetzt verstehe ich es langsam, das heißt die Programmierer haben auch nicht alle Scripts oder Anwendungen im Kopf sondern müssen auch öfter nachschlagen ?
Und die Scripte sind Individuell von einander unabhängig programmiert es gibt also kein Muster oder Vorlage ?
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Es gibt in weiterführender Literatur schon Muster und Vorlagen (wie zum Beispiel Pattern/Anti-Pattern als Vorgabe wie man etwas zu gestalten hat), aber man muss sich nicht an diese halten. In dem Sinne erinnert mich Programmierung ans Kochen, denn man kann sowohl wenn man nach Rezept vorgeht als auch wenn man weitestgehend improvisiert ein guter wie auch schlechter Koch sein.

Und ja, Nachschlagen ist kein Verbrechen, Die Dokumentationen existieren schließlich dazu um genutzt statt auswendig gelernt zu werden :mrgreen:
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Kakaroto hat geschrieben:jetzt verstehe ich es langsam, das heißt die Programmierer haben auch nicht alle Scripts oder Anwendungen im Kopf sondern müssen auch öfter nachschlagen?
Man hat als Softwareentwickler vor allen Dingen Konzepte im Kopf und modelliert dann die Anwendung entsprechend. Erfahrung hilft da ungemein.
Kakaroto hat geschrieben:Und die Scripte sind Individuell von einander unabhängig programmiert es gibt also kein Muster oder Vorlage?
Es gibt gewisse Entwurfsmuster die mehr oder weniger sinnvoll anzuwenden sind. Andere Muster können sich aus dem Stil der Programmiersprache ergeben - daher merkt man am Code auch immer sofort wenn ein Java-Programmierer seine ersten Python-Gehversuche macht.

Bei den Programmen selber ist davon auszugehen, dass sie individuell sind. Identische Funktionalität würde man als guter Entwickler nicht mehrfach schreiben sondern an geeigneter Stelle zusammenfassen, egal ob das in der Objekthierarchie oder einer Funktionssammlung ist.
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

danke für die Hilfe :D

Wie lange brauch mal denn ungefähr um langsam ein (kleines) Script / Programm zu schreiben / verstehen zu lesen ?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Kakaroto hat geschrieben: Wie lange brauch mal denn ungefähr um langsam ein (kleines) Script / Programm zu schreiben / verstehen zu lesen ?
Diese Frage ist pauschal nicht zu beantworten. Was ist denn ein kleines Script?
`print "Hallo Welt"` ist ja bereits ein fertiges Script. Dazu braucht wohl niemand sehr lange - weder zum Schreiben als auch zum Verstehen. So etwas hängt doch vom Intellekt, der bisherigen Erfahrung (Programmieranfänger / Umsteiger von einer anderen Sprache) und dem Lernwillen bzw. der Lernfähigkeit ab.

Wenn Du es für Dich wissen willst, dann fange einfach an, Python zu lernen und stoppe die Zeit :mrgreen: Damit hast Du einen empirischen Datensatz ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

gut werde ich tun,

habe mir jetzt viele Bücher und nen Video2Brain über Python besorgt werde mal versuchen es in meinen kleinen Kopf zu bekommen.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Eines der hier gerne empfohlenen Tutorials hätte es übrigens auch getan :wink:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

webspider hat geschrieben:Eines der hier gerne empfohlenen Tutorials hätte es übrigens auch getan :wink:
Diese sind oftmals sogar besser, weil in Büchern gerne mal Stuss steht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Oder auch aktueller, da es ja Zeit braucht ein Buch zu schreiben und zu veröffentlichen. Würde daher in den meisten Fällen Online-Material vorziehen, allein schon weil es sich besser in meine Entwicklung integriert ein Dokument neben meinem Editor offen zu haben.
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

ok,

welche würdet ihr sagen helfen mir denn ??

Ich bin IT - Systemelektroniker (also mit PC kenne ich mich aus ) aber mit Programmierung habe ich nicht viel am Hut gehabt bis jetzt.
Also was würdet ihr denn sagen, was für einen Blutigen Anfänger geeignet wäre ?
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Das offizielle Python-Tutorial, Learn Python The Hard Way, A Byte Of Python, Dive Into Python, oder was auch immer für dich verständlich ist und zu der Python-Version passt die du gerade erlernen möchtest (es gibt ja seit einiger Zeit Python 3, welches nicht abwärtskompatibel zu Python 2 ist). Dazu kannst du noch die Dokumentation hinzunehmen und dürftest alles haben was du vorerst brauchst.

Ich hoffe du verstehst Englisch, sonst könnte das ein wenig problematisch werden :)
Kakaroto
User
Beiträge: 7
Registriert: Mittwoch 9. Mai 2012, 21:05

danke für deinen Rat :D ,

auch wenn ich kein englisch könnte, würde ich es auf deutsch übersetzt finden =)

http://abop-german.berlios.de/ #A Byte of Python auf Deutsch übersetzt
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Kakaroto hat geschrieben:auch wenn ich kein englisch könnte, würde ich es auf deutsch übersetzt finden =)

http://abop-german.berlios.de/ #A Byte of Python auf Deutsch übersetzt
Aber halt nicht für Python 3 sondern die Fassung von 2005, also 7 Jahre her.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten