openbook: javascript

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ich dachte ich schau mir mal javascript an und gelang dann zum openbook. Nun bin ich etwas verwirrt. Dass die Pythonversion Mängel enthält ist mir bekannt.

Im Kapitel 3.2.4 Umwandlung zwischen den Variablentypen laß ich dann das:

Code: Alles auswählen

var AnzahlHonigtoepfe = "5"
AnzahlHonigtoepfe *= 1  //Zeichenkette in Zahl
var wahrheitswert = true
wahrheitswert += ""  //Wahrheitswert in Zeichenkette
var Anzahl = 6
Anzahl += ""  //Zahl in Zeichenkette
Ist das üblich? Also mir grauts bei dem code...
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also in A re-introduction to JavaScript steht das Konvertieren von Zahlen in Strings durch hinzufügen eines leeren Strings auch beschrieben, das scheint noch halbwegs gangbar zu sein. Aber den Rest würde ich als "komisch" einstufen.

Ein Kumpel von mir hat das Buch gestern durchgeblättert und mehr oder minder auch niedergemacht. Kein Wunder.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mir reicht ja schon 3.1.1. "JavaScript-Schlüsselworte ... wie etwa alert...". Also erstens sind das IMHO Schlüsselwörter und nicht -worte und zweitens ist das faktisch falsch. Natürlich kann ich eine Variable "alert" nennen. Ist ist nur nicht sinnvoll, dadurch die vordefinierte Funktion aus "window.alert" zu überschreiben.

Die Tipps zum Umwandeln von Typen (und das sind DATENtypen, keine VARIABLENtypen) sind zwar trickreich, aber wenn man nicht gerade jedes Byte in der JavasScript-Datei sparen muss, würde ich doch vorschlagen, `String(x)`, `Boolean(x)` bzw. `Number(x)` zu benutzen. Siehe 15.5.1, 15.6.1 bzw. 15.7.1 des ECMAScript-3-Standards. Man darf auch gerne nutzen, dass JavaScript im Gegensatz zu Java alle Objekte gleichförmig wie Objekte behandelt, und daher für alles ein `toString` existiert. Außerdem gibt es noch `parseInt` (15.1.2.2) und `parseFloat` (15.1.2.3) als globale Funktionen.

Stefan
crs
User
Beiträge: 42
Registriert: Dienstag 14. Juli 2009, 13:24

also StringToNumber durch multiplikation mit 1 ist schon etwas komisch, ob das ueblich ist weiss ich aber nicht. koennte evtl. daran liegen, dass parseInt sich manchmal etwas anders verhaelt als man es vlt. erwarten wuerde:

Code: Alles auswählen

js> 1 * "08"
8
js> parseInt("08")
NaN
js> parseInt("08", 10)
8

js> 1 * "42 foo"
NaN
js> parseInt("42 foo")
42
bei Number(x) etc. ist das aber nicht der fall.

ein interessanter abschnitt bei den meisten javascript buechern ist auf jeden fall immer der in dem das paradigma (bzw. die paradigmen) der sprache erklaert wird. scheint bei dem buch nur abschnitt 4.4. zu sein? (zumindest habe ich sonst nichts gefunden).

javascript dort als "objektbasierte sprache" zu bezeichnen ist auf jeden fall schon stark vereinfacht und das js (aehnlich wie python) auch funktional ist scheint irgendwie nicht so deutlich zu werden, auch wenn in dem vorhergehenden abschnitt zumindest erklaert wird wie man funktionen definiert. und:
OpenBook hat geschrieben:[...],aber für das Verständnis von JavaScript ist nur ein gewisser Überblick über das Konzept der Objektorientierung in JavaScript nötig.
imho ist fuer das verstaendnis der sprache javascript das verstehen der prototyp-basierten objektorientierung einer der wichtigsten punkte, auch weil dies sonst nur von eher nicht so bekannten sprachen verwendet wird.

bei dem beispiel zu `eval` in abschnitt 4.2.1 fragt man sich vlt. auch warum man da nicht eher die "dictionary" eigenschaft der js objekte nutzt und zumindest darauf hinweist das man bei `eval` aufpassen sollte...

aber naja,
http://javascript.crockford.com/javascript.html hat geschrieben: Bad Books

Nearly all of the books about JavaScript are quite awful. They contain errors, poor examples, and promote bad practices. Important features of the language are often explained poorly, or left out entirely. I have reviewed dozens of JavaScript books, and I can only recommend one: JavaScript: The Definitive Guide (5th Edition) by David Flanagan. (Attention authors: If you have written a good one, please send me a review copy.)
das in dem quote genannte buch habe ich zwar nicht gelesen, aber "Javascript: The Good Parts" von Douglas Crockford kann ich auf jeden fall empfehlen (vorausgesetzt man kennt schon die eine oder andere sprache).
Zuletzt geändert von crs am Donnerstag 24. September 2009, 13:14, insgesamt 1-mal geändert.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

crs hat geschrieben:also StringToNumber durch multiplikation mit 1 ist schon etwas komisch, ob das ueblich ist weiss ich aber nicht.
In Excel ist das üblich. ;)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

crs hat geschrieben:javascript dort als "objektbasierte sprache" zu bezeichnen ist auf jeden fall schon stark vereinfacht[...]
Es ist nicht falsch wobei es eine auf Prototypen basierte Sprache ist, was letztendlich auch Objekte sind aber dass sollte man nicht mit OOP verwechseln.

Python bezeichnet man letztendlich auch erstmal als Objekt orientiert.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Welche freien Werke würdet ihr denn für Javascript empfehlen?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

BlackVivi hat geschrieben:Welche freien Werke würdet ihr denn für Javascript empfehlen?
Lies Code von Programmieren von denen du weisst dass sie gut sind. Javascript ist jetzt nicht so kompliziert als dass man es sich nicht erschliessen könnte. Letztendlich ist Javascript auch nur Scheme mit Prototypen, anderer Syntax und einem ganzen Haufen von Dingen die man besser weg gelassen hätte und auf die man beim Programmieren besser verzichtet.
crs
User
Beiträge: 42
Registriert: Dienstag 14. Juli 2009, 13:24

DasIch hat geschrieben:
crs hat geschrieben:javascript dort als "objektbasierte sprache" zu bezeichnen ist auf jeden fall schon stark vereinfacht[...]
Es ist nicht falsch wobei es eine auf Prototypen basierte Sprache ist, was letztendlich auch Objekte sind aber dass sollte man nicht mit OOP verwechseln.

Python bezeichnet man letztendlich auch erstmal als Objekt orientiert.
es ist nicht falsch (ich habe auch nicht geschrieben das es falsch ist) aber es hilft eben imho auch nicht so wirklich weiter. die von js verwendete prototyp-basierte programmierung wird naemlich generell schon der OOP zugeordnet, nur unterscheidet es sich eben von der (allerdings viel bekannteren) klassenbasierten OOP.
und gerade weil die klassenbasierte OOP mittlerweile doch relativ bekannt ist, sollte man in dem punkt imho auch auf die unterschiede einzugehen bzw. das prototyp system von js genauer zu erklaeren, denn jemand der OOP aus sprachen wie java oder python kennt, wird vermutlich den abschnitt lesen und denken "ok, das ist ja ungefaehr so wie in java/python".
(wenn ich das richtig sehe ist die Auflage des verlinkten OpenBooks allerdings auch von 2001).

@BlackVivi
ein freies buch kenne ich nicht. hier ist eine ganz gute, kurze uebersicht ueber die sprache zu finden und auf der uebersichtsseite sind auch noch einige weitere gute artikel verlinkt. im blog von John Resig sind auch einige gute artikel zu js allgemein.

generell ist javascript aber wirklich nicht soo kompliziert, und code von programmierern die gut sind zu lesen ist natuerlich sowieso immer gut ;)
man muss bei js allerdings schon etwas aufpassen, denn die sprache bringt durchaus ein paar 'fallen' mit sich, wie z.B.

Code: Alles auswählen

js> 0 == '0'
true
js> 0 === '0'
false
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

BlackVivi hat geschrieben:Welche freien Werke würdet ihr denn für Javascript empfehlen?
Siehe auch http://www.python-forum.de/post-147414.html#147414, mal beim YUI theater vorbeischauen, die zitierten Artikel von Mozilla, das Buch von Crockford, diese Slideshow: http://www.slideshare.net/simon/a-reint ... javascript

"Objektbasiert" ist übrigens kein so falscher Begriff, wird er doch manchmal benutzt, um Objektorientierung ohne Klassen zu beschreiben - quasi als halbe Objektorientierung. Das ist aber IMHO quatsch, denn Klassen sind kein essentieller Bestandteil. Objekte und Nachrichten sind es. Und die hat JavaScript (also Mischung aus Scheme und Self) durch das Self-Erbe.

Ein "das ist wie" ist in der Regel immer der falsche Weg, eine Sprache zu lernen. Um Yoda zu zitieren: "You must unlearn what you have learned."

Stefan
BlackJack

@sma: Bist Du sicher, dass Du das Yoda-Zitat korrekt wiedergegeben hast? Das sieht mir grammatikalisch irgendwie zu richtig aus. :-D
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

BlackJack hat geschrieben:@sma: Bist Du sicher, dass Du das Yoda-Zitat korrekt wiedergegeben hast? Das sieht mir grammatikalisch irgendwie zu richtig aus. :-D
*g* ich habe leider Star Wars nie mit Original Sound gesehen...

Aber ich könnte aus Episode IV kontern:
Yoda hat geschrieben: "Erinnere Dich an das, was Du gelernt, denn retten kannst Dich!"
;-)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

BlackJack hat geschrieben:@sma: Bist Du sicher, dass Du das Yoda-Zitat korrekt wiedergegeben hast? Das sieht mir grammatikalisch irgendwie zu richtig aus. :-D
Gegoogelt habe ich extra, um es richtig wiederzugeben.

Das andere Zitat müsste sein: "Mind what you have learned. Save you it can."

Und natürlich gilt immer: "Much to learn, you still have."

Stefan
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

sma hat geschrieben: "Objektbasiert" ist übrigens kein so falscher Begriff, wird er doch manchmal benutzt, um Objektorientierung ohne Klassen zu beschreiben - quasi als halbe Objektorientierung.
Ich kenne den Begriff objektbasiert als Bezeichnung eines Programmierstils, der zwar Klassen und Objekte nutzt, aber von Vererbung und Polymorphie noch nichts gehört hat. Quasi C mit besseren Structs. Lippmann und Lajoie nutzen den Begriff in "C++", ich glaube das Buch gibts auch als C++ Primer.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hat hier jemand eigentlich einen guten Tipp für eine gute JavaScript-Shell? Also evtl. nen Addon für den Firefox o.ä.? Am besten so was wie "IJavaScript" ;-)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Panke hat geschrieben:Ich kenne den Begriff objektbasiert als Bezeichnung eines Programmierstils, der zwar Klassen und Objekte nutzt, aber von Vererbung und Polymorphie noch nichts gehört hat.
Wikipedia sagt "Existieren in der erwählten Programmiersprache keine Klassen oder werden diese explizit unterdrückt, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung." und stimmt damit zwar mir zu, aber jetzt wo du's sagst, meine ich mich zu erinnern, dass nicht die Abwesenheit von Klassen sondern die von Vererbung wichtig war. Polymorphie hat damit aber AFAIK nichts zu tun, denn diese ist gerade auch bei einem einfachen ad-hoc-Modell mit C vorhanden, indem man zwei Funktionen mit gleichen Namen in zwei Strukturen ablegt.

Letztlich aber egal, weil ich in allen Fällen von OOP sprechen würde und Crockfords Unterscheidung mit classical und prototypical benutzen würde, wobei im Deutschen bei klassenbasiert und prototypbasiert leider der Wortwitz, dass klassenbasiert gleichzeitig auch klassisch ist und in prototypical das "typisch" steckt, verloren geht.

Auf der OOPSLA 1986 gab es mindestens drei Paper zum Thema prototyp-basierter Objektorientierung. Und das ich keine früheren Paper gefunden habe liegt wahrscheinlich einfach daran, dass das die erste OOP-Konferenz war. Leider alles zu früh für kostenlose PDFs, doch Lieberman hat sein Paper veröffentlicht.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:Hat hier jemand eigentlich einen guten Tipp für eine gute JavaScript-Shell? Also evtl. nen Addon für den Firefox o.ä.? Am besten so was wie "IJavaScript" ;-)
Eventuell Gjs oder Seed, aber die sind natürlich keine Firefox-Addons (wobei Gjs die gleiche JS-Engine nutzt).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hyperion hat geschrieben:Hat hier jemand eigentlich einen guten Tipp für eine gute JavaScript-Shell? Also evtl. nen Addon für den Firefox o.ä.? Am besten so was wie "IJavaScript" ;-)
Was hat JavaScript mit Firefox zu tun? Kompiliert man sich V8 selbst, ist da eine einfache Konsole dabei. Gleiches gilt für Spidermonkey. Es gibt auch pyv8, dann kann man JavaScript als eingebettete Scriptsprache für Python benutzen. Für Ruby gibt es Johnson, das ist noch ein bisschen cooler. Auch Java 6 kommt mit eingebautem JavaScript (Rhino in diesem Fall).

Stefan
BlackJack

@sma: Die meisten werden JavaScript für Webseiten verwenden und da ist eine Shell zum herumprobieren im Browser nützlicher als Standalone.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Genau diesen Punkt wollte ich absichtlich ignorieren. JavaScript sollte man getrennt von einem Browser sehen, um die Sprache zu sehen und zu verstehen.

Stefan
Antworten