(Moderne) Programmiersprache für Anfänger?

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Thunder

Betreff: (Moderne) Programmiersprache für Anfänger?

BeitragDo, Aug 10, 2017 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe Blitz-Community,

hätte eine Frage an euch, was etwas ironisch ist: Welche Programmiersprachen kennt ihr, die gut für den Einblick ins Programmieren sind?

Hintergrund: Ich würde meiner Freundin gerne zeigen, was ich tue, damit sie Programmieren nicht (mehr) für schwarze magie hält Smile und zwar möglichst in einer Weise, die auch interessant ist und nicht an komplizierter Syntax oÄ scheitert.
Es soll eine kleine Einführung sein (a la Hour of Code, aber mit echtem Programmieren) und kein kompletter Kurs, das heißt Fokus auf Hands-on und losprogrammieren, keine Konzepte wie OOP etc.

Was ich gerne hätte:
- Einfache Sprache, wenig Syntax
- Mit einfachen Grafikfunktionen (würde gerne schnell zu grafik kommen, weil die Erfolge dann größer wirken)
- die sprache soll auch keine konzepte aufzwingen (siehe oben, OOP)
- wenn möglich auf Linux lauffähig (muss aber nicht sein, hab schon eine Windows VM auch heruntergeladen)

Was ich mir überlegt habe:

Natürlich dachte ich als erstes an BlitzBasic Razz Aber das hat auch seine Tücken und ist schon etwas in die Jahre gekommen.

Python mit PyGame. Ist aber zu kompliziert. PyGame braucht Klassen und die Python Syntax ist zwar sehr reduziert, aber ich denke dass sie doch nicht so einfach zu erlernen ist wie eine Basic Syntax.

FreeBASIC. kurz angedacht, aber die Syntax ist mir einfach zu wortreich (habe gerade verbose in dict.cc übersetzt):
Code: [AUSKLAPPEN]
DIM TPlayerPosX AS UINTEGER = 200
' warum nicht einfach:
TPlayerPosX = 200


SmallBasic von Microsoft. Extrem reduzierte Syntax, grafikfunktionen sind drinnen, IDE ist simpel und funktional. Wie ich das sehe, wenig Möglichkeiten, Fehler zu machen. Gefällt mir eigentlich sehr gut.

Bin also insgesamt ziemlich an Basic Syntax orientiert.
So, ich frage natürlich euch für weiteren Input, ich möchte mich gut vorbereiten, damit es kein Misserfolg wird.
Würde mich freuen, wenn von euch jemand Erfahrungen hat und sie teilen würde! Smile
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

ohaz

BeitragDo, Aug 10, 2017 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nutze die https://godotengine.org/ Godot Engine. Sie hat Python-ähnliche Syntax und Grafik gibts auch ganz schnell.

DAK

BeitragDo, Aug 10, 2017 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab letztens zwei 14-Jährigen in rund 2 Stunden Python soweit beigebracht, dass sie mit PyGame ein kleines Spiel haben schreiben können.

OOP in PyGame ist nur halb so wild, da man das OOP dabei (besonders am Anfang) nur passiv verwendet. Man erstellt keine Klassen selbst und braucht sich damit auch nicht um die ganzen schwierigen Sachen oder überhaupt irgendwas mit OOP auseinandersetzen. Ob man schreibt

Code: [AUSKLAPPEN]
pygame.image.load("irgendwas.png")


oder

Code: [AUSKLAPPEN]
loadPygameImage("irgendwas.png")


ist für einen Anfänger herzlich wurscht.

Wichtiger sind zwei Dinge:
Erstens musst du dich echt gut in der Sprache auskennen. Wenn du z.B. ein Java-Profi bist, dann ist es wesentlich einfacher, jemandem Java beizubringen, als eine wesentlich einfachere Sprache in der du dich nicht auskennst. Glaub mir, hab ich oft genug gehabt. Ich hab z.B. meinem kleinen Bruder zuerst versucht BB beizubringen, was ich zu dem Zeitpunkt seit ein paar Jahren nicht mehr verwendet hab. Das war einfach mühsam und hat nicht funktioniert, weil ich mich nicht mehr gut genug ausgekannt hab, um auf Detailfragen sinnvoll zu antworten. Muss man während der Aktion mal in's Manual schauen, hat man eigentlich schon verloren, weil in den Minuten das Interesse verloren geht. Danach hab ich's mit Java probiert (was ich zu dem Zeitpunkt sehr aktiv verwendet hab) und es hat gut geklappt.

Zweitens musst du gut vorbereitet sein. Die Sprache sowie alle benötigten Editoren, IDEs und Frameworks musst du vorher schon vorher installieren und testen, dass sie gehen. Du musst wissen, wie das, was du in der Session beibringen willst, alles funktioniert. Besonders wenn dein "Opfer" sich nicht so arg für's Programmieren interessiert, ist das Interesse schnell weg, wenn es unnötige Verzögerungen aufgrund von falsch konfigurierten IDEs oder so geht.

Am Besten plane deine "Lektion" im Vorhinein durch und programmier mal alles durch, was du zeigen willst. Und solltest du das zum ersten Mal machen, rechne damit, dass du vielleicht ein Viertel von dem durchkriegst, was du in der Zeit durchkriegen willst. Schau also, dass du in der Zeit nicht auf ein großes Ding hinarbeitest, dass erst cool ist, wenn alles fertig ist, sondern bau kleine Milestones ein, mit denen man spätestens alle 10 Minuten was Interessantes sieht. Es ist, was das Erlebnis angeht, wesentlich netter, wenn deine Freundin einen Ball hingekriegt hat, den man mit den Cursor-Tasten bewegen kann, als wenn sie den nicht-funktionalen Anfang von dem nächsten WoW macht, in dem noch gar nichts geht.
Gewinner der 6. und der 68. BlitzCodeCompo

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Aug 10, 2017 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich benutze AGK2 unter Linux - Lubuntu 17.04.

AGK2 Einfach bei Steam gekauft, installiert und schon funktionierte alles.

- IDE ist bereits enthalten die vollkommen ausreichend ist
- Programmiersprache ist wie BlitzBasic / Blitz3D nur modern
- Bilder laden und auf den Bildschirm zeigen ist ganz einfach zu realisieren
- Selbst Shader einfach laden und auf ein Image pappen, fertig
- AGK2 enthält bereits eine 2D- und eine 3D-Physik-Engine
- Es lassen sich Bilder laden und daraus automatisch konvexe Physikobjekte erstellen
- Es kommen ständig neue Updates raus. Ich hatte auch ein Bug gemeldet, welcher 2 Wochen später gefixt wurde
- Der Code ist dann Lauffähig auf Windows, Linux, IOS, MacOS, Android, HTML5 und Raspberry Pi (wobei ich es nur auf Linux nutze)

Bei den ersten Gehversuchen störte mich das Handlesystem. Später erst bemerkte ich, dass man auch das übliche nutzen kann. Jeder wie er eben mag.

Möglich ist folgender Code: [AUSKLAPPEN]
LoadImage(1,"image.png")

Aber auch dieser hier Code: [AUSKLAPPEN]
image=LoadImage("image.png")

https://www.appgamekit.com
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Cykid

BeitragDo, Aug 10, 2017 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht ob es das ist was du suchst, aber ich habe es meiner Madam mit "human resource machine" gezeigt.

Eventuell ist es ja eine Idee Very Happy

Thunder

BeitragSo, Aug 13, 2017 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube Godot und AGK sind etwas übertrieben.. ich denke das wäre dann der zweite Schritt. Falls sie weitermachen will.

@DAK: du hast recht bezüglich OOP in PyGame, ich habe da wohl ein Tutorial gesehen, das direkt für seine Spielfiguren Klassen erstellt hat, die von einer PyGame sprite klasse (glaube ich) abgeleitet waren, aber anscheinend kann man darauf ja verzichten.
Deine allgemeinen Tipps sind auch sehr hilfreich!

Human Resource Machine ist auch ein guter Tipp! Überlege ich mir noch, ob ich ihr Programmieren in einem Spiel verpackt zeigen will oder blank Razz

Danke euch allen! Very Happy
Vielleicht schreibe ich Mal, wie es mir ergangen ist, aber kann noch dauern bis dahin.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Lakorta

BeitragMo, Aug 14, 2017 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ich noch empfehlen könnte wäre Greenfoot. Das basiert zwar auf Java und ist damit OOP, hat allerdings eine (mmn) anfängerfreundliche Oberfläche. Greenfoot hat auch mehrere simple Beispiele und wird teilweise auch an Schulen benutzt, um Programmieranfängern das Programmieren bei zu bringen.
Würde allerdings nicht unbedingt Sinn machen, falls du kein Java kannst.
---

Thunder

BeitragMo, Aug 14, 2017 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Lakorta, ist auf jeden Fall ein guter Vorschlag.
Ich kann schon Java (würde mich aber auch nicht als profi bezeichnen), ich bezweifle nur dass es die richtige Anfängersprache ist.
Ich werde es mir trotzdem auf jeden Fall überlegen.

Man sollte in der ersten Programmiersprache meiner Meinung nach nicht Typen spezifizieren müssen. Ich weiß noch, wie oft ich anfangs in BB solche Fehler gemacht hab:
BlitzBasic: [AUSKLAPPEN]
eingabe = Input("Sag etwas: ")
If eingabe = "hallo" Then
Print "hallo"
Else
Print "wer ist da?"
EndIf
; Wer findet den Fehler?


Andererseits sollte man in der 1. Programmiersprache auch nicht viel Code zu schreiben haben, den man nicht versteht. Bsp Java:
Code: [AUSKLAPPEN]
public class CKlasse{ // Klasse muss immer mit C anfangen
    public static void main(String[] args){
    }
}

Die Anzahl an Schlüsselwörtern, die nötig ist, damit der Compiler mal durchläuft, ist gewaltig. Noch dazu ist das Code, den man einem Anfänger nicht erklären will. Bei meinen ersten Versuchen, Java zu lernen, habe ich einfach nicht gewusst, dass die Datei genau so heißen muss wie die Klasse, in der main steht. Stundenlange Frustration, bis ich aufgab.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group