Datum:
Wenn ich mir als Assembler und C Fan die Bemerkung erlauben darf, ist Bascom schlichtweg ein Hammer. Musste schnell einen XMega für ein GSM Gateway proggen. Notwendig waren 3 UARTs,SPI,1Wire und I2C. Das Brutale war dann noch das Management einer SD Card. In C mit Studio 6 eine wissenschaftliche Arbeit und eigentlich unmöglich unter 40 Stunden. Mit Bascom war das ohne Kenntnis der Umgebung in 2 Tagen erledigt. Respekt vor den Entwicklern. Was denkt ihr über Bascom? Schöne Grüße Duplo
Datum:
duplo schrieb: > Was denkt ihr über Bascom? Indiskutabel. Gründe ? Stehen im K&R. Besser, ein Mod löscht diesen Thread zeitnah ;)
Datum:
duplo schrieb: > Was denkt ihr über Bascom? Finde es super. duplo schrieb: > Respekt vor den Entwicklern. Meinen haben sie. Dabei sind es wohl gar nicht mal so viele.
Beitrag #2660679 wurde von einem Moderator gelöscht.
Datum:
Basic hat halt diesen ekelfaktor.. wers ernst meint probiert das gar nicht erst!
Datum:
Wenn Atmel endlich mal gute Software machen würde (Studio 4 geht halbwegs) wäre das Programmierer Leben um vieles einfacher. Eh logisch. Da bin ich über Bascom schon froh, wenn's mal schnell gehen muss. Wenn ich auf einem (Höllen)Trip bin, dann ist Studio 6 mit einem XMega schon geil (wenn man sich gerne selbst foltert). Hat aber seinen Reiz ;-) Schöne Grüße Chulio
Datum:
Wir sind doch alle mit Basic groß geworden. Seit doch nicht so undankbar! Denkt grad an den C64 und das AH8052 Basic. Basic war und ist sehr gut und die Mutter aller Programmiersprachen. Das an alle abgehobenen C Progger. Gruß Lueger
Datum:
Wir wissen doch alle auf was dieser Thread hinausläuft - ne Menge Popcorn ;)
Datum:
Im µC-Umfeld sollte Bascom, für einen ökonomisch denkenden Generalisten, den gleichen Stellenwert haben wie C. Bei der Nachkalkulation fragt kein Mensch mehr, auf welcher linguistischen Basis das Produkt enstanden ist, sondern nur noch was es gekostet hat. Hans Peter
Datum:
Hans Peter B. schrieb: > Im µC-Umfeld sollte Bascom, für einen ökonomisch denkenden Generalisten, > den gleichen Stellenwert haben wie C. Bei der Nachkalkulation fragt kein > Mensch mehr, auf welcher linguistischen Basis das Produkt enstanden ist, > sondern nur noch was es gekostet hat. Dennoch stellen dieselbigen Verantwortlichen Niemanden ein, der an der Stelle von guten altem C nur Bascom spricht. Gruß Oliver
Datum:
Die verstehen ja oft nichts davon...
Datum:
Ich habe nun auch meinen inneren Schweinehund überwunden und mich in C eingearbeitet. War anfangs nicht ganz leicht, aber inzwischen habe ich mich damit angefreundet. Allerdings fehlt mir in C der Basic-typische Goto Befehl und der damit einhergehende Spaghetti-Code. Aber man kann halt nicht alles haben.
Datum:
Oliver J. schrieb: > Hans Peter B. schrieb: >> Im µC-Umfeld sollte Bascom, für einen ökonomisch denkenden Generalisten, >> den gleichen Stellenwert haben wie C. Bei der Nachkalkulation fragt kein >> Mensch mehr, auf welcher linguistischen Basis das Produkt enstanden ist, >> sondern nur noch was es gekostet hat. > > Dennoch stellen dieselbigen Verantwortlichen Niemanden ein, der an der > Stelle von guten altem C nur Bascom spricht. Und das machen die auch nicht aus Witz. Jeder der schonmal ein Produkt entwickelt hat (kein Hobbyzeugs) der weiß wovon ich spreche. Kannst ja mal in einen Betrieb gehen und sagen du willst ein Prjojekt mit Bascom realisieren - da wird man dich auslachen. C ist eine derart triviale und einfach zu erlernenden Sprache - das sind einfach Mindestanforderungen. Wer sowas nicht mitbringt, der hat auch im beruflichen Sektor nichts zu suchen. Für den Hobbybereich mag das durchaus legitim sein. duplo schrieb: > Wenn ich mir als Assembler und C Fan die Bemerkung erlauben darf, ist > Bascom schlichtweg ein Hammer. Musste schnell einen XMega für ein GSM > Gateway proggen. > Notwendig waren 3 UARTs,SPI,1Wire und I2C. Das Brutale war dann noch das > Management einer SD Card. > > In C mit Studio 6 eine wissenschaftliche Arbeit und eigentlich unmöglich > unter 40 Stunden. Mit Bascom war das ohne Kenntnis der Umgebung in 2 > Tagen erledigt. Das ist die Frage - was genau ist denn an Bascom so unbedingt schwieriger als an C. Gut C ist etwas kryptischer (für Anfänger) und maschinennäher. Gerade bei bei der Fehlersuche ist das so hilfreich. Dazu bedarf es aber viel Übung. Aber dann ist C unschlagbar, spitze durchstrukturiert, keine riesige Codehäufen wie bei Bascom ... Ich finde das auch optisch schöner. Nicht, dass wir uns falsch verstehen, ich respektiere jeden, der Bascom programmiert. Das muss jeder für sich selbst entscheiden. Ich finde es auch gut, dass z.B. mit Arduino auch dem "nicht-Programmierer" eine Möglichkeit geschaffen wird in die Welt der Hobbymikrocontroller einzusteigen. Dennoch muss man sich immer seines Wissenstandes bewusst sein und wissen, wo man auf der Skala der Mikrocontrollerprogrammierung steht.
Datum:
Bascom mag für lernrestistente Hobby Frickler ja durchgehen, Aber im industriellen Umfeld ist diese proprietäre "Programmiersprache" ein absolutes nogo. Klingt zwar hart ist aber so. Ergo: "C" lernen und verinnerlichen, dann klappts auch mit dem angestrebten Entwickler-Job.
Datum:
Weg mit diesem Basic Gefrickel schrieb: > dann klappts auch mit dem angestrebten Entwickler-Job Wo stand da im Eingangspost etwas von einem angestrebten Entwickler-Job? Es geht doch nur darum, ob andere Bascom auch für schnelle Projekte nutzen würden. Ich selbst nutze zwar Assembler und C, da mir Bascom mit der Basic Syntax nicht gefällt, aber deshalb darf man das nicht alles gleich schlecht heisen. Für manchen Bastler ist der schnelle Erfolg wichtiger, als das 100% korrekte. Mein Ziel ist zwar auch immer das 100%, aber hin und wieder mache ich da auch abstriche, da ich zum einen das Wissen nicht habe und zum anderen auch mal den schnellen erfolg wünsche. Daher sage ich mal so, wenn ich mich mit der Basic Syntax anfreunden könnte und ich einen sehr schnellen erfolg haben wollte, dann würde ich es auch nutzen. Anstreben möchte ich aber, das ich Assembler und C behersche. Assembler, da es hardware näher ist und viel mehr Wissen benötigt (habe ich selbst schon festgestellt, das man Assembler nicht mal eben in 2 Wochen lernt) und C um damit schnelle erfolge zu erziehlen.
Datum:
Ex Basic Frickler (Gast) schrieb: > Ich habe .. mich in C > eingearbeitet. .. War nicht leicht .. > Allerdings fehlt mir in C der Basic-typische > Goto Befehl und der damit einhergehende Spaghetti-Code. Aber man kann > halt nicht alles haben. Wieso fehlt goto? Ist doch noch da http://de.wikibooks.org/wiki/C-Programmierung:_Sch... Stellt sich die Frage, warum es in C nach mehr als 4 Jahrzehnten noch immer ein goto gibt, während viele Basic Dialekte heutzutage längst genügend strukturierende (Schleifen-) Befehle mitbringen, die das alte goto überflüssig machen?
Datum:
Überraschter schrieb: > > Stellt sich die Frage, warum es in C nach mehr als 4 Jahrzehnten noch > immer ein goto gibt, während viele Basic Dialekte heutzutage längst > genügend strukturierende (Schleifen-) Befehle mitbringen, die das alte > goto überflüssig machen? Programmiere einen Treiber und du wirst es verstehen.
Datum:
Tim T. (tim_taylor) schrieb:
> Programmiere einen Treiber und du wirst es verstehen.
Du meinst der goto Befehl ist elementar bei der Treiberprogrammierung?
Dann ist BASIC die Sprache schlechthin um Treiber zu programmieren.
:-)
Datum:
Nur mal zur Ansicht:
if( register_chardev( ...) not failed ){ if( request_region(...) failed ) goto out_region; if( request_irq(...) failed ) goto out_irq; return 0; // success } else{ goto out; } out_irq: free_region(...); out_region: unregister_chardev( ... ); out: return -EIO; |
Datum:
Wüstes aus den Schleifen Gespringe .. :)
Datum:
Das Wort Generalist (Wiktionary: Lebewesen mit vielfältigen Möglichkeiten, das unter vielerlei Bedingungen zurechtkommt) bezog sich nicht auf den alles entscheidenden "Firmen-Obristen", sonden auf den Entwickler, welcher nicht nur auf der C-Schiene fährt, sondern auch für kleinere Projekte Bascom kostengünstig anzuwenden weiss. Hans Peter
Datum:
Ich programmiere PICs in PicBasic Pro BASIC wird überall sofort verteufelt. Ist halt so ! Ich kann in PicBASIC sehr schnell Erfolge liefern. Ich nutze die Sprache, um meine Befehle abzuarbeiten und nur etwas Struktur (IF, Sprünge, etc.) einzubringen. Ich stelle mir jeden Befehl in Assembler vor und vermeide unnötigen Ballast. Gerade im Hobby-Umfeld sehe ich oft C-Programme, die einfach mal so eben Floating-Point nutzen um eine Zahl in einen String umzuwandeln und sich dann wundern, warum das Programm nicht in den Micro-uC paßt. Das passiert mir bei PicBASIC nicht, weil es das nicht gibt. Basta. Ich habe zur Zeit ein Projekt, das 6000 Zeilen Code umfaßt, das ich bestens beherrsche. Bei Programmen in C komme ich da eher durcheinader. Ein einziges falsches Zeichen bringt keine Fehlermeldung, sondern anderen Code. Die Syntax von C aus einer kruden Vermengung einzelner Ziffern und Zeichen stellt gerade den Anfänger auf eine harte Probe. Und wer glaub, C sei portabel... Gerade bei uCs hat jeder Hersteller seine eigenen Libs für die Ansteuerung der Hardware. Da kann man jedesmal alles anpassen. Bei PicBasic (also BASIC) verzichte ich auch diesen Librarys-Wahnsinn und programmiere die Zugriffe auf die Hardware selbst in der Art, daß der erzeugte Code schon optimiert für den Assembler ist. Der Compiler hilft mir bei dem Mapping der Variablen (das ist echt eklig) und für Interrupts schreibe ich Assemblercode rein. Wenn ich in C anfange, dann hört es für mich eigentlich schon beim "viod" auf und bei der Auftrennung in Header- und Source-Files. Das mag für den Theoretiker mit der Nickelbrille ganz toll sein, aber wir wollen nicht den Mondflug programmieren mit Abteilungs-übergreifenden Librarys, sondern es gibt eine Lösung. basta ! Am Ende gibt es ein .hex-File zum Brennen (inkl. der Fuse-Bits !!!!!). Oder einen Menschen mit Verstand, der den Klartext eines BASIC-Programms lesen kann und mit den Kommentare den Sinn schnell versteht. und jetzt könnt ihr mich verbrennen ;-)
Datum:
Bernd Rüter schrieb: > Gerade bei uCs hat jeder Hersteller seine eigenen Libs für > die Ansteuerung der Hardware. Da kann man jedesmal alles anpassen. Richtig. Man KANN es anpassen, man KANN es portieren. Man KANN ein zukunftsfähiges, wartbares Produkt erzeugen. In diese Versuchung kommst Du mit BasCom erst gar nicht, das ist ein Grund, warum Du deswegen regelmäßig ausgelacht wirst. > Wenn ich in C anfange, dann hört es für mich eigentlich schon beim > "viod" auf und bei der Auftrennung in Header- und Source-Files. Das ist dann allerdings Dein Problem, und nicht das von C. Das ist noch ein Grund :-)
Datum:
Im industriellen Umfeld ist Bascom ein nogo. Liegt nicht nur an der Sprache an sich sondern auch an deren Lizensierungsbedingungen. Also für lernresistente Hobbyisten durchaus möglich, für professionelle Anwendungen allerdings keine echte Alternative. Oder kennt jemand eine kommerzielle Anwendung die Bascom verwendet? Ich nicht!
Datum:
Lueger schrieb: > Basic war und ist sehr gut und die Mutter aller Programmiersprachen. Nein, das ist Lisp :) Tim T. schrieb: > Nur mal zur Ansicht:
if( register_chardev( ...) not failed ){ if( request_region(...) failed ) goto out_region; if( request_irq(...) failed ) goto out_irq; return 0; // success } else{ goto out; } out_irq: free_region(...); out_region: unregister_chardev( ... ); out: return -EIO; |
Autsch! Das ist ja ein geradezu perfektes Paradebeispiel dafür, wie man Gotos nicht benutzen sollte. Warum schreibst du nicht einfach
if( register_chardev(...) not failed ) { if( request_region(...) not failed ) { if( request_irq(...) not failed ) return 0; // success free_region(...); } unregister_chardev(...); } return -EIO; |
Das tut das Gleiche, ist nur halb so lang, kommt ohne Gotos aus und ist (zumindest für meinen Geschmack) um Welten leichter durchschaubar. Hättest du in deiner Goto-Orgie wenigstens alle drei Abfragen gleich- artig formuliert, dann wäre sie trotz der Gotos gut lesbar:
if( register_chardev(...) failed ) goto out; if( request_region(...) failed ) goto out_region; if( request_irq(...) failed ) goto out_irq; return 0; // success out_irq: free_region(...); out_region: unregister_chardev(...); out: return -EIO; |
Aber dein ursprüngliches Code-Fragment hat außerhalb des Tellers im Ristorante wirklich nichts zu suchen =8-[
Datum:
@ Yalu X. (yalu) (Moderator) schrieb über das goto-Beispiel > Autsch! Das ist ja ein geradezu perfektes Paradebeispiel dafür, wie man > Gotos nicht benutzen sollte. Herrlicher Beitrag! Applaus! ;)
Datum:
Hat nichts mit C oder Bascom zu tun, sondern mit den verfügbaren Bibliotheken.
Datum:
Warum denkt eigentlich jeder, daß BASIC immer was mit GOTO zu tun hat??! ;-) Ich benutze GOTO seit ca. 20 Jahren nicht mehr. Denn ab ca. 1989 habe ich PASCAL gelernt und halte mich auch beim Proggen in BASIC an diesen Stil. Man kann auch in BASIC sauber (!!!) programmieren. Über den "aufgeblähten" Endcode möchte ich mich nicht streiten. Es mag sicher kleiner gehen! Ich habe großen Respekt vor den Leuten, die C können. Ich habe mehrere Versuche gestartet, es zu lernen. Also möchte ich mich nicht als lernresitent bezeichnen. Leider fehlt mir einfach die Zeit, es praktisch zu lernen und immer nur lesen bringt leider nix. Falscher Ansatz, richtig, leider fehlt trotzdem die Zeit! Neben PASCAL habe ich einiges an Maschinensprache, S5, S7 und andere Sachen gelernt und auch im Beruf genutzt. Privat nutze ich schon sei 1983 BASIC. Danach VisualBASIC und seit 2007 BASCOM. Mit allen Derivaten habe ich schon große Projekte gestemmt und wenn man sich an Disziplin beim Proggen hält, dann sind die Programme ebenso gut, wie in anderen Sprachen. Sind wir doch mal ehrlich. Solange es nicht um berufliches geht, dann zählt doch einfach, daß es funktioniert, daß es absturzfrei funktioniert, einfach passt und daß man mit Freude ans Ziel kommt. Macht uns "kleine BASCOM-User" doch nicht immer so fertig! (Schreibe dies mit einem kleinen Schmunzeln, es hat ja auch schon viel positive Kommentare hier gegeben. Was ich NICHT GEDACHT hätte! ;-) Gruß Hackes
Datum:
Ich finde das reflexhafte Basic-Bashing einfach nur dumm. Man kann in jeder Programmiersprache mistigen Code frickeln und man kann es genau so gut ordentlich machen. Die Basic-Gegner tun immer so, als müsse man zwanghaft den sog. Spaghetti-Code fabrizieren - das kann eigentlich nur aus ihren eigenen Erinnerungen stammen oder es ist einfach nur nachgeplappert. Ich möchte bei dieser Gelegenheit mal auf einen anderen Basic-Dialekt hinweisen, noch dazu vollkommen kostenlos und sogar mit OO-Ansatz: LunaAVR. http://avr.myluna.de/doku.php?id=de:start Es ist quasi ein RealBasic-Clone (fortschrittliches VB) für Windows, Linux und MacOSX. Vor Allem letzteres (noch nicht ganz fertig) dürfte ein wirkliches Alleinstellungsmerkmal sein.
Datum:
Ich weiss jetzt nicht wie lange ich das schon verfolge, aber irgendwann kann vielleicht jeder "programmieren": http://avrtools.no/ So etwas als Vorlage/Bausteine und jede Programmiersprache wird zum Kinderspiel...
Datum:
BASCOM ist für die Realisierung einfacher Projekte gut geeignet. Zeitkritische Funktionen können sehr einfach mit Inline Assembler eingefügt werden. Installation und Bedienung der IDE ist kein Akt. Bin mit dem TO auf einer Linie. Für mich ist es keine Philosophie, welche Programmiersprache benutzt wird, sondern welche mich zu meinem Ziel führt und für mich als Hobbybastler hat bis jetzt noch alles mit BASCOM und Inline Assembler funktioniert. µC Programmierung ist für mich keine Frage der Sprache, sondern wie krieg ich ihm beigebracht was ich will. Da war das Wühlen in Datenblättern vordringlicher als der Kampf mit IDE und Zeichensprache lernen. Der Einstieg fiel mir sehr leicht und ich kann die Leute verstehen, die C lernen mußten oder auch ohne Not gelernt haben, daß es ihnen ein Dorn im Auge ist, wenn man als Anfänger auch ohne langen Lernprozess und geringen Frustrationsfaktor zum Ziel kommt. Falls ich mit BASCOM irgendwann nicht weiterkommen sollte, wird halt C genommen oder gleich Assembler. Übrigens ist mir nicht klar, warum die BASCOM-Verächter und C-Verfechter nicht alle Assembler nehmen. Jeder hat halt seine Grenzen. :-) Ob man nun C aus beruflichen Gründen lernen muß(te) oder weil es alle machen oder weil man sich damit scheinbar über die Hobbyentwickler erhebt - man nimmt das, mit dem man klarkommt und einem zum Ziel führt. Man nimmt doch auch keinen XMEGA wenn ein Tiny reicht.
Datum:
Frank schrieb: > Ich möchte bei dieser Gelegenheit mal auf einen anderen Basic-Dialekt > hinweisen, noch dazu vollkommen kostenlos und sogar mit OO-Ansatz: > LunaAVR. Kenne ich, ich helfe Richard da ab und zu etwas mit (Testen etc). Mit Luna habe ich die ersten Gehversuche gemacht, Richard hat mich auch dazu gebracht mich wieder mit uCs zu beschäftigen. Luna ist ideal für die ersten Experimente und für Anfänger. Mich engt es ein, es fehlen genau diese Includefiles, die Syntax kann ich nicht ab, es fehlt einfach die Präzision wie ich sie von C her kenne. Ich glaube auch nicht, daß Luna "einfacher" wie C ist. Prinzipiell kann ich am Anfang einfacher Unkenntnis der Hardware überdecken, das relativiert sich dann aber. Die ersten Erfolgserlebnisse hat man mit Luna definitiv VIEL schneller wie bei C. PS: Ich habe mal mit eingetippten Hexcodes angefangen, Assembler, C, GWBASIC würg, dBASE, PHP etc. C ist wie ein klarer Schnaps, ehrlich und kernig und dabei transparent. BASIC wie zuckersüßes Likörchen ("Schlüpferstürmer").
Datum:
In einem anderen Forum wurde mal der erzeugte Code von C und Bascom zerpflückt. Resultat war, dass C oftmals mehr Anweisungen und damit CPU zeit verbraucht als Bascom. Was viele hier mit Bascom ist langsam immer wieder verwechseln ist, dass Bascom kein Interpreter ist der auf der CPU läuft, sondern ein Compiler. Ich nutze Bascom ausschließlich und habe ab und zu schon sachen gehabt die sich in C sicher eleganter hätten lösen lassen. Einfach weil die Sprache mächtiger ist. Was der Compiler hinterher daraus macht ist allerdings die Frage. Schade das es noch kein Bascom für ARM gibt :-(
Datum:
Danke für die zahlreichen, teilweise sehr guten Kommentare! Mir kommt vor, dass die Bascom Befürworter etwas mehr Weitsicht haben, als die C Progger Freaks, die zwanghaft an dem 40 Jahre alten C festhalten wollen. Wenn es mit der zunehmenden Komplexität der MCs so weiter geht (siehe XMegas), reicht C in dieser Form nicht mehr aus. Es sei denn, man ist Masochist oder die Entwicklungszeit spielt keine Rolle. Ich würde mich als "Generalisten" bezeichnen und habe kein Problem, auch mit Bascom was zu machen. Ich entwickle auch in C (je nach Projekt) und schätze es sehr. Trotz gutem Supports von Atmel war das letzte Aufsetzen eine XMegas ein tagelanges Unterfangen. Der Code (von Atmel) ist zB. durch die neue Schreibweise der Registerzuweisungen schon fast unleserlich geworden. Beispiel: n=(CLK.PSCTRL & (~(CLK_PSADIV_gm | CLK_PSBCDIV1_bm | CLK_PSBCDIV0_bm))) | CLK_PSADIV_1_gc | CLK_PSBCDIV_1_1_gc; Einfach zu wartender Code? Portierbar? Ist das die Zukunft? Danke Bascom! Schöne Grüße Duplo
Datum:
Sebastian Heyn schrieb: > In einem anderen Forum wurde mal der erzeugte Code von C und Bascom > zerpflückt. Resultat war, dass C oftmals mehr Anweisungen und damit CPU > zeit verbraucht als Bascom. Zeig mal den Link. Gruß Oliver
Datum:
In unserer Fa. bin ich für die Hardware zuständig. Wenn der erste Prototyp gelötet ist brauche ich mit Bascom meist keinen halben Tag um alle Funktionen zu testen. Danach bekommts der C- ler, der soll sich dann damit abplagen.
Datum:
Ich bin auch von Bascom zu C umgestiegen da ich irgendwann Register direkt setzen musste weil Bascom den Chip nicht richtig integriert hatte. Ich glaube das war Attiny26 und PWM oder sowas. Für ganz einfach Sachen nehme ich Arduino und das Teensy Board. Da brauche ich nicht mal eine ISP Buchse auflöten und kann für verschiedene Dinge direkt auf Bibliotheken zugreifen. Kommunikation über USB ist auch praktisch! Gruss Bernd
Datum:
Genau das ist der Punkt. Erklär mal wieso.
Datum:
Peter L. schrieb: > Danach bekommts der C- ler, der soll sich dann damit abplagen. War schon einer schneller. Meine Frage bezog sich auf das.
Datum:
Hi, > Notwendig waren 3 UARTs,SPI,1Wire und I2C. Das Brutale war dann noch das > Management einer SD Card. > > In C mit Studio 6 eine wissenschaftliche Arbeit und eigentlich unmöglich > unter 40 Stunden. Mit Bascom war das ohne Kenntnis der Umgebung in 2 > Tagen erledigt. Respekt vor den Entwicklern. Wäre auch in C kein Problem, wenn man konsequent während seines 'Entwicklerdaseins' konfigurierbare Bibliotheken für immer wiederkehrende Funktionalitäten aufgebaut hat. UART, I2C, SPI schreit förmlich nach Bibliothek :-) > Was denkt ihr über Bascom? Code ist leider nicht portierbar... Gruß Neil
Datum:
Neulich wollte ich in Bascom mal wieder das GOTO benutzen, aber es ging nicht mehr. Durch das jahrelange Nichtbenutzen war es verrostet und seine Lager waren fest. Ich mußte erst mal eine Supp-Routine mit WD40 ausführen, um GOTO wieder gängig zu kriegen. Schwerfällig hüpfte es zu einer Sprung- marke, die ich ihm vorgegeben hatte. Die Distanz war aber wohl zu groß, GOTO brach sich das Fußgelenk und blieb jammernd auf dem Stack liegen. Es hoffte darauf, daß ich seinen Rücksprung organisieren würde. Ich dachte: Warte Du nur eine WHILE, bis ich mein Auto WEND..... ;-) MfG Paul
Datum:
Duplo schrieb: > Wenn es mit der zunehmenden Komplexität der MCs so weiter geht (siehe > XMegas), reicht C in dieser Form nicht mehr aus. Es sei denn, man ist > Masochist oder die Entwicklungszeit spielt keine Rolle. Was hat die komplexitaet eines uC mit der Programmiersprache zu tun? Nichts. Den die Peripherie eines uC spricht man mit den dafuer erstellten Bibliotheken an. Und diese muessen egal in welcher Sprache auch immer erstmal erstellt werden. Das die in Bascom teilweise in rudimentaerer Form dabei sind hat erstmal nichts mit der Sprache an sich zu tun. Hat dann die vorhandene Funktion dann nicht die gewuenschte Eigenschaft dann stehen doch die meisten Bascom Programmierer erstmal auf dem Schlauch. Wenn man sich um die Libs nicht zu stoeren braucht dann kann ich auch in 5 Minuten ein C Programm auf einen x-beliebigen Controller am laufen bringen. Man muss klar unterscheiden was macht die Sprache aus und was sind Bibliotheksfunktionen. Und das ist nunmal in C klar unterschieden. Die Sprache C kennt an sich keine Ein/Ausgabefunktionen. Die sind alle in Biblioteken enthalten. Und von der Komplexitaet ist eine PC-CPU sammt Peripherie wohl wesentlich aufwendiger als ein uC. Und trotzdem kann man ihn in C/C++ einfach programmieren.
Datum:
Dazu kommt noch, daß der C-Source-Code vieler libs frei verfügbar ist. Ist da einen Macke drin kann ich (wenigstens theoretisch) etwas machen. (zB SQLite)
Datum:
Das Maß an Unfähigkeit, mangelndem Verständnis asynchroner Abläufe u.s.w. korreliert gut mit Basic-Programmierern. Die haben es aus dem Grund weil sie es nicht geschafft haben eine analytischere Sprache wie C/C++ zu beherrschen auch nicht geschafft ein Verständnis dafür zu entwickeln. Sie programmieren dann ganz schnell eine GUI die schick aussieht aber dahinter wie scheisse funktioniert, viele konzeptionelle Fehler hat und dauernd abstürzt. Schuld ist dann die Hardware. D.h. der vermeintliche Zeit und Kostenvorteil ist eine Illusion. Solche Leute gibt es auch in C/C++, aber besser getarnt.
Datum:
Yalu X. schrieb: > > Autsch! Das ist ja ein geradezu perfektes Paradebeispiel dafür, wie man > Gotos nicht benutzen sollte. Warum schreibst du nicht einfach Ja, das ist das Problem wenn man zu später Stunde einfach irgendetwas aus dem Netz hinrotzt ohne das Hirn einzuschalten. Dann halt mal ein reales Beispiel aus der eigenen Feder:
static int __devinit device_init( struct pci_dev *dev, const struct pci_device_id *id ) { #ifdef DEBUG printk( KERN_INFO "%s: Start initialize hardware\n", DRIVER_NAME ); #endif if ( dev == NULL ) { printk( KERN_ERR "%s: Hardware not found\n", DRIVER_NAME ); goto cleanup; }; if ( id == NULL ) { printk( KERN_ERR "%s: Hardware ID not found\n", DRIVER_NAME ); goto cleanup; }; // PCI device initialising (wake up from suspend, etc.) if ( pci_enable_device( dev ) != 0 ) { printk( KERN_ERR "%s: Device not enabled\n", DRIVER_NAME ); goto cleanup; }; #ifdef DEBUG printk( KERN_INFO "%s: Device enabled\n", DRIVER_NAME ); #endif // Get Address of BARs. bar0.start = pci_resource_start( dev, 0 ); if ( bar0.start < 0 ) { printk( KERN_ERR "%s: BAR0 address not set\n", DRIVER_NAME ); goto cleanup; }; #ifdef DEBUG printk( KERN_INFO "%s: BAR0 address: %X\n", DRIVER_NAME, (unsigned int) bar0.start ); #endif // Get Size of BARs. bar0.len = pci_resource_len( dev, 0 ); if ( bar0.len < 0 ) { printk( KERN_ERR "%s: BAR0 size not set\n", DRIVER_NAME ); goto cleanup; }; #ifdef DEBUG printk( KERN_INFO "%s: BAR0 size: %d\n", DRIVER_NAME, (unsigned int) bar0.len ); #endif // Get Flags of BARs & testing resourcetypes bar0.flags = pci_resource_flags( dev, 0 ); if ( !( ( bar0.flags & IORESOURCE_MEM ) ) ) { printk( KERN_ERR "%s: BAR0 is not Memory-type\n", DRIVER_NAME ); goto cleanup; }; // Request IRQ from OS. // IRQF_SHARED | IRQF_SAMPLE_RANDOM if ( request_irq( dev->irq, device_isr, IRQF_DISABLED/*|IRQF_SHARED*/, DRIVER_NAME, dev ) ) { printk( KERN_ERR "%s: Unable to allocate IRQ %d\n", DRIVER_NAME, dev->irq ); goto cleanup; }; #ifdef DEBUG // Get (remapped) IRQ from pci_dev structure. printk( KERN_INFO "%s: IRQ: %d allocated\n", DRIVER_NAME, dev->irq ); #endif // Remap the physical address into virtual address space bar0.v_start = ioremap( bar0.start, bar0.len ); if ( !bar0.v_start ) { printk( KERN_ERR "%s: Could not remap memory of BAR0\n", DRIVER_NAME ); goto cleanup_irq; }; #ifdef DEBUG printk( KERN_INFO "%s: BAR0 virtual address: %X\n", DRIVER_NAME, (unsigned int) bar0.v_start ); #endif // Try to gain control of hardware. if ( request_mem_region( bar0.start, bar0.len, DRIVER_NAME ) == NULL ) { printk( KERN_ERR "%s: Memory of BAR0 is in use\n", DRIVER_NAME ); goto cleanup_remap; }; // gStatFlags |= HAVE_REGION; buffer_key = kmalloc( BLOCK_SIZE, GFP_KERNEL ); if ( buffer_key == NULL ) { printk( KERN_ERR "%s: Unable to allocate key buffer\n", DRIVER_NAME ); goto cleanup_remap; }; buffer_read = kmalloc( BLOCK_SIZE, GFP_KERNEL ); if ( buffer_read == NULL ) { printk( KERN_ERR "%s: Unable to allocate read buffer\n", DRIVER_NAME ); goto cleanup_readbuffer; }; buffer_write = kmalloc( BLOCK_SIZE, GFP_KERNEL ); if ( buffer_write == NULL ) { printk( KERN_ERR "%s: Unable to allocate write buffer\n", DRIVER_NAME ); goto cleanup_writebuffer; }; #if 0 buffer_key = pci_alloc_consistent( dev, BUF_SIZE, &HWKeyAddr ); if ( buffer_key == NULL ) { printk( KERN_ERR "%s: Unable to allocate key buffer\n", DRIVER_NAME ); goto cleanup_remap; }; #ifdef DEBUG printk( KERN_INFO "%s: Key buffer allocation %X->%X\n", DRIVER_NAME, ( unsigned int ) buffer_read, ( unsigned int ) HWReadAddr ); #endif buffer_read = pci_alloc_consistent( dev, BUF_SIZE, &HWReadAddr ); if ( buffer_read == NULL ) { printk( KERN_ERR "%s: Unable to allocate read buffer\n", DRIVER_NAME ); goto cleanup_readbuffer; }; #ifdef DEBUG printk( KERN_INFO "%s: Read buffer allocation %X->%X\n", DRIVER_NAME, ( unsigned int ) buffer_read, ( unsigned int ) HWReadAddr ); #endif buffer_write = pci_alloc_consistent( dev, BUF_SIZE, &HWWriteAddr ); if ( buffer_write == NULL ) { printk( KERN_ERR "%s: Unable to allocate write buffer\n", DRIVER_NAME ); goto cleanup_writebuffer; }; #ifdef DEBUG printk( KERN_INFO "%s: Write buffer allocation %X->%X\n", DRIVER_NAME, ( unsigned int ) buffer_write, ( unsigned int ) HWWriteAddr ); #endif #endif #ifdef DEBUG printk( KERN_INFO "%s: Initialize hardware done\n", DRIVER_NAME ); #endif return 0; cleanup_writebuffer: kfree( buffer_read ); buffer_read = NULL; cleanup_readbuffer: kfree( buffer_key ); buffer_key = NULL; cleanup_remap: iounmap( bar0.v_start ); cleanup_irq: free_irq( dev->irq, DRIVER_NAME ); cleanup: printk( KERN_ERR "%s: Initialize hardware failed\n", DRIVER_NAME ); return -ENODEV; } |
Datum:
Tim T. schrieb: > Dann halt mal ein reales Beispiel aus der eigenen Feder: Manchmal geht es nicht ohne (und macht ein Programm übersichtlicher). GOTO war halt in Basic schon immer für Anfänger attraktiv und hat sich so irgendwie festgesetzt, nebenbei gibt es in Assembler auch Jumps. In BASIC führt es aber regelmäßig zu Spaghetticode. Ich sollte mal so ein Spaghetti-Basic-Teil sanieren, es war nicht mehr möglich. Neuschreiben in C brachte einen Performancegewinn Faktor 2000 (!). Ohne goto (ok, war GWBASIC).
Datum:
Das ist echtes Popcorn Kino hier. Der erste Basicfreak sagt: Basic ist die Mutter aller Programmiersprachen. Sag mir doch mal wie alt IBM Assembler ist, wie alt Cobol, ... Der nächste Basicfreak sagt: C ist schon 40 Jahre alt, kann also nix mehr taugen. Wann wurde im Commodore 4008 Basic ins ROM gebrannt? War das überhaupt der erste? Der dritte bringt ein C Beispiel für Goto vor das ihm in 5 Minuten als lausiger Code zerplückt wird und gibt dann zu das habe er ja auch aus dem Internet "hingerotzt". Leute Leute, damit beweist ihr nur eines, nämlich eure geballte Inkompetenz. Zum Glück gibt es auch Basic Programmierer die sowas nicht nötig haben. Eine Frage: In welcher Sprache wurde eigentlich Bascom geschrieben?
Datum:
Joachim Drechsel schrieb: > > Manchmal geht es nicht ohne (und macht ein Programm übersichtlicher). Es geht immer ohne, wird nur beliebig unübersichtlich. > GOTO war halt in Basic schon immer für Anfänger attraktiv und > hat sich so irgendwie festgesetzt, nebenbei gibt es in Assembler > auch Jumps. In BASIC führt es aber regelmäßig zu Spaghetticode. Habe auch mit Basic auf einem C64 das Programmieren angefangen, allerdings bin ich nie mit der Sprache warm geworden. Das war später mit Pascal und C was ganz anderes. Dort wurde man irgendwie zu besserem Code gezwungen. Bei Assembler fehlt mir für größere Sachen einfach der Gesamtüberblick, brauche dafür zu viel Papier um den ganzen Kram nachzuhalten und es geht dem Gefühl nach dann auch in Richtung Spaghetticode. > Ich sollte mal so ein Spaghetti-Basic-Teil sanieren, es war nicht > mehr möglich. Neuschreiben in C brachte einen Performancegewinn > Faktor 2000 (!). Ohne goto (ok, war GWBASIC). Nicht das ich Basic hier in Schutz nehmen will, aber sowas kann einem bei allen Programmiersprachen begegnen.
Datum:
Ich habe zwar nicht alle Postings gelesen...aber ich kann nur soviel sagen, weil ich keine Ahnung habe und ich weiss nicht was ich tue, das ich auch seit einem Jahr Bascom benutze und mit 0 Programmierkenntnisse gestartet habe, daß meine RGBs faden, Leds blinken und die Uhren ticken... Ich weiss nicht ob man das Ohmsches Gesetz ißt oder trinkt...und damit habe für einigen einen Gefallen getan. Freut mich.
Datum:
duplo schrieb: > Wenn ich mir als Assembler und C Fan Und ich bin Fußballfan. Aber zum selber kicken reicht es nur für den Kartoffelacker. Da ist natürlich die Allianz-Arena dran schuld. mfg.
Datum:
Udo Schmitt schrieb: > Leute Leute, damit beweist ihr nur eines, nämlich eure geballte > Inkompetenz. Was würde denn in so einem Thread Kompetenz ausdrücken? Fürs allgemeine Blafasel bei diesem Thema reicht minimale Restaktivität aus, eventuell gibts bald mal ein Bot dafür (in BASIC oder so) geschrieben. Ein Namen hätte ich auch schon dafür BBB - Bascom Bashing Bot. > Zum Glück gibt es auch Basic Programmierer die sowas nicht nötig haben. Nö, die haben ja bald ihren Bot. > > Eine Frage: > > In welcher Sprache wurde eigentlich Bascom geschrieben? Vom Aussehen her würde ich auf Delphi tippen.
Datum:
Duplo schrieb: > Mir kommt vor, dass die Bascom Befürworter etwas mehr Weitsicht haben, > als die C Progger Freaks, Wie kommst du denn darauf? Weitsicht bzgl. der Hardwareplattform führt weg von Bascom, da die Mikrocontrollerwelt ja nicht nur aus AVRs besteht. Weitsicht bzgl. des beruflichen Werdegangs führt ebenfalls weg von Bascom, da dieses fast nirgends in der Industrie eingesetzt wird. > die zwanghaft an dem 40 Jahre alten C festhalten wollen. Naja, Basic ist noch 8 Jahre älter :) > Wenn es mit der zunehmenden Komplexität der MCs so weiter geht (siehe > XMegas), reicht C in dieser Form nicht mehr aus. Es sei denn, man ist > Masochist oder die Entwicklungszeit spielt keine Rolle. Hmm, C hat sogar für noch sehr viel komplexere Hardware als die XMegas ausgereicht. Falls auch die Anwendungen deutlich komplexer und größer werden, kann man ja darüber nachdenken, auf einen der Nachfolger von C (C++, D, Java, C# ...) umzusteigen. Mit "deutlich komplexer und größer" meine ich hier aber Anwendungen, die weit jenseits der Möglichkeiten eines AVR oder XMega liegen, so dass sich die Frage, ob Bascom oder nicht, sowieso nicht mehr stellt. Ich möchte aber Bascom keinem madig machen. Jeder sollte das benutzen, wo er denkt, dass er damit am weitesten kommt. Tim T. schrieb: > Dann halt mal ein reales Beispiel aus der eigenen Feder: Ja, das sieht schon deutlich mehr nach sinnvollen Gotos aus. Gotos sind vor allem dort sinnvoll, wo von verschiedenen Stellen in verschachteltem Code das gleiche Ziel angesprungen werden soll (typisch in Fehlerbehand- lungen). Bei deinem neuen Beispiel ist dieses Ziel das Label cleanup. In deinem ersten Beispiel war dieser Fall nicht gegeben.
Datum:
Thomas der Bastler schrieb: > Ich weiss nicht ob man das Ohmsches Gesetz ißt oder trinkt...und damit > habe für einigen einen Gefallen getan. Freut mich. Dunkel deiner Rede Sinn ist...
Datum:
Tim T. schrieb: > Thomas der Bastler schrieb: >> Ich weiss nicht ob man das Ohmsches Gesetz ißt oder trinkt...und damit >> habe für einigen einen Gefallen getan. Freut mich. > > Dunkel deiner Rede Sinn ist... Thomas ist glaube ich stolz darauf, daß er trotz diversen netten und auch weniger netten Hinweisen sich immer noch erfolgreich dagegen wehrst absolute Grundlagen zu lernen.
Datum:
Yalu X. schrieb: > Ja, das sieht schon deutlich mehr nach sinnvollen Gotos aus. Gotos sind > vor allem dort sinnvoll, wo von verschiedenen Stellen in verschachteltem > Code das gleiche Ziel angesprungen werden soll (typisch in Fehlerbehand- > lungen). Bei deinem neuen Beispiel ist dieses Ziel das Label cleanup. In > deinem ersten Beispiel war dieser Fall nicht gegeben. Im wesentlichen wird goto immer im gleichen Konstrukt verwendet, um aus einer Funktion herauszuspringen und dabei alle bis dahin durchgeführten Initialisierungen wieder rückgängig zu machen. Ohne gotos wären die Deinitialisierungen entweder redundant vorhanden und bei Änderungen würde immer etwas vergessen zu ändern oder es wären sehr unübersichtliche Schleifenkonstrukte erforderlich.
Datum:
Yalu X. schrieb: > Lueger schrieb: >> Basic war und ist sehr gut und die Mutter aller Programmiersprachen. > > Nein, das ist Lisp :) Das ist FORTRAN, Ihr Noobs. ;-)
Datum:
duplo schrieb: > unmöglich > unter 40 Stunden. Mit Bascom war das ohne Kenntnis der Umgebung in 2 > Tagen erledigt 2 Tage = 48 Studen, wo ist das Problem?
Datum:
Tim T. schrieb: > Im wesentlichen wird goto immer im gleichen Konstrukt verwendet, um aus > einer Funktion herauszuspringen und dabei alle bis dahin durchgeführten > Initialisierungen wieder rückgängig zu machen. Ohne gotos wären die > Deinitialisierungen entweder redundant vorhanden und bei Änderungen > würde immer etwas vergessen zu ändern oder es wären sehr > unübersichtliche Schleifenkonstrukte erforderlich. Na ja eine Dummy Schleife mit break und dann am Ende alle Zeiger die NICHT mehr null sind entsprechend freigeben ist absolut nicht unübbersichtlich. Trotz allem ist das eine absolut legitime GOTO Anwendung, in Basic und in C. In moderneren Sprachen benutzt man Konstrukte wie try ... finally
Datum:
Joachim Drechsel schrieb: > Mich engt es ein, es fehlen genau diese Includefiles, die Syntax > kann ich nicht ab, es fehlt einfach die Präzision wie ich sie von > C her kenne. wo du aber ehrlich sein musst ist, dass es zum Großteil aber auch an der eigenen Abneigung liegt. Technisch gesehen, ist es mit dieser Sprache möglich so präziese zu sein wie mit C. Includes sind ebenso vorhanden wie Strukturen usw. Bedenke das der Entwickler hier offensichtlich viele hilfreiche Ausdrücke verschiedener Sprachen implemeniert hat. Der einfachste Beispiel ist das praktische Bitshiften mit << und >>, wobei das sogar mit Variablen funktioniert. > Ich glaube auch nicht, daß Luna "einfacher" wie C ist. Prinzipiell > kann ich am Anfang einfacher Unkenntnis der Hardware überdecken, das > relativiert sich dann aber. Die ersten Erfolgserlebnisse hat man > mit Luna definitiv VIEL schneller wie bei C. Meine persönliche Meinung dazu ist: es fehlen hier und dort noch kleine Ecken, im Großen und Ganzen muss ich aber meine Hochachtung aussprechen. Der erzeugte Code ist eine sinnvolle Kombination aus Geschwindigkeit und Codegröße, die Syntax ist leicht verständlich, der OO-Ansatz ist eine sinnvolle Mischung aus prozedual und objektorientiert und die IDE ist praktikabel, flink und übersichtlich. Wenn ich C nicht mag, würde ich diese Sprache wählen. Ich muss im Übrigen gestehen, das ich ein fast militanter Assembler-Programmierer bin, erwische mich jedoch seit dem Erscheinen von Luna neuerdings überproportional oft bei der Verwendung derselben. Wenn, wie Frank sagt, möglicherweise auch zukünftig eine MacOS-Version erscheinen sollte, dürfte das ziemlig einmalig sein. Die armen Mac-User haben da keine sonderlich große Auswahl. Ehrhardt
Datum:
Jetzt nicht speziell an Yalu, ich möchte nur den Faden aufgreifen >> Wenn es mit der zunehmenden Komplexität der MCs so weiter geht (siehe >> XMegas), reicht C in dieser Form nicht mehr aus. Es sei denn, man ist >> Masochist oder die Entwicklungszeit spielt keine Rolle. > > Hmm, C hat sogar für noch sehr viel komplexere Hardware als die XMegas > ausgereicht. Hier werden doch Äpfel mit Birnen verglichen. Was ist denn das Tolle an BASCOM? Doch nicht die Sprache an sich. Was mir sauer aufstösst, ist zb das man Expressions auf mehrere Zeilen aufdröseln muss. Das hat zwar gewisse Vorteile wenn es um die Frage der Operator-Reihenfolge bzw. automatische Konversionen geht (wie man im Forum sieht: ein Dauerbrenner), hat man diesen Themenkreis in C aber erst mal intus, dann ist es kein Problem mehr. Nichts desto Trotz kann ich in BASCOM keine 'komplexeren' Expressions in einer Zeile schreiben. (OK, die IDE könnten sie auch mal ein wenig pimpen. Automatische Einrückung würde vielen Programmen guttun. Dem Syntaxparser kann seine Vergangenheit des zeilenweisen Syntaxcheckens auch nicht verleugnen und ist daher keine große Hilfe, wenn es um strukturierte Progammierung geht. etc. etc. In Summe aber: alles nicht so wild. ) Nein, das Tolle an BASCOM ist, dass es die Hardware der AVR (und nicht nur die) in weitgehend abstrahierter Form als Sprachkonstrukt zur Verfügung stellt. Und soweit ich weiß, kann man an dieser Stelle die "Sprache" auch noch mit externen Komponenten pimpen. GLCD wurden meines Wissens so eingebunden. Das alles hat den Vorteil, dass sich Neulinge erst mal um viele Dinge nicht kümmern müssen. Aber: Das ist kein Vor- oder Nachteil für C. Wenn es gelingen würde, eine Standard-'Lib' zusammenzustellen, in der ebenfalls für die häufigsten Anwendungsfälle fertige Codemodule zur Verfügung stehen, dann ist man mit C genauso schnell wie mit BASCOM, was das Hochziehen einer App angeht. Das wir diese Codemodule nicht haben hat keine technischen Gründe sondern ist ein Politikum. 30 oder 40 Programmierer kriegst du nun mal nicht unter einen Hut ohne dass es zu Kompetenzgerangel kommt, weil jeder seine Lösung als die bessere ansieht, die allen anderen überlegen ist. (Und wie man an BASCOM sieht, ist es gar nicht sooo wichtig, immer die allerbeste Lösung zu haben. EINE Lösung die zuverlässig ist, würde schon reichen) Da hat es BASCOM ein wenig leichter. Die gibt es 1 Firma und die macht die Vorgabe.
Datum:
Ach, und noch was. Hütet euch bitte auch davor, dass was wir hier im Forum von BASCOM bzw. an BASCOM-Fragen sehen, als symptomatisch anzusehen. Was wir hier mitkriegen, stammt zum großen Teil von Leuten, für die eine Aufforderung doch mal in die Hilfe zu sehen, schon fast einer 'Einschränkung der persönlichen Freiheit' gleichkommt. Was natürlich kategorisch abgelehnt wird.
Datum:
Ehrhardt Balstein schrieb: > Wenn, wie Frank sagt, möglicherweise auch zukünftig eine MacOS-Version > erscheinen sollte, dürfte das ziemlig einmalig sein. Die armen Mac-User > haben da keine sonderlich große Auswahl. Frank ? Ich dachte, Richard ...
Datum:
Karl Heinz Buchegger schrieb: > Aber: Das ist kein Vor- oder Nachteil für C. Wenn es gelingen würde, > eine Standard-'Lib' zusammenzustellen, in der ebenfalls für die > häufigsten Anwendungsfälle fertige Codemodule zur Verfügung stehen, dann > ist man mit C genauso schnell wie mit BASCOM, was das Hochziehen einer > App angeht. Genau das ist es, was die Jungs von Arduino / Wiring machen.
Datum:
Na klaro, wenn man im Leben noch nichts anderes programmiert hat, als ein Lauflicht dann kommt einem jede Sprache dafür gut genug vor. Es geht nicht um die trivialen Konstrukte. eine for schleife ist eine for schleife, egal wie man das in C oder BASIC schreibt. Und das Bascom für die AVRs eine große lib mitbringt ist ja schön, sagt aber über die Sprache halt nix aus. Ich gebe zu, Bascom im speziellen kenne ich nicht sehr gut. Lerne aber gerne dazu. Also schauen wir uns doch mal zwei Beispiele an: 1.) Gibt es in BASCOM die möglichkeit, eine Referenz auf eine Funktion zu übergeben? Also eine sog. Callback Funktion zu implementieren? Und wie sieht das dann aus? Falls BASCOM OO kann, ist die Antwort natürlich einfach. C kann kein OO, aber dafür gibts Funktionspointer. In einem aktuellen Projekt benötige ich eine Callback Funktion. Eine lib verrichtet ihren Dienst, und muss ab und zu, bei speziellen Kommandos die Kontrolle abgeben. In der lib sieht das so aus:
void mb_setCommandCallback(void (*commandReceived)(uint8_t)); |
Das Programm welches die lib verwendet macht das so:
void special_mb_command(uint8_t cmd) { //Tu was } int main() { mb_setCommandCallback(&special_mb_command); } |
2.) In C kann man alle Datenstrukturen gleich behandeln. Das ist wichtig, wenn man sie z.B. lediglich Byteweise speichern oder lesen oder versendet/empfangen möchte. Ich will nicht jede Variable einzeln behandeln, ich will den ganzen Haufen nehmen und einfach byte für byte was damit machen. Ein Gerät kann via PC parametrisiert werden. Dazu gibt es einige Config Variablen, welche in einem Struct (Config_t) stecken. Die Funktionen zum lesen und schreiben des struct aus und in den eeprom halten sich in Grenzen:
void loadConfig() { eeprom_read_block(&cfg,&config_ee,sizeof(Config_t)); } void saveConfig() { eeprom_write_block(&cfg,&config_ee,sizeof(Config_t)); } |
Ähnlich kompakt sind die Funktionen zum senden und empfangen der Config via serielle Schnittstelle. Man beachte dass hierbei das struct selber imd die darin definierten Variablen, gar keine Rolle spielen. Eine Änderung des structs, zieht keine Änderung in den genannten Funktionen nach sich. Wie sehen die Korrespondierenden Lösungen in BASCOM aus? gruß cyblord
Datum:
Karl Heinz Buchegger schrieb: > Aber: Das ist kein Vor- oder Nachteil für C. Wenn es gelingen würde, > eine Standard-'Lib' zusammenzustellen, in der ebenfalls für die > häufigsten Anwendungsfälle fertige Codemodule zur Verfügung stehen, dann > ist man mit C genauso schnell wie mit BASCOM, was das Hochziehen einer > App angeht. Ich würde so eine "Standard-Lib" in C auch sehr begrüßen, wäre sofort bei der Entwicklung mit dabei, wenn sich noch eine Handvoll anderer Leute beteiligen würden. > Das wir diese Codemodule nicht haben hat keine technischen Gründe > sondern ist ein Politikum. 30 oder 40 Programmierer kriegst du nun mal > nicht unter einen Hut ohne dass es zu Kompetenzgerangel kommt, weil > jeder seine Lösung als die bessere ansieht, die allen anderen überlegen > ist. Das sehe ich als kleineres Problem an. Als damaliger Gründer des fli4l-Projekts kann ich dazu nur sagen, dass es einen geben muss, der das Grobkonzept vorgibt und bei Streitfragen entscheidet und dessen Meinung von allen anderen akzeptiert und mitgetragen wird. Dann klappt das schon. Beim fli4l-Projekt hat das sogar mit bis zu 70 (Haupt- und Neben-)Entwicklern funktioniert. Jeder im Team findet seine Nische, wo er sich austoben kann. Gruß, Frank
Datum:
Joachim Drechsel schrieb: > Ehrhardt Balstein schrieb: >> Wenn, wie Frank sagt, möglicherweise auch zukünftig eine MacOS-Version >> erscheinen sollte, dürfte das ziemlig einmalig sein. Die armen Mac-User >> haben da keine sonderlich große Auswahl. > > Frank ? Ich dachte, Richard ... der Beitrag stammt von einem Frank, ich nehme an ein Mac-User der das in Zuammenarbeit testet
Datum:
cyblord ---- schrieb: > Wie sehen die Korrespondierenden Lösungen in BASCOM aus? > Ok, die EPROM Sache ist jetzt nicht so speziell, ist in BASCOM aber auch kein Showstopper. Dort brauchst du keine eeprom_read_xxx Funktionen. Du markierst die Variable als 'im EEPROM' und gut ists. Die andere Sache, das musst du selber auch zugeben, ist dann schon etwas speziell. Weil du das eben so brauchst. Ich behaupte aber mal: Viele Programme brauchen solche Dinge gar nicht. Um mit einem Tiny 2 RC-Signale zu mischen und wieder auf einen Servoausgang zu legen, ist das alles nicht notwendig. Mit BASCOM ist das trivial machbar (wenn auch nicht unbedingt optimal). Da hat dein AVR_Studio noch nicht mal fertig gebootet, brennt der BASCOM Jünger schon den Tiny. Muss man neidlos anerkennen. Und viele Programme sind in dieser Komplexitäts-Kategorie. BASCOM ist für mich wie ein Letherman. Klar: die 12 verschiedenen Schraubendreher in der Werkstatt sind was anderes als die beiden am Letherman. Klar, mit der Säge am Letherman wirst du ausser kleinen Stücken nicht viel schneiden können, und die Feilen sind kein wirklicher Ersatz für den Satz Schlüsselfeilen zu Hause. Aber trotzdem ist ein Letherman nützlich, wenn man sich darauf besinnt, wozu er gedacht ist, was er kann und wo seine Grenzen liegen.
Datum:
Karl Heinz Buchegger schrieb: > Ok, die EPROM Sache ist jetzt nicht so speziell, ist in BASCOM aber auch > kein Showstopper. Dort brauchst du keine eeprom_read_xxx Funktionen. Du > markierst die Variable als 'im EEPROM' und gut ists. Das speichern im eeprom war ein Beispiel. Es geht NICHT um das schreiben ins eeprom. Ausserdem, wie sieht das in Bascom aus? Definiert man da eine oder zwei Variablen? Also eine fürs Ram und eine für den EEPROm? Und wie kontrolliert man wann ins eeprom geschrieben oder gelesen wird? Ich möchte ja vielleicht nicht sofort alles im eeprom haben. Wie siehts mit dem versenden/empfangen aus? Also mit dem Byteweisen Zerpflücken? Und vorallem das gruppieren via struct? Zig Einzelvariablen sind nicht so übersichtlich...
Config_t cfg; void sendConfig() { for (int i=0;i<sizeof(Config_t);i++) { send(((uint8_t*)&cfg)[i]); } } |
Vorallem was wenn man mehrere Konfig-Profile braucht? Dann reicht es 2x Variablen vom Typ Config_t anzulegen. In Bascom???
typedef struct Config { uint8_t var1; uint16_t var2; char[10] string; uint16_t[15] varArray; } Config_t; Config_t config1; Config_t config2; |
> Die andere Sache, das musst du selber auch zugeben, ist dann schon etwas >
speziell
Naja, also das übergeben von Funktionen als Parameter braucht man schon
öfters. Ist wie gesagt bei OO eigentlich standard, nur das siehts anders
aus.
Ausserdem las ich hier durchgehend, dass mit Bascom alles gehen würde,
was mit C auch geht. Ich las wenig davon dass Bascom beschränkt aber
einfach ist.
gruß cyblord
Datum:
cyblord ---- schrieb: Zum Thema 'Config'. Keine Ahnung. Bin kein BASCOM Spezialist. Ich habs ein paar mal gestartet, ein wenig damit gespielt und das wars dann auch. >> Die andere Sache, das musst du selber auch zugeben, ist dann schon etwas > > speziell > Naja, also das übergeben von Funktionen als Parameter braucht man schon > öfters. Du brauchst das. Derjenige, der einen Ersatz für die Steuerung seiner Waschmaschine braucht, braucht das nicht. Versteh mich nicht falsch: Ich sag ja nicht, dass du da jetzt hohe Anforderungen stellst. Ich behaupte lediglich: die Mehrzahl der Leute, die mit BASCOM arbeiten verspüren gar nicht den Drang dazu, sowas zu machen. Sie brauchen es für ihre Projekte schlicht und ergreifend nicht. Für den ist viel wichtiger, dass sein LCD aus dem Stand heraus funktioniert und er mit 2 Tasten die Vorgabetemperatur für die Gewächshausheizung, die er mit PWM anspricht, ändern kann. Und das alles in weniger als 20 Zeilen Code. > Ausserdem las ich hier durchgehend, dass mit Bascom alles gehen würde, > was mit C auch geht. Ich las wenig davon dass Bascom beschränkt aber > einfach ist. Ist es aber. Dessen muss man sich bewusst sein. BASCOM ist keine Universalsprache sondern speziell auf die Bedürfnisse von Leuten abgestimmt, die µC programmieren. Alles andere wurde abgespeckt. Wie gut es sich für größere Projekte eignet kann ich mangels Erfahrung nicht beurteilen. Aber für kleinere Dinge ist es gar nicht mal so schlecht.
Datum:
Danke Karl Heinz, ich seh das ähnlich wie du. Dazu kommt aber noch, dass eben jemand der noch nie richtig programmiert hat, die Beschränktheit von Bascom gegenüber C gar nicht erkennt, aber dafür immer schön draufhaut und sich lautstark fragt, wozu man das uralte doofe C denn braucht. Und genau das ärgert mich. Eventuell meldet sich ja noch ein BASCOM Programmierer und kann anhand des Config Szenarios mal eine Lösung in BASCOM vorstellen? Ich wundere mich ja schon ein wenig, bei allgemeinen Statements da oben reißt jeder das Maul auf, aber wenns EINMAL sachlich und konkret wird, dann kommt nix mehr. gruß cyblord
Datum:
cyblord ---- schrieb: > aber wenns EINMAL sachlich und konkret wird, dann kommt > nix mehr. Echt jetzt mal, hat denn niemand ein konkretes "Config Szenario" in Bascom?
Datum:
Ich klinke mich mal einfach ein, mche vieles mit Bascom, ohne jetzt der Vollprofi zu sein. Was das Zerpflücken von Strings oder anderen variablen in Bytes angeht, so geht das supereinfach. Dim beliebiger_string as string *20 dim einzelne_bytes (20) as byte at beliebiger_string overlay man kann nun mit dem String verfahren wie man will, hineinschreiben, herauslesen, left, right, mid etc. alles machbar. Braucht man n einzelnes Byte kann man das einfach bfragen als einzelne_bytes(x). Geht genauso mit Word oder Single Variablen, dann einfach 2 Bytes bzw. 4 Bytes deklarieren. Funktionen mit Rückgabewert gibts natürlich auch ... declare function irgendeine_funktion (byval / byref Wert_zur_funktion_hin as word) as single function irgendeine_funktion (Wert_zur_funktion_hin) local local_single as single local_single = Wert_zur_funktion_hin*10 irgendeine_funktion = local_single end function Aufruf z.B. durch Singlevariable = irgendeine_funktion(10) EEPROM-Zugriffe gehen supereinfach, auch als eindimmensionales Array ... dim eepromvariable (10) as eram byte äquivalent gehts klaro auch mit word, single etc. Aufruf einfach per eepromvariable(1) = xy
Datum:
cyblord ---- schrieb: > Es geht NICHT um das schreiben > ins eeprom. Ausserdem, wie sieht das in Bascom aus? Definiert man da > eine oder zwei Variablen? Also eine fürs Ram und eine für den EEPROm? > Und wie kontrolliert man wann ins eeprom geschrieben oder gelesen wird? > Ich möchte ja vielleicht nicht sofort alles im eeprom haben. > Wie siehts mit dem versenden/empfangen aus? Also mit dem Byteweisen > Zerpflücken? Und vorallem das gruppieren via struct? Zig Einzelvariablen > sind nicht so übersichtlich... ich weiß jetzt nicht wie es in bascom funktioniert, in luna kann man Strukturen nutzen, Beispiel Eeprom:
eeprom hallo .db 100,200 .dw &h4711 .db 5,"hallo" endeeprom |
Zugriff über die Objektfunktionen:
a = hallo.ByteValue(1) s = hallo.PString(4) |
Im Arbeitsspeicher (aus den Examples):
struct point byte x byte y endstruct dim p(3) as point p(0).x = 10 p(0).y = 20 |
Man sieht also, wenn man nicht weiß welche Möglichkeiten eine Sprache speziell bietet, wird das oft zu schnell abgetan. Gruß, Ehrhardt
Datum:
Fhutdhb Ufzjjuz schrieb: > EEPROM-Zugriffe gehen supereinfach, auch als eindimmensionales Array ... Dann wird man wohl sehr schnell die Schreibzyklenanzahl überschritten haben, wenn man einfach so drauf los schreibt. In C ist daher die übliche EEPROM-Nutzung, man legt eine beliebig komplexe Struct (int, float, char* usw.) im SRAM an. Nach dem Reset wird über den EEPROM eine CRC geprüft und dann in diese Struct kopiert. Dann wir damit gearbeitet. Und nur auf Nutzeranforderung oder bei Power-Fail-Erkennung wird zurück geschrieben. Bei größeren Datensätzen erfolgt das im Interrupt, damit andere Prozesse nicht lange blockiert werden. Der EEPROM wir daher nicht ständig verschliessen, wie es aber bei Gleichbehandlung mit SRAM der Fall wäre. Ich habe auch einige kommerzielle Geräte, die sich nichts mehr merken können. Vermutlich hat auch da der Programmierer die Schreibzyklenzahl nicht beachtet. Hier mal ein Beispiel:
#include <avr/io.h> #include "eeprom.h" #define EE_ADDR 1 struct{ uint32_t p0; float p1; int16_t p2; uint8_t p3; }eeprom_data; int main( void ) { eeprom_read( &eeprom_data, EE_ADDR, sizeof(eeprom_data) ); eeprom_data.p0++; eeprom_write( EE_ADDR, &eeprom_data, sizeof(eeprom_data) ); for(;;){ } } |
Peter
Datum:
Fhutdhb Ufzjjuz schrieb: > declare function irgendeine_funktion (byval / byref > Wert_zur_funktion_hin as word) as single Äh wie ?
Datum:
Duplo schrieb: > Danke für die zahlreichen, teilweise sehr guten Kommentare! > > > Mir kommt vor, dass die Bascom Befürworter etwas mehr Weitsicht haben, > als > die C Progger Freaks, die zwanghaft an dem 40 Jahre alten C festhalten > wollen. > > Wenn es mit der zunehmenden Komplexität der MCs so weiter geht (siehe > XMegas), reicht C in dieser Form nicht mehr aus. Es sei denn, man ist > Masochist oder die Entwicklungszeit spielt keine Rolle. > > Ich würde mich als "Generalisten" bezeichnen Also jetzt muß ich an dieser Stelle mal eingreifen: 1. Es interessiert niemanden was kleine Hobbybastler denken. Zählt ist was in der Indujstrie verwendet wird. Die setzen in unseren Breitengraden nun mal die Standarts und damit beschäftigen sich Menschen hauptberuflich. Mit Weitsicht hat das mit Bascom nichts zu tun. Das hat mit geringem Horizont zu tun. C bewährt sich seit vielen aJahren millionenfach, wohingegen es BASCOM GENAUSOLANGE gibt, das sich aber offensichtlich nicht durchgesetzt hat. 2. C ist so einfach - wer das nicht versteht - sorry der hat in ddiesem Geschäft nichts zu suchen beruflich 3. Mit c und endsprechendnen Libs kann man alles realisieren. Machen tut man das gleiche wie in Bascom nur, daß man bei Bascom keinen Zugriff darauf hat. Wenn es sicherehitsrelevant ist, kann ich aber nicht maschinenfern programmieren, sondern muß so maschinennah programmieren wie möglich. 4. Ich möchte das Projekt sehen, daß man in Bascom realisieren kann aber nicht in C mit gleichem aufwand. Das scheitert vielleicht an deinen Kenntnissen aber nicht an den Möglichkeiten von C
Datum:
Fhutdhb Ufzjjuz schrieb: > > Was das Zerpflücken von Strings oder anderen variablen in Bytes angeht, > so geht das supereinfach. > > Dim beliebiger_string as string *20 > dim einzelne_bytes (20) as byte at beliebiger_string overlay Ok das ist praktisch. Geht das auch mit zusammengesetzten Datentypen? > Funktionen mit Rückgabewert gibts natürlich auch ... Die gibts überall ;-) > function irgendeine_funktion (Wert_zur_funktion_hin) > local local_single as single > > local_single = Wert_zur_funktion_hin*10 > irgendeine_funktion = local_single > end function Sorry kannst du das mal sauber und in [code] tags hinschreiben? > > EEPROM-Zugriffe gehen supereinfach, auch als eindimmensionales Array ... > > dim eepromvariable (10) as eram byte Das geht in C genauso. Wie wird der zugriff gesteuert? Wird bei jedem schreiben auf diese Variable tatsächlich in den eeprom geschrieben? gruß cyblord
Datum:
Joachim Drechsel schrieb: > Fhutdhb Ufzjjuz schrieb: >> declare function irgendeine_funktion (byval / byref >> Wert_zur_funktion_hin as word) as single > > Äh wie ? declare function ... alle Funktionen müssen deklariert werden. Man kann Werte beim Funktionsaufruf mit übergeben, entweder byval, dann wird der Wert kopiert, Änderungen des Wertes in der Funktion bleiben nicht erhalten, oder byref, dann wird der Pointer des Wertes mit übergeben, nicht der eigentliche Wert, bei Änderungen des Übergabewertes in der Funktion bleiben die dann bestehen. as single am Ende bedeutet einfach, dass die Funktion als Rückgabewert eine Singlevariable darstellt. beispiel: declare function irgendeine_funktion (byval Wert_zur_funktion_hin as word) as single dim ausgabesingle as single dim uebergabe_wert as word uebergabe_wert = 10 ausgabesingle = irgendeine_funktion(uebergabe_wert) print uebergabe_wert print ausgabesingle do loop end function irgendeine_funktion (Wert_zur_funktion_hin) incr Wert_zur_funktion_hin irgendeine_funktion=Wert_zur_funktion_hin * 2 end function Hier wäre nun nach dem Funktionsaufruf uebergabe_wert immernoch 10 weil byval, ausgabesingle wäre 22 declare function irgendeine_funktion (byREF Wert_zur_funktion_hin as word) as single dim ausgabesingle as single dim uebergabe_wert as word uebergabe_wert = 10 ausgabesingle = irgendeine_funktion(uebergabe_wert) print uebergabe_wert print ausgabesingle do loop end function irgendeine_funktion (Wert_zur_funktion_hin) incr Wert_zur_funktion_hin irgendeine_funktion=Wert_zur_funktion_hin * 2 end function Hier wäre nun nach dem Funktionsaufruf uebergabe_wert 11 weil byref und in der Funktion incr Wert_zur_funktion_hin, ausgabesingle wäre ebenfalls 22
Datum:
Danke für dieses Exkurs in die "Tiefen" der By Value/By Reference Problematik. Aber ich denke die kennen wir schon ;-) Darum gehts doch gar nicht. Ich dachte du wolltest die Übergabe von Funktionen als Parameter darstellen. Also eine Funktion wird an eine Funktion übergeben. ps: was hast du gegen die [code] tags?
Datum:
cyblord ---- schrieb: > Fhutdhb Ufzjjuz schrieb: >> >> Was das Zerpflücken von Strings oder anderen variablen in Bytes angeht, >> so geht das supereinfach. >> >> Dim beliebiger_string as string *20 >> dim einzelne_bytes (20) as byte at beliebiger_string overlay > > Ok das ist praktisch. Geht das auch mit zusammengesetzten Datentypen? Bascom kennt keine zusammengesetzten Datentypen, Du kannst über ne Single Variable 2 Word Variablen und 4 Byte variablen drüber legen z.B.. Structs gibts in Bascom nicht > >> Funktionen mit Rückgabewert gibts natürlich auch ... > Die gibts überall ;-) > > >> function irgendeine_funktion (Wert_zur_funktion_hin) >> local local_single as single >> >> local_single = Wert_zur_funktion_hin*10 >> irgendeine_funktion = local_single >> end function > > Sorry kannst du das mal sauber und in [code] tags hinschreiben? kann µC-net basic code formatieren? >> >> EEPROM-Zugriffe gehen supereinfach, auch als eindimmensionales Array ... >> >> dim eepromvariable (10) as eram byte > Das geht in C genauso. Wie wird der zugriff gesteuert? Wird bei jedem > schreiben auf diese Variable tatsächlich in den eeprom geschrieben? ja, wird direkt keschrieben, mit allen Vor- und Nachteilen z.B. delay. Würde ich aber nicht empfehlen ... auch ist damit recht vorsichtig umzugehen. Die Abfrage einer ERAM-Variable in einem Interrupt hat mich mal einige graue Haare gekostet, weil der EEPROM-Pointer da verschoben wird, wird zeitgleich in der Mainloop auf das EEPROM zugegriffen gibt das seltsame Effekte ... Daher zu Programmstart die ERAM in SRAM kopieren und nur von Fall zu Fall neu beschreiben wenn erforderlich. Auch gehts zum beispiel nicht: sramvariable = eramvariable * 10 das dagegen geht: sramvariable = eramvariable sramvariable = Singlevariable * 10 > gruß cyblord Generell hat Bascom schon einige Pferdefüße ... Rechnen ist ein Graus
Datum:
declare function irgendeine_funktion (byval Wert_zur_funktion_hin as word) as single dim ausgabesingle as single dim uebergabe_wert as word uebergabe_wert = 10 ausgabesingle = irgendeine_funktion(uebergabe_wert) print uebergabe_wert print ausgabesingle do loop end function irgendeine_funktion (Wert_zur_funktion_hin) incr Wert_zur_funktion_hin irgendeine_funktion=Wert_zur_funktion_hin * 2 end function |
declare function irgendeine_funktion (byREF Wert_zur_funktion_hin as word) as single dim ausgabesingle as single dim uebergabe_wert as word uebergabe_wert = 10 ausgabesingle = irgendeine_funktion(uebergabe_wert) print uebergabe_wert print ausgabesingle do loop end function irgendeine_funktion (Wert_zur_funktion_hin) incr Wert_zur_funktion_hin irgendeine_funktion=Wert_zur_funktion_hin * 2 end function |
jetzt besser? :o)
Datum:
cyblord ---- schrieb: > Danke für dieses Exkurs in die "Tiefen" der By Value/By Reference > Problematik. Aber ich denke die kennen wir schon ;-) Darum gehts doch > gar nicht. ok, dann hab ich da was missverstanden > Ich dachte du wolltest die Übergabe von Funktionen als Parameter > darstellen. Also eine Funktion wird an eine Funktion übergeben. ui, da muss ich passen, hab ich noch nicht probiert > ps: was hast du gegen die [code] tags? nix
Datum:
Klar ist es besser, so sieht man wenigstens wo code und wo text ist. Gut es gibt in Bascom Übergabe by Reference, was schonmal gut ist, und es gibt overlay = union in c. Keine zusammengesetzten Datentypen, keine Funktionspointer. Aber das heißt auch, dass beide meiner Szenarien da oben in Bascom so nicht durchführbar sind? Natürlich kann man Konfig Werte definieren, diese speicher/laden und senden/empfangen. Aber der Code Aufwand wäre doch viel viel größer. Das ganze wäre auch unübersichtlicher. Mehrere Konfigs gehen dann auch nur schwerlich. Das callback würde an sich gar nicht gehen. gruß cyblord
Datum:
cyblord ---- schrieb: > Klar ist es besser, > so sieht man wenigstens wo code und wo text ist. > > > Gut es gibt in Bascom Übergabe by Reference, was schonmal gut ist, und > es gibt overlay = union in c. > Keine zusammengesetzten Datentypen, keine Funktionspointer. richtig > Aber das heißt auch, dass beide meiner Szenarien da oben in Bascom so > nicht durchführbar sind? richtig > Natürlich kann man Konfig Werte definieren, diese speicher/laden und > senden/empfangen. Aber der Code Aufwand wäre doch viel viel größer. Das > ganze wäre auch unübersichtlicher. Mehrere Konfigs gehen dann auch nur > schwerlich. ?? hab ich nicht verstanden ... wie meinst Du das? Du kannst z.B.
dim singlevar(10) as single dim bytes(40) as byte at singlevar(1) overlay |
oder
dim singlevar(10) as single dim bytes_1(4)as byte at singlevar(1) overlay dim bytes_2(4)as byte at singlevar(2) overlay dim bytes_3(4)as byte at singlevar(3) overlay etc. etc. |
klar, kein Vergleich mit C > Das callback würde an sich gar nicht gehen. richtig > gruß cyblord
Datum:
Für ein Protokoll wäre z.B. machbar:
dim ausgabearray(30) as byte dim slaveadresse as byte at ausgabearray(1) dim masteradresse as byte at ausgabearray(1)+1 dim zielregister as byte at ausgabearray(1)+2 dim registerwert as single at ausgabearray(1)+3 dim stringausgabe as string*5 at ausgabearray(1)+7 dim wordvariable as word at ausgabearray(1)+12 etc. |
ich verwende sowas bei nem Modbusbrotokoll
Datum:
>> dim singlevar(10) as single > dim bytes_1(4)as byte at singlevar(1) overlay > dim bytes_2(4)as byte at singlevar(2) overlay > dim bytes_3(4)as byte at singlevar(3) overlay > etc. etc. > |
> > klar, kein Vergleich mit C Eben. Niemand weiß mehr für was jetzt die einzelnen Bytes stehen. Aber wenn in C dasteht:
Config_t cfg; cfg.maxTemp=23.5; cfg.text="Hallo"; cfg.rpm=500; |
Das ist schon ne andere Übersichtlichkeit. Fhutdhb Ufzjjuz schrieb: > Für ein Protokoll wäre z.B. machbar: >
> dim ausgabearray(30) as byte > dim slaveadresse as byte at ausgabearray(1) > dim masteradresse as byte at ausgabearray(1)+1 > dim zielregister as byte at ausgabearray(1)+2 > dim registerwert as single at ausgabearray(1)+3 > dim stringausgabe as string*5 at ausgabearray(1)+7 > dim wordvariable as word at ausgabearray(1)+12 > > etc. > |
> > ich verwende sowas bei nem Modbusbrotokoll Verstehe. Ist interessant.
Datum:
cyblord ---- schrieb: > Das ist schon ne andere Übersichtlichkeit. da hat du absolut recht, wenn man aber mit aussagekräftigen Variablennamen arbeitet wie ich in meinem gerade erst verfassten Protokollbeispiel kann man dem schon nahe kommen.
Datum:
Neil schrieb: > Wäre auch in C kein Problem, wenn man konsequent während seines > 'Entwicklerdaseins' konfigurierbare Bibliotheken für immer > wiederkehrende Funktionalitäten aufgebaut hat. Das kann man aber nur, wenn man sich als Entwickler nicht weiterentwickelt. Wenn man lernfähig ist, wird man zugegeben müssen, dass man Funktionen von vor 10 Jahren so heute nicht mehr schreiben würde, weil man effizientere Möglichkeiten gefunden hat. Warum sollte man dann auf dem Stand von vor zehn Jahren stehende Bibliotheken nutzen?
Datum:
Timm Thaler schrieb: > Wenn man lernfähig ist, wird man zugegeben müssen, dass man Funktionen > von vor 10 Jahren so heute nicht mehr schreiben würde, weil man > effizientere Möglichkeiten gefunden hat. Welche und wieso? Weil man vor 10 Jahren nicht programmieren konnte und heute noch genauso vor sich hinwurschtelt? Es gibt auch Leute, die konnten schon vor 20 Jahren programmieren. > Warum sollte man dann auf dem > Stand von vor zehn Jahren stehende Bibliotheken nutzen? Weil 1+1 vor 10 Jahren 2 war, heute noch ist und in 11 Milliarden Jahren auch noch sein wird. mfg.
Datum:
Ich hab schon beides ausgiebig benutzt. Was mir an Bascom gefällt: schreib ein Programm, schreib zwischendrin ein paar Zeilen Assembler, compilier das Ganze und Du kannst im Simulator (in der IDE) Schritt für Schritt durch den Quelltext wandern, (nicht durch ein Make- Symbol oder was auch immer file), egal ob Basic und Assembler-Zeile, und Du siehst genau, wieviele Takte bzw. Mikro/Nanosekunden das dauert. Du brennst das, und das Zeitverhalten ist exakt so! Bei C musst Du (wenn Du sowas machen willst) immer die richtige Compiler-Eistellung kennen, ckechen, dass nichts wegoptimiert wurde, viele Compiler-Optionen kennen und auch noch richtig anwenden ... Gerade wenn man die Chip-Performance voll ausreizen will, aber nicht alles in Assembler schreiben will, hat das viel Charme.
Datum:
Ähem Fhutdhb Ufzjjuz, mit "Äh wie" meinte ich nicht, ich hätte es nicht verstanden ;)
Datum:
Rainer Unsinn schrieb: > egal ob Basic und Assembler-Zeile, und Du siehst > genau, wieviele Takte bzw. Mikro/Nanosekunden das dauert. Das machte mein Keil-Compiler schon vor 20 Jahren. Also schon ein alter Hut.
Datum:
Das Thema "Basic vs C" gibt es hier ja öfters, das letzte Mal sehr ausführlich erst vor ein paar Monaten: Beitrag "Basic und/bzw. vs - C Erfahrungsumfrage" Die Einschränkungen von Bascom, die ich dort nannte Beitrag "Re: Basic und/bzw. vs - C Erfahrungsumfrage" (keine benutzerdefinierten Datenstrukturen, keine mehrdimensionalen Arrays) zusammen mit dem Einwand von Karl Heinz: Karl Heinz Buchegger schrieb: > Was mir sauer aufstösst, ist zb das man Expressions auf mehrere Zeilen > aufdröseln muss. erinnern mich stark an das Basic des Sinclair ZX81 von 1981, das eben- falls genau diese Einschränkungen hatte. Schon vor 30 Jahren wurde das ZX81-Basic deswegen belächelt, da die Basic-Dialekte der Konkurrenz (Apple und Commodore, TRS-80 usw.) mehrdimensionale Arrays und komplexe Ausdrücke bereits beherrschten (Strukturen hatten aber auch diese nicht, die kamen für Basic erst sehr viel später).
Datum:
zum reparieren einer uhr benutze ich keinen hammer (z.b. bascom) zum einschlagen eines nagels benutze ich keinen uhrmacherwerkzeug (z.b."c") zur mikro-chirugischen perfektion helfen beide nicht ( z.b. dann asm) inquisitorische threads helfen da sicherlich nur zur selbstbestätigung. ich nutze das werkzeug das zur aufgabe passt, das ist bascom, c oder assembler (oder "xy"...). wenn ein programierer nicht die flexibilität besitzt, seine aufgabe mit der problemorientierten sprache zu lösen, ist es kein programierer. ich nenne dann so was fach-idiot. bascom hat mir bei "quick-and-dirty's" schon oft geholfen. bascom wird vom kunden gern aktzeptiert weil nachvollziehbar ohne spezialisten wissen. massstab ist die funktion und die stabilität. bei den beiden anderen ebenen rede ich dann über "black-boxes". die helfen zwar dem ersteller bei folgeaufträgen, aber dann bitte ohne philosophische ansprüche die wahre lehre gefunden zu haben. ps: ich mach das jetzt seit 40-jahren in einem grossbetrieb(>20000), und ja, meine shift-taste ist defekt ;-)
Datum:
Thomas Eckmann schrieb: > Weil 1+1 vor 10 Jahren 2 war, heute noch ist und in 11 Milliarden Jahren > auch noch sein wird. Dummfug, 1+1 war auch schon immer 10, oder kann hier jemand nicht programmieren?
Datum:
Controllerregister können in Bascom natürlich auch direkt beschrieben werden (und haben auch die gleichen Namen wie im Datenblatt) Was mir bei solchen Diskussionen immer wieder auffällt ist, dass es eher die C Programmierer sind, die "draufhauen" und Bascom schlechtreden. Umgekehrt verneigen sich die meisten demütig, vor der geballten Intelligenz.
Datum:
PeterL schrieb: > Was mir bei solchen Diskussionen immer wieder auffällt ist, dass es eher > die C Programmierer sind, die "draufhauen" und Bascom schlechtreden. > Umgekehrt verneigen sich die meisten demütig, vor der geballten > Intelligenz. Du vergleichst Äpfel mit Birnen. C gibt es für alle Platformen, Bascom nur für ein winzigkleines Segment.
Datum:
Wie man aus den Antworten sieht, haben die Bascom Befürworter hundert Prozent mehr Weitsicht. Dabei handelt es sich um Leute, die meistens über den Tellerrand hinausschauen und mehrere Sprachen beherschen. Sie wählen einfach die zum Projekt passende Programmierumgebung aus und verstehen sie gezielt einzusetzen. Projekterfolg gewiss. Bibliotheken: Meine jahrelang entstandenen Bibliotheken kann ich alle schrotten, weil der Einsatz von XMegas erforderlich ist...Danke C. Mit Bascom habe ich das nicht einmal gemerkt, außer dass nach 1 Stunde bereits die I2C-EEprom Funktionen liefen. Auch Codevision geht hier einen etwas fortschrittlichern Weg mit dem Codewizard. Die, die in den C Bibliotheken das Paradies sehen, haben noch nie mit einem XMega oder ARM gearbeitet. Wahrscheinlich nur mit Tinys. Die laufen auch unter C schnell. Ich hab einfach nicht immer Zeit und Lust, mich durch 500 Seiten Datenblätter zu arbeiten. Das muß eine gute Programmierumgebung für mich machen. Sonst ist sie für mich nicht zu gebrauchen. Rico
Datum:
Joachim Drechsel schrieb: > PeterL schrieb: >> Was mir bei solchen Diskussionen immer wieder auffällt ist, dass es eher >> die C Programmierer sind, die "draufhauen" und Bascom schlechtreden. >> Umgekehrt verneigen sich die meisten demütig, vor der geballten >> Intelligenz. > > Du vergleichst Äpfel mit Birnen. Nee, ich denk' da hat er schon recht. Sobald ein Jünger des C es einmal geschafft hat ein "Hello World" zu compilieren, führt das sofort zur zwanghaften Einbildung etwas Besseres zu sein. Meist grundlos, hundertfach im Forum vorhandenes gequältes C beweist das Gegenteil. Die Hürden zum Einstieg sind in C höher, was natürlich auch einen Vorteil hat, da der Nutzer eine höhere Leidensbereitschaft beweisen muss und damit vorab 'ne gewisse Auslese stattfindet. Andererseits sollte man nicht vergessen, dass ein einfacherer Einstieg in eine Sprache potentiell zu einer stärkeren Verbreitung der Technik führt, also etwas das auch Ziel dieses Forums ist. Jedes Werkzeug hat gewisse Stärken, da muss man nehmen, was am besten passt und am meisten persönlich zusagt. Wer ein Callback braucht, der nimmt sich eine Sprache, die das erlaubt, braucht er's nicht, ist er evtl. mit was Anderem besser bedient. Nur, Einbildung auf das eine oder andere Werkzeug ist völlig fehl am Platz, wobei eben diese Einbildung bei C-lern deutlicher zu bemerken ist. Und wer nur eine Sprache kann, ist sowieso ein armes Würstchen ;D
Datum:
Yalu schrob: >...erinnern mich stark an das Basic des Sinclair ZX81 von 1981, das eben- >falls genau diese Einschränkungen hatte. Der ZX81 hatte original nur 1KB RAM. Das ist es aller Ehren wert, was man damit anstellen konnte. Wenn BASIC nicht Basic sondern vielleicht "HORST" hieße, hätten nicht so viele Leute regelrecht Angst davor zuzugeben, daß sie es benutzen. So aber heißt es: Das ist doch nur Etwas für Anfänger und Lernfaule. Jemand, der Englischunterricht hatte, kann einen Basic- oder auch einen Algol- oder Pascalquelltext ohne große Vorkenntnisse lesen, weil die Schlüsselworte und Befehle oft selbsterklärend sind. Selbst Leute ohne Kenntnis der englischen Sprache können sich recht schnell hineinfinden. Zeigt man einem Außenstehenden dagegen einen Quelltext in C, dann reißt der ob dieses Kauderwelsches an jedweden verfügbaren Sonderzeichen Mund und Nase auf und zollt dem "Experten" Respekt vor seinen enormen Kenntnissen in dieser Art: "So Etwas Kompliziertes würde ich nie begreifen! Du bist ein Fux (mit x) Jemand das DAS beherrscht, muß fürstlich bezahlt werden!" Nein, es ist nur komplizierter, sich statt Klartext (z.B. Shift left, or and) Sachen wie <<, ||, && einzuprägen. Ein falsches Zeichen ruft keinen Sytaxfehler hervor, das Programm macht nur etwas Anderes als man erwartet. Man sucht sich die Schwindsucht an den Hals... MfG Paul
Datum:
Paul Baumann schrieb: > Zeigt man einem Außenstehenden dagegen einen Quelltext in C, dann reißt > der > ob dieses Kauderwelsches an jedweden verfügbaren Sonderzeichen Mund und > Nase auf und zollt dem "Experten" Respekt vor seinen enormen Kenntnissen > in dieser Art: Lesen können ist immer ein Vorteil. Ein C-Quelltext ist keine Literatur. Wenn Du die extrem einfache und übersichtliche C-Syntax nicht kapierst bleibe bei BASIC. Beginners All ...
Datum:
Rico schrieb: > Bibliotheken: Meine jahrelang entstandenen Bibliotheken kann ich alle > schrotten, weil der Einsatz von XMegas erforderlich ist...Danke C. Wie ich schon mal oben schrieb: "Was hat die Bibliothek mit der Sprache zu tun?" Rico schrieb: > Mit Bascom habe ich das nicht einmal gemerkt, außer dass nach 1 Stunde > bereits die I2C-EEprom Funktionen liefen. Weil jemand anderes fuer dich die Arbeit getan hat. Wenn du eine fertige Lib fuer den Prozessor hast ist das auch in C in 5 Minuten erledigt. Und einige neuere Cortex uC haben sowas von Hersteller schon auf dem Chip im ROM mit drauf. Aufrufen und fertig. Rico schrieb: > Die, die in den C Bibliotheken das Paradies sehen, haben noch nie mit > einem XMega oder ARM gearbeitet. Wahrscheinlich nur mit Tinys. Die > laufen auch unter C schnell. Quatsch. ARM/Cortex sind schon dafuer ausgelegt unter C programmiert zu werden. Von den Herstellern gibt es dazu reichlich Biliotheken als C-Source b.z.w. in ROM. C wurde zur Entwicklung von Betriebssystem erschaffen UNIX,LINUX,WINDOWS,OS9 etc. Zeig mir ein Betriebssystem das in BASIC programmiert ist. Rico schrieb: > Ich hab einfach nicht immer Zeit und Lust, mich durch 500 Seiten > Datenblätter zu arbeiten. Das muß eine gute Programmierumgebung für mich > machen. Sonst ist sie für mich nicht zu gebrauchen. Niemand liest 500 Seiten Datenblatt durch. Man schaut sich kurz das Kapitel an und dann die Registerbelegung. Ein paar Bits gesetzt und schon laueft die Funktion. Danach weiss ich auch wie die Hardware an dieser Stelle funktioniert. Ist wie mit Auto fahren: Kannst du einen fahren, kannst du alle fahren. Die Peripherie ist doch bei den meisten uC sehr aenlich. Paul Baumann schrieb: > Nein, es ist nur komplizierter, sich statt Klartext (z.B. Shift left, or > and) Sachen wie <<, ||, && einzuprägen. Schreib mal Programme mit 20000+ Zeilen Code. Da bist du fuer jedes Zeichen das du nicht eintippen must dankbar. Alles andere ist nur redutantes Geschwaffel.
Datum:
PeterL schrieb: > Was mir bei solchen Diskussionen immer wieder auffällt ist, dass es eher > die C Programmierer sind, die "draufhauen" und Bascom schlechtreden. Die draufhauenden C-Leute haben schon so viel Mühe für "ihre" Programmiersprache aufgewendet und stehen wohl immer noch vor neuen Überraschungen, daß sie sich nicht vorstellen können, daß es auch einfacher geht. Die, die C und BASCOM (und mehr) kennen, erkennen durchaus auch die Vorteile von BASCOM, wie hier im thread zu sehen ist. Von denen hab ich eigentlich noch nie so unqualifizierte Bemerkungen wie "Nimm eine vernünftige Programmiersprache" gesehen. C ist wohl in bestimmten Bereichen der Industriestandard. Warum nicht mit BASCOM anfangen wenn man die Wahl hat? Jeder Vergleich hinkt aber warum nicht mit dem 1 X 1 beginnen, vor der Infinitesimalrechnung. Die HW wird einem schon genug Kopfzerbrachen machen und man wird staunen, wie weit man mit dem 1 X 1 kommt. In vielen Forumsbeiträgen scheint durch das viele überhaupt erstmal Englisch lernen sollten um Programmiersprachen richtig lernen zu können und der nicht ganz unwichtige Nebeneffekt wäre dann auch noch Datenblätter verstehen zu können. PeterL schrieb: > Umgekehrt verneigen sich die meisten demütig, vor der geballten > Intelligenz. Der Klügere gibt nach und denkt sich seinen Teil
Datum:
Rico schrieb: > Bibliotheken: Meine jahrelang entstandenen Bibliotheken kann ich alle > schrotten, weil der Einsatz von XMegas erforderlich ist...Danke C. Das liegt nicht an C, sondern daß Du etwas grundsätzlich falsch gemacht hast. Wechselt man den CPU-Typ, muß man nur die wenigen Hardwarezugriffe anpassen. Das soll aber kein Vorwurf sein, es braucht schon etwas Programmiererfahrung, um modulare Bibliotheken zu erstellen. Hilfreich war für mich, daß ich 8051 und AVR in C programmiere. Da kriegt man quasi einen Blick dafür, wie man die Hardwareunterschiede kapselt. Rico schrieb: > Mit Bascom habe ich das nicht einmal gemerkt, außer dass nach 1 Stunde > bereits die I2C-EEprom Funktionen liefen. Doch so lange? Ich hatte auch mal meine I2C-Lib vom 8051 auf den AVR angepaßt, dürfte etwa 10min gedauert haben (SW-I2C). Der Hauptaufwand war die Anpassung der Portzugriffe, der 8051 hat schon Open-Drain, der AVR muß das mit dem Directionbit simulieren. Letzendlich definiert man nur ein paar Macros um (sda_low, sda_high, sda_in). Peter
Datum:
Joachim Drechsel schrob:
>Wenn Du die extrem einfache und übersichtliche C-Syntax nicht kapierst >bleibe
bei BASIC.
Extrem einfach?! Guten Tag, Herr Preil!
;-)
MfG Paul
Datum:
Paul Baumann schrieb: > Nein, es ist nur komplizierter, sich statt Klartext (z.B. Shift left, or > and) Sachen wie <<, ||, && einzuprägen. Logisch zu Ende gedacht kommen wir bei COBOL an: ADD 5 TO A GIVING B liest sich ja auch gleich viel einfacher als b = a + 5 (Ernster Hintergrund: Jede domänenspezifische Notation ist ein trade-off: Einmaliger Lernaufwand gegen kontinuierliche Aufwandsersparnis in der Anwendung, wenn man es einmal verstanden und verinnerlicht hat. Für die klassischen Grundrechenarten haben die meisten von uns das in der Grundschule getan. Andere Sachen lohnen sich erst, wenn man sie oft genug einsetzt.)
Datum:
Helmut Lenzen schrieb: > Zeig mir ein Betriebssystem das in BASIC programmiert ist. Nein, lieber nicht... ;-)
Datum:
jau schrieb: > PeterL schrieb: >> Was mir bei solchen Diskussionen immer wieder auffällt ist, dass es eher >> die C Programmierer sind, die "draufhauen" und Bascom schlechtreden. > > Die draufhauenden C-Leute haben schon so viel Mühe für "ihre" > Programmiersprache aufgewendet und stehen wohl immer noch vor neuen > Überraschungen, daß sie sich nicht vorstellen können, daß es auch > einfacher geht. Ihr dreht das Ganze ja wohl zu 180 Grad um. Was ich hier schon gesehen habe sind immer wieder Threads wo sich Basic Freaks gegenseitig hochziehen, daß die 'Profis' die C nutzen Basic nur schlechtmachen wollen weil Basic ja eigentlich besser ist. Im Endeffekt kommt dann das wohlbekannte heraus was Yalu treffend zusammengefasst hat. Die eigentlichen Profis nehmen sowiso die Sprache die für das Problem gerade passt weil sie nämlich beide Sprachen können und Assembler dazu. Und wehe wenn man jemandem der Basic anfangen möchte zu C rät, dann wird man sowas mit Unrat überschüttet. Also gibt es dann wieder einige, die sich einen Spass daraus machen die Basic Jünger mit entsprechenden Postings anzufixen, die reagieren dann ja auch so schön vorhersehbar. Leute Leute, versucht doch einfach mal euren Horizont zu erweitern. Ich hatte oben schon mal gefragt: Mit welcher Programmiersprache ist denn BASCOM geschrieben? Wenn man das auf beliebiges Basic ausweiten will kann man jetzt fragen: Welches Betriebssystem wurde mit Basic geschrieben? Welche Datenbank wurde mit Basic geschrieben?? Und umgedreht: In was wurde MS Office entwickelt? In was wurde Open Office entwickelt? In was wurde Oracle, DB/2, MS SQl Server, Notepad++, Firefox, Java Compiler, Eclipse, das MS Dev Studio, C#, etc etc etc geschrieben?
Datum:
Udo Schmitt schrieb: > In was wurde Open Office entwickelt? > In was wurde Oracle, DB/2, MS SQl Server, Notepad++, Firefox, Java > Compiler, Eclipse, das MS Dev Studio, C#, etc etc etc geschrieben? Interessiert doch im Kontext des Threads überhaupt nicht. Wer seine Tageseinnahmen zusammenzählen will, tut sich dafür auch nicht unbedingt 'nen HP-35 an. Das ist genau die Mentalität, die man bei C-lern deutlich bemerken kann - die können nur in ihrem eigenen kleinen Kästchen denken.
Datum:
Paul Baumann schrieb: > Wenn BASIC nicht Basic sondern vielleicht "HORST" hieße, hätten nicht so > viele Leute regelrecht Angst davor zuzugeben, daß sie es benutzen. Hab ich nicht. Ich schreibe Programme für WinXP in PureBasic. Vom einfachen Terminalprogramm bis zu komplexen Bedienoberflächen. Mit Callbacks. Mit Structures. Mit mehrdimensionalen Arrays. In Farbe und Bunt. Ich hab angefangen mit Amiga-Basic. Ich konnte mal Pascal, aber das ist wohl tot. Ich hatte auch mal GWBasic, grauenvoll. Ich hab mir auch C angesehen und mich mit einer Mischung aus Mitleid und Entsetzen abgewandt. AVRs werden trotzdem in ASM programmiert.
Beitrag #2662570 wurde von einem Moderator gelöscht.
Datum:
Timm Thaler schrieb: > Ich hab mir auch C > angesehen und mich mit einer Mischung aus Mitleid und Entsetzen > abgewandt. Das lässt tief blicken, was ist an C denn so schrecklich? Vorallem auf den ersten Blick? Oberflächlich betrachtet ist doch lediglich der Syntax etwas anders und weniger geschwätzig im Vergleich zu Basic. Das große AHA Erlebniss kommt doch bei C erst mit komplexeren Aufgaben. > AVRs werden trotzdem in ASM programmiert. Was halt auch keinen Sinn macht. Komplexe Programme werden dadurch unüberisichtlich, fehleranfällig und null portabel. gruß cyblord
Datum:
Udo Schmitt schrieb: > Also gibt es dann wieder einige, die sich einen Spass daraus machen die > Basic Jünger mit entsprechenden Postings anzufixen, die reagieren dann > ja auch so schön vorhersehbar http://www.o-bizz.de/qbtuts/omastut/index.htm mfg.
Datum:
Hab schon einiges in C gemacht, nicht sehr viel zugegeben, meist in Basic, weil es meine Anforderungen erfüllt hat, die IDE aus meiner Sicht recht gut ist und ich mit Basic auf dem 64er damals begonnen habe. Bascom hat einen wie ich finde gravierenden Vorteil. Die Zeit bis zum ersten Erfolg ist extrem kurz ... ein "Hallo Welt" oder LED-blink ist in Sekunden zusammengecoded was Bascom für Einsteiger durchaus sehr attraktiv macht. Bis man die C-Umgebung, Make-Files etc. zusammen hat blinkt die LED unter Bascom schon. Gerade für Einsteiger ist dies ein wichtiger Faktor, ob man dran bleibt oder das Gerümpel in die Ecke wirft entschiedet sich u.U. innerhalb von Minuten. Wenn die Erfahrung wächst kann der Neuling ja dann in die Registerzugriffe und ASM einsteigen, geht alles auch unter Bascom. Mit der Zeit und wachsender Erfahrung wird die Syntax eigentlich nebensächlich, ob dann C PHP Java-Script oder Bascom für die jeweilige Problemlösung verwendet wird spielt immer weniger eine Rolle.
Datum:
Helmut Lenzen schrieb: > Weil jemand anderes fuer dich die Arbeit getan hat. Wenn du eine fertige > Lib fuer den Prozessor hast ist das auch in C in 5 Minuten erledigt. Das ist das alte Problem von C/C++, auch zum Beispiel gegenueber Java. Es gibt oft nicht "eine Bibliothek", die man einbinden koennte - sondern meist entweder keine, oder ein Dutzend von denen sich keine mit den anderen vertraegt, die man schon hat. Das liegt aber nicht an der Sprache - eher an einer Mischung aus der historischen Entwicklung und der Klientel, die diese Sprache benutzt.
Datum:
Fhutdhb Ufzjjuz schrieb: > Die Zeit bis zum ersten Erfolg ist extrem kurz ... ein "Hallo Welt" oder > LED-blink ist in Sekunden zusammengecoded was Bascom für Einsteiger > durchaus sehr attraktiv macht. Das geht in C genauso gut. > Bis man die C-Umgebung, Make-Files etc. zusammen hat blinkt die LED > unter Bascom schon. Die Installation einer Entwicklungsumgebung gilt aber fuer beide Sprachen. AVR-Studio ist genauso einfach zu installieren und Make-Files habe ich da auch noch nie direkt angefasst. Fhutdhb Ufzjjuz schrieb: > ob dann C PHP Java-Script oder Bascom für die jeweilige > Problemlösung verwendet wird spielt immer weniger eine Rolle. Doch die Protabilitaet spielt eine grosse Rolle. Und jetzt nicht wieder damit kommen das dass immer wieder angefuehrt wird und doch nicht funktioniert. Ich setze hier zur Zeit AVR,MSP430,ARM/CORTEX ein und da werden schon Funktionen untereinander ausgetauscht. Man muss halt die Funktionen so strikt trennen das man Hardware nahe , Hardware unabhaengige und Applikationsspezifische Teile erhaelt. Dann klappts auch mit der Protierbarkeit von Funktionen. Peter hat ja oben ein Beispiel mit seiner I2C Routine gemacht.
Datum:
Fhutdhb Ufzjjuz schrieb: > Wenn die Erfahrung wächst kann der Neuling ja dann in die > Registerzugriffe und ASM einsteigen, geht alles auch unter Bascom. Mit > der Zeit und wachsender Erfahrung wird die Syntax eigentlich > nebensächlich, ob dann C PHP Java-Script oder Bascom für die jeweilige > Problemlösung verwendet wird spielt immer weniger eine Rolle. Völlig richtig. Genau hier sehe ich den großen Unterschied zwischen den Usern hier. Die angesprochenen Vorteile von Bascom greifen nur wenn man absoluter Neuling ist. Als erfahrener Entwickler, Informatiker oder sonst was, kann man mit diesen Argumenten nicht viel anfangen. "Leichter Einstieg" oder "gute IDE" ziehen dort nicht als Argumente. Und wenn man sowieso schon 15 Programmiersprachen beherrscht, hat man für Sprüche, wie kompliziert und böse C doch ist, nur noch ein müdes lächeln übrig. Darum gehen hier die Meinungen auch so derart auseinander.
Datum:
PPS: Mein erstes Projekt mit µC war ein Traktometer ... ATMega32 auf Punktraster, Quarz etc. und LCD dran, an die Kardanwelle nen Reedkontakt, ins Gehäuse gepappt und die Kiste lief, Programmierung ca. 1h Timer, Impulse zählen LCD-Ausgabe, das machte Lust auf mehr.
Datum:
Fhutdhb Ufzjjuz schrieb: > PPS: Mein erstes Projekt mit µC war ein Traktometer ... ATMega32 auf > Punktraster, Quarz etc. und LCD dran, an die Kardanwelle nen > Reedkontakt, ins Gehäuse gepappt und die Kiste lief, Programmierung ca. > 1h Timer, Impulse zählen LCD-Ausgabe, das machte Lust auf mehr. Nunja aber den Hauptteil der Arbeit haben andere für dich erledigt. Was ja auch ok ist, aber von "hab ich selber gemacht" kann da halt nicht die Rede sein. gruß cyblord
Datum:
Es ist ja nicht so, das ich C nicht lernen will. Ich habe auch einige Bücher, aber mein Hirn weigert sich standhaft die Syntax aufzunehmen. Zwei Kinder, Frau will auch betreut werde, Haus und Garten, bisschen Sport...da bleibt für C nix übrig :-)
Beitrag #2662668 wurde von einem Moderator gelöscht.
Datum:
PeterL schrieb: > Ich habe auch einige Bücher, aber mein Hirn weigert sich standhaft die > Syntax aufzunehmen. Und dabei ist der Syntax einer Sprache eigentlich das kleinste Problem ;-)
Datum:
Paul Baumann schrieb: > Wenn BASIC nicht Basic sondern vielleicht "HORST" hieße, hätten nicht so > viele Leute regelrecht Angst davor zuzugeben, daß sie es benutzen. Ich würde BASIC auch dann nicht benutzen, wenn es HORST hieße. Dazu müsste es mindestens PAUL heißen ;-)
Datum:
cyblord ---- schrieb: > Fhutdhb Ufzjjuz schrieb: >> PPS: Mein erstes Projekt mit µC war ein Traktometer ... ATMega32 auf >> Punktraster, Quarz etc. und LCD dran, an die Kardanwelle nen >> Reedkontakt, ins Gehäuse gepappt und die Kiste lief, Programmierung ca. >> 1h Timer, Impulse zählen LCD-Ausgabe, das machte Lust auf mehr. > > Nunja aber den Hauptteil der Arbeit haben andere für dich erledigt. Was > ja auch ok ist, aber von "hab ich selber gemacht" kann da halt nicht die > Rede sein. > > gruß cyblord Spannugsregler, Elkos und µC fertigt ein C-Progger oder ASM-Progger auch nicht selber ... wo ziehst Du die Grenze?
Datum:
Die Grenzen ist beim Verständniss. Ein print "Hallo" und dann wird das auf dem LCD ausgegeben benötigt NULL Verständniss für die Materie. Ich würde keine lib verwenden, ohne das Gerät selbst mal direkt angesteuert zu haben. Wenn man es auch ohne lib kann, dann kann man eine lib nehmen ;-) Das Spannungsregler-Beispiel ist natürlich suboptimal. Aber die Schaltung eines 7805 kann man auch sehr einfach nachvollziehen und diskret aufbauen. Eventuell stehe ich mit meiner Meinung ziemlich alleine da, dass der eigentliche Reiz immer im Verständniss für die Materie liegt, mit der man sich beschäftigt. gruß cylord
Datum:
Überraschter schrieb: > @ Yalu X. (yalu) (Moderator) schrieb über das goto-Beispiel > >> Autsch! Das ist ja ein geradezu perfektes Paradebeispiel dafür, wie man >> Gotos nicht benutzen sollte. > > Herrlicher Beitrag! Applaus! > > ;) Ah kenne jetzt Bascom nicht so aber selbst bei GW/qBasic waren Gotos schon meist unsinnig dafür gibt es Call.
Datum:
cyblord ---- schrieb: > Eventuell stehe ich mit meiner Meinung ziemlich alleine da, dass der > eigentliche Reiz immer im Verständniss für die Materie liegt, mit der > man sich beschäftigt. Meinst du nicht, da bleibt noch genug "Materie", auch wenn man Programme in BASCOM schreibt?
Datum:
was? schrieb: > cyblord ---- schrieb: >> Eventuell stehe ich mit meiner Meinung ziemlich alleine da, dass der >> eigentliche Reiz immer im Verständniss für die Materie liegt, mit der >> man sich beschäftigt. > > Meinst du nicht, da bleibt noch genug "Materie", auch wenn man Programme > in BASCOM schreibt? Zumindest nicht auf der SW-Ebene.
Datum:
cyblord ---- schrieb: > Die Grenzen ist beim Verständniss. Ein print "Hallo" und dann wird das > auf dem LCD ausgegeben benötigt NULL Verständniss für die Materie. Ich > würde keine lib verwenden, ohne das Gerät selbst mal direkt angesteuert > zu haben. Das würde aber im Umkehrschluss bedeuten, daß du kein PC benutzen kannst bevor du nicht für alle Peripherie einen Systemtreiber geschrieben hast. Ausserdem dürftest du keine Funktionen der C Library nutzen. Ich stimme allerdings mit dir überein, daß programmieren mehr ist als sich ein paar Code Fragmente aus dem Internet zusammenzukopieren und sich diese dann in einem Forum zum funktionieren bringen zu lassen. Das wurde hier je schon oft genug versucht/gemacht. Da ich nicht weiss wie Fhutdhb Ufzjjuzs Projekt ausgesehen hat ist dies jetzt KEINE Anspielung auf sein Traktometer, sondern allgemein gemeint.
Datum:
cyblord ---- schrieb: > Eventuell stehe ich mit meiner Meinung ziemlich alleine da, dass der > eigentliche Reiz immer im Verständniss für die Materie liegt, mit der > man sich beschäftigt. Eigentlich nicht, ich sehe das genauso. Bei den meisten Bascom Threads hier im Forum geht es doch um Probleme die der TO deshalb nicht verstanden hat weil er sich mit der Materie nicht auseinander gesetzt hat sondern nur die fertige Loesung genommen hat. Tritt dabei ein kleines Problemchen auf stehen die meistens auf dem Schlauch.
Datum:
cyblord ---- schrieb: >> Meinst du nicht, da bleibt noch genug "Materie", auch wenn man Programme >> in BASCOM schreibt? > > Zumindest nicht auf der SW-Ebene. Damit stellst du jede Bibliothek und jedes Framework in Frage. Warum denn dann nicht gleich in Assembler?
Datum:
Udo Schmitt schrieb: > Das würde aber im Umkehrschluss bedeuten, daß du kein PC benutzen kannst Nunja, diese Entgegnung habe ich kommen sehen ;-) Es gibt immer ein Abstraktionslevel hinter das wir nicht sehen können. Beim PC ist dies im täglichen Umgang sehr hoch angesiedelt. > bevor du nicht für alle Peripherie einen Systemtreiber geschrieben hast. Nein, aber wenn man keine Ahnung hat, was ein Treiber ist, und wie er grundsätzlich funktioniert und wie er mit dem System interagiert, dann wird eine ernsthafte Entwicklung für den PC auch schnell ihre Grenzen finden. Darum geht es. > Ausserdem dürftest du keine Funktionen der C Library nutzen. Habe früher viele Standard-Funktionen nachgebaut, teils auch aus Unkenntniss darüber dass es dafür fertige Funktionen gab. Sowohl beim PC als auch beim µC mit AVR-GCC. > Damit stellst du jede Bibliothek und jedes Framework in Frage. Warum > denn dann nicht gleich in Assembler? Denkst du, Frameworks und Bibs gibt es, weil der Entwickler es ohne nicht könnte? Die Gründe sind doch ganz andere. Aber bei BASCOM und Arduino wird Unfähigkeit durch libs kaschiert. Und das ist das Problem. @Helmut: Ja bei BASCOM und auch bei Arduino Benutzern ist dieses Problem weit verbreitet. Fertige Libs für alles, der Rest per copy&paste und dann fliegt einem alles um die Ohren wenn eine Komma falsch gesetzt ist. gruß cyblord
Datum:
Helmut Lenzen schrieb: > Bei den meisten Bascom Threads hier im Forum geht es doch um Probleme > die der TO deshalb nicht verstanden hat weil er sich mit der Materie > nicht auseinander gesetzt hat sondern nur die fertige Loesung genommen > hat. Das ist aber nicht Bascom-spezifisch, das sieht man C genauso oft, vielleich sogar noch öfter. Es gibt in diesem Forum mehr als genug Threads, in denen der Fragende nicht nur die Hardware nicht versteht, sondern auch die verwendete Programmiersprache. Da meine AVRs weder C noch Basic können, programmiere ich sie in Assembler. Das ist dann wenigstens wirklich selbst gemacht. Oder vielleicht doch nicht? Denn irgendwer hat ja den Befehssatz definiert, die Innereien kreiert und den Assembler geschrieben... Scheiß Spiel, man bekommt wirklich nix mehr selbst gebacken... ...
Datum:
Mir ist es völlig wurscht, welche Programmiersprache "die Beste" ist. Das Problem an Bascom ist nicht die Programmiersprache, sondern die Einstellung einiger Benutzer, dass sie von der Programmiersprache erwarten, dass diese ihr Problem (das der "Programmierer") alleine erkennt und löst. Und wenn sie das nicht tut, dann sind alle anderem im Forum doof, weil die "Programmierer" ihre Frage nicht mal so formulieren können, dass andere Menschen sie verstehen. Noch schlimmer ist es, wenn man denjenigen die Lösung nicht gleich auf einem silbernen Tablett serviert. Basic ist toll als Einstieg. Damit habe ich auch auf einem Apple ][ angefangen und dann lange Zeit benutzt. Damals war mir Assembler zu kompliziert. In der Schule kam dann noch Pascal dazu. Irgendwann dachte ich, ich müsste C++ lernen - da muss man sich um zu viel selber kümmern. Deswegen bin ich bei der PC-Programmierung wieder bei VisualBasic gelandet und dann den Weg zum C#.NET, weil man damit schnell zu einem Ergebnis kommt, ohne sich groß um irgendwelche Konstruktoren und Destruktoren kümmern zu müssen. Das ist was für Leute, die richtig programmieren, nicht das, was ein (Nichtinformatik-) Ingenieur oder Hobby-Anwender braucht (meine subjektive Meinung).
Datum:
cyblord ---- schrieb: > Eventuell stehe ich mit meiner Meinung ziemlich alleine da, dass der > eigentliche Reiz immer im Verständniss für die Materie liegt, mit der > man sich beschäftigt. Stehst du nicht. Helmut Lenzen schrieb: > Bei den meisten Bascom Threads Fairerweise muß man aber sagen, daß das bei mindestens genauso vielen "C-Threads" auch so ist. Udo Schmitt schrieb: > Das würde aber im Umkehrschluss bedeuten, daß du kein PC benutzen kannst > bevor du nicht für alle Peripherie einen Systemtreiber geschrieben hast. Ach komm. Dann müsste man auch die Makromoleküle, aus denen sich der Kunststoff der Tastatur zusammensetzt, kennen und mindestens einmal selbst zusammengemischt haben. Genauso hat man den Baum, aus dem der Stuhl gemacht wurde, auf dem man sitzt, natürlich selbst gefällt. mfg.
Datum:
cyblord ---- schrieb: > Die Grenzen ist beim Verständniss. Ein print "Hallo" und dann wird das > auf dem LCD ausgegeben benötigt NULL Verständniss für die Materie. Ich > würde keine lib verwenden, ohne das Gerät selbst mal direkt angesteuert > zu haben. Wenn man es auch ohne lib kann, dann kann man eine lib nehmen > ;-) > Eventuell stehe ich mit meiner Meinung ziemlich alleine da, dass der > eigentliche Reiz immer im Verständniss für die Materie liegt, mit der > man sich beschäftigt. > > gruß cylord Nein, stehst Du nicht, ich gebe dir absolut Recht, heute verwende ich kaum mehr Bascom Highlevelbefehle, beim Traktometer damals schon und es führte zu einem scchnellen Ergebnis was für mich dann Motivation war am Ball zu bleiben. Beispiel GLCD ... da hat Bascom ne schöne Lib dafür ... dumm wirds aber wenn man vom Routing her die Ansteuerung nicht so machen kann wie das in Bascom eben vorgegeben wird. Da muss man dann seinen eigenen "Treiber" schreiben, genauso wie in C ... idealerweise baut man sich auch nen header File mit den Deklarationen und die Subroutinen in eine separate Datei, damit man die in anderen Projekten wiederverwenden kann ... wird dann einfach per include eingefügt und gut ist. Man muss die Highlevelbefehle nicht gezwungenermaßen verwenden, genausowenig wie in C die Libs ... liest man ja auch oft genug hier im Forum "Problem mit Lib von x für Aufgabe y"
Datum:
In welcher Sprache ist eigentlich Bascom selbst geschrieben ? :-)
Datum:
...wollen wir noch etwas Schleichwerbung fuer Bascom einbauen ?
Datum:
pegel schrieb: > In welcher Sprache ist eigentlich Bascom selbst geschrieben ? :-) Bascom kann nur mit Bascom geschrieben worden sein. Das ist wie mit Chuck Norris. Er kann sich nur selbst gezeugt haben.
Datum:
FAZIT dieses Threads: Bascom ist ein geeignetes Toy für Hobbyfummler, die ohne große Kenntnisse oder Lernaufwand mal schnell was zusammenstöpseln wollen, ohne sich für Details zu interessieren, und die nicht in der Lage sind, sei es aus mentalen oder zeitlichen Gründen, sich mit professionellen Tools auseinanderzusetzen. Also keine neuen Erkenntnisse, und alles im Lot. Bizarr wird's nur, wenn genau DIESE Leute dann jammern, daß ihnen jemand aus Osteuropa/Indien/China den Job wegnimmt. Mir kann nämlich keiner erzählen, er verhielte sich im Hobby grundlegend anders als im Job.
Datum:
Tröte schrieb: > FAZIT dieses Threads: > > Bascom ist ein geeignetes Toy für Hobbyfummler, die ohne große > Kenntnisse oder Lernaufwand mal schnell was zusammenstöpseln wollen, > ohne sich für Details zu interessieren, und die nicht in der Lage sind, > sei es aus mentalen oder zeitlichen Gründen, sich mit professionellen > Tools auseinanderzusetzen. > > Also keine neuen Erkenntnisse, und alles im Lot. > > Bizarr wird's nur, wenn genau DIESE Leute dann jammern, daß ihnen jemand > aus Osteuropa/Indien/China den Job wegnimmt. Mir kann nämlich keiner > erzählen, er verhielte sich im Hobby grundlegend anders als im Job. So polemisch die Zusammenfassung ist, so möchte ich antworten: C ist für manche das, was dem HiFi Freak seine esotherisch behandelten Kabel sind.
Datum:
jau schrieb: > C ist für manche das, was dem HiFi Freak seine esotherisch behandelten > Kabel sind. Falsch, C ist eher das Kupfer in der Leitung. Was man damit macht: 0,30 Euro pro Meter normale Leitung oder 1000 Euro pro Meter für linksdrehende elektronenfreie Ultra Hip Kabel ist dann Sache desjenigen der das Kupfer benutzt. Und Basic ist dann halt ne Aluleitung, vieleicht mehr Innenwiderstand aber leitet auch und ist in bestimmten Bereichen einsetzbar. Und wer die 1000 Euro Leitung kauft ist der Trottel der zu wenig Wissen hat, egal ob von C von Basic oder von Stromleitung. Wissen ist nur durch mehr Wissen zu ersetzen.
Datum:
> Bibliotheken: Meine jahrelang entstandenen Bibliotheken kann ich > alle schrotten, weil der Einsatz von XMegas erforderlich ist...Danke C. Schwaches Argument. Der BASCOM Hersteller hat dir die Umsetzung auf XMega abgenommen. Irgendwer muss sie schliesslich machen, das passiert auch bei BASCOM nicht von alleine. Und wenn du deine Bibliotheken so aufgebaut hast, dass du davon wirklich nichts mehr wiederverwenden kannst, noch nicht einmal die API, dann hast du deine Bibliotheken schlecht aufgebaut. In beiden Fällen kann da aber die Sprache C bzw. die Sprache BASCOM nix dafür.
Datum:
Udo Schmitt schrieb: > Und wer die 1000 Euro Leitung kauft, ist der Trottel, der zu wenig Wissen > hat - egal, ob von C, von Basic oder von Stromleitungen. lol und sowas von wahr!
Datum:
Angehängte Dateien:Tröte schrieb: > FAZIT dieses Threads: > > Bascom ist ein geeignetes Toy für Hobbyfummler, die ohne große > Kenntnisse oder Lernaufwand mal schnell was zusammenstöpseln wollen, > ohne sich für Details zu interessieren, und die nicht in der Lage sind, > sei es aus mentalen oder zeitlichen Gründen, sich mit professionellen > Tools auseinanderzusetzen. > > Also keine neuen Erkenntnisse, und alles im Lot. > > Bizarr wird's nur, wenn genau DIESE Leute dann jammern, daß ihnen jemand > aus Osteuropa/Indien/China den Job wegnimmt. Mir kann nämlich keiner > erzählen, er verhielte sich im Hobby grundlegend anders als im Job. Du hattest woh Polemikclown zu Mittag oder was ... nein, das Fazit ist: "Jedem Narren seine Kappe" Was die verlagerung meines Jobs nach China angeht ... eher nicht. 18ha Weinberge lassen sich nicht so einfach verschieben. Und was die Güte der Produkte mit Bascomprogrammierung angeht ... Mich hat Bascom zum shake hands mit der Kanzlerin gebracht inklusive Gratulation (Bildanhang, die neben mir ist die Kanzlerin) zum innovativen Produkt ... und Dich?
Datum:
pegel schrieb: > In welcher Sprache ist eigentlich Bascom selbst geschrieben ? :-) in Bascom ?? Auf jeden Fall ist Arduino noch viel besser als Bascom, wenn man als Messlatte die Argumente hier für Bascom nimmt.
Datum:
Fhutdhb Ufzjjuz schrieb: > Mich hat Bascom zum shake hands mit der Kanzlerin gebracht inklusive > Gratulation Sorry aber da liegt mir auf der Zunge: "Da sieht man wieder daß Politiker keine Ahnung von Technik haben" Oder "Tja, die is halt Physiker, die haben keine Ahnung von Softwareentwicklung" Nein im Ernst, Gratulation (zum Preis, nicht zum Shakehands mit dem weiblichen Klon vom Pfälzer Saumagen)
Datum:
Fhutdhb Ufzjjuz schrieb: > shake hands mit der Kanzlerin Sagtest Du mir, die Firmware der Kanzlerin sei in Bascom geschrieben, glaubte ich Dir sofort ... funktioniert irgendwie und auch schon recht lange, aber state-of-the-art ist doch deutlich anders ;-)
Datum:
Es ist einfach Blödsinn Hobby und Beruf durcheinander zu schmeißen, es gibt da einfach zu verschiedene Anforderungen! Wenn es einem im Hobby Spaß macht uC in BASIC zu programmieren, warum nicht! Wenn es fertige Bibliotheken gibt, könnte ich mir zur schnellen Testprogrammerstellung BASIC eventuell auch im Beruf vorstellen. Ich habe keine Angst BASIC einzusetzen. Schaut mal hier: http://www.adwin.de/ Das Teil wird in einem BASIC Dialekt programmiert, der so erweitert wurde, daß er für die Echtzeitprogrammierung taugt. Aber für die uC Programmierung ist BASIC absolut nicht die erste Wahl. In Form von BASCOM steht es nur für die AVR's zur Verfügung. Im professionellen Umfeld muß die Portierbarkeit gegeben sein. Da oft die Forderung nach Second source Bauteilen besteht, um eben mit abgekündigten uC's klarzukommen. Oder in unterschiedlichen Produkten kommen unterschiedliche uC's zum Einsatz. Da hilft dann die Portierbarkeit Zeit und damit Kosten zu sparen, indem ich C Routinen auf unterschiedlichen uC's wiederverwende. Bei richtiger Softwarearchitektur brauchen nur die hardwarenahen Teile angepasst werden. Der Rest kann 1:1 übernommen werden. Denn der entscheidende Unterschied zwischen BASIC und C ist, daß es eine Unmenge an BASIC Dialekten gibt, aber C dagegen ist eine genormte Programmiersprache! Deshalb existiert für die meisten (wenn nicht alle) uC's ein C-Compiler. Außerdem gibt es für C solche Tools wie PC-Lint, Doxygen oder irgendwelche Unit Testframeworks. Inwieweit würde das für z.B. BASCOM zur Verfügung stehen? Der Einsatz dieser oder ähnlicher Tools ist aber im Hobbybereich auch völlig uninteressant. Wohingegen man im professionellen Umfeld so gut wie nicht mehr um solche Tools herumkommt. Also laßt die Kirche im Dorf, und benutzt das jeweilige Werkzeug, für die jeweils passende Aufgabe! Und akzeptiert auch mal, daß es Menschen gibt, die Eure Meinung nicht teilen! Warum muß eine Diskussion hier immer persönlich werden! Das nützt niemanden!
Datum:
Tröte schrieb: > Sagtest Du mir, die Firmware der Kanzlerin sei in Bascom geschrieben, > glaubte ich Dir sofort ... funktioniert irgendwie und auch schon recht > lange, aber state-of-the-art ist doch deutlich anders ;-) Die Software der Kanzlerin sieht so aus: while(1) { }
Datum:
Helmut Lenzen schrieb: > > Die Software der Kanzlerin sieht so aus: > > while(1) > { > } Ahhh das schmerzt in den Augen. So geht das nicht! Zeichenverschwendung (ja auch Whitespaces sind vollwertige Zeichen und sollten respektiert werden). So ists besser: while(1);
Datum:
Geht noch kuerzer: for(;;);
Datum:
Helmut Lenzen schrieb: > Geht noch kuerzer: > > for(;;); Finde ich aber ideologisch bedenklich. Denn for impliziert eine Schleife mit einer maximalen Anzahl von Durchläufen. Also genau das Gegenteil einer Endlosschleife. Meist ist es ein Programmierfehler wenn eine for-Schleife zur Endlosschleife wird. Allerdings würde mich interessieren ob das Konstrukt in Bascom möglich ist. In alten Basics mussten for-Schleifen irgendwann enden. So gesehen hält sich Basic daher eigentlich strikter an die theoretische Grundlage von for, nämlich der Klasse der LOOP Äquivalenten Sprachen. In Basic wäre daher ein Programm mit for-Schleifen nicht Turing-Vollständig, was auch korrekt wäre nach der Theorie. gruß cyblord
Datum:
cyblord ---- schrieb: > Meist ist es ein Programmierfehler wenn eine > for-Schleife zur Endlosschleife wird. Meist ist es ein Programmierfehler wenn eine while-Schleife zur Endlosschleife wird. Es macht keinen Unterschied.
Datum:
>> for(;;); > Finde ich aber ideologisch bedenklich. Nö. Das ist das Standardidiom für eine Endlosschleife in C und C++. Einige Compiler haben bei hohen Warninglevels auch die Eigenschaft, dass bei while (1) { /*...*/ } irgendeine Warnung im Stil von "condition is always true" rausgehauen wird. Mit for(;;) kriegt man die dann weg - es ist keine Condition mehr da, der Compiler ist zufrieden.
Datum:
Dr. Dr. med Foo schrieb: > cyblord ---- schrieb: >> Meist ist es ein Programmierfehler wenn eine >> for-Schleife zur Endlosschleife wird. > > Meist ist es ein Programmierfehler wenn eine while-Schleife zur > Endlosschleife wird. Es macht keinen Unterschied. Hmm, bei µC Programmierung sieht man aber regelmäßig Endlosschleifen. Schlagt doch dem Standards Committee eine Spracherweiterung vor: for ever { }
Datum:
cyblord ---- schrieb: > In alten Basics mussten for-Schleifen irgendwann enden. Ich weiß nicht, wie alt das BASIC ist, von dem Du sprichst, aber im Microsoft-basierten C-64-BASIC hat z.B.
for i = 1 to 2: i=i-1: next i |
eine prima Endlosschleife produziert.
Datum:
Die Negation ist dann "for never () {}" ?
Datum:
Udo Schmitt schrieb: > Schlagt doch dem Standards Committee eine Spracherweiterung vor: > for ever { } > Die Negation ist dann "for never () {}" ? Dafür! /sign
Datum:
while(1); 9 Zeichen Do Loop 7 Zeichen(incl CR)also was ist effizienter :-)
Datum:
Joachim Drechsel schrieb: > Die Negation ist dann "for never () {}" ? :-) Dafür gibts dann die Fehlermeldung: "unreachable code". Zumindest wenn innerhalb der geschweiften Klammer was steht. Ist wie bei der Digitaltechnik, wenn es da nach Strom riecht weisst du vorher auch nicht ob jetzt ein "immer" oder ein "nimmer" gatter entstanden ist.
Datum:
cyblord ---- schrieb: > Allerdings würde mich interessieren ob das Konstrukt in Bascom möglich > ist. In alten Basics mussten for-Schleifen irgendwann enden. Bascom hat (wie VB) die Anweisung Exit. Damit kann man aus Schleifen, Subs und Funktionen herausspringen, ohne den Stack zu beschädigen. Warum hackst Du eigentlich immer auf etwas (Bascom) herum, was Du gar nicht kennst?? ...
Datum:
Yalu schrob: >Ich würde BASIC auch dann nicht benutzen, wenn es HORST hieße. Dazu >müsste es mindestens PAUL heißen ;-) Ja, das wäre was! ;-) Aber ich glaube nicht, daß ich es schaffe, eine eigene Programmiersprache "herzustellen". Es ist mir leider auch nicht gelungen, herauszufinden, womit Bascom selbst erstellt wurde. Das ist eine interessante Frage. Hier ist ein Link auf die Herstellerseite von Bascom, auf der einige von Nutzern erstellte Programme zu finden sind. Man sieht, daß es da nicht nur um das Blinkenlassen einer LED geht... http://www.mcselec.com/index.php?option=com_conten... @Weinbauer ich gratuliere Dir zu dem errungenen Preis, wobei es wahrscheinlich anstrengender ist, in einem Weinberg ein Array von Weinstöcken anzulegen und dessen Inhalt im Herbst einzeln einzulesen als ein Glas Wein mit der Kanzlerin zu heben... MfG Paul
Datum:
Hannes Lux schrieb: > cyblord ---- schrieb: >> Allerdings würde mich interessieren ob das Konstrukt in Bascom möglich >> ist. In alten Basics mussten for-Schleifen irgendwann enden. > > Bascom hat (wie VB) die Anweisung Exit. Damit kann man aus Schleifen, > Subs und Funktionen herausspringen, ohne den Stack zu beschädigen. Klaro, gibts fast überall. Hat aber mit meinem Zitat nichts zu tun. > Warum hackst Du eigentlich immer auf etwas (Bascom) herum, was Du gar > nicht kennst?? Das war keine Kritik an BASCOM. Allerdings habe ich hinreichend viel Erfahrung mit allen möglichen BASICs. Aber es stimmt schon, selbst bei Apple Basic auf dem \\c konnte man ein STEP definieren und so endlosschleifen erzeugen: for i=1 to 5 step -1 gruß cyblord
Datum:
Paul Baumann schrieb: > ich gratuliere Dir zu dem errungenen Preis, wobei es wahrscheinlich > anstrengender ist, in einem Weinberg ein Array von Weinstöcken anzulegen Besonders mit mehr als 2 Dimensionen :=) Paul Baumann schrieb: > Es ist mir leider auch nicht gelungen, herauszufinden, womit Bascom > selbst erstellt wurde. Das ist eine interessante Frage. Koennte man eventuell am Disassemblierten EXE File erkennen.
Datum:
Helmut Lenzen schrieb: > Paul Baumann schrieb: >> Es ist mir leider auch nicht gelungen, herauszufinden, womit Bascom >> selbst erstellt wurde. Das ist eine interessante Frage. > > Koennte man eventuell am Disassemblierten EXE File erkennen. Ich würde da einfach mal auf MS Visual Studio, genauer Visual C++ tippen.
Datum:
Udo Schmitt schrieb: > Fhutdhb Ufzjjuz schrieb: >> Mich hat Bascom zum shake hands mit der Kanzlerin gebracht inklusive >> Gratulation > > Sorry aber da liegt mir auf der Zunge: > "Da sieht man wieder daß Politiker keine Ahnung von Technik haben" > Oder > "Tja, die is halt Physiker, die haben keine Ahnung von > Softwareentwicklung" > > Nein im Ernst, Gratulation (zum Preis, nicht zum Shakehands mit dem > weiblichen Klon vom Pfälzer Saumagen) Nee, die Entscheidung traf ein Gremium von Leuten aus der Branche, die Dame war lediglich zur Verleihung präsent. War aber dennoch eine interessante Erfahrung, zum Einen der Ablauf, viele Herren im schwarzen Anzug, die förmlich BKA auf der Stirn tätowiert hatten, zum Anderen, das der Preis für Verfahrens- und Prozesstechnik an mich als Onemanshow ging und so manche Größe in der Branche leer ausging. Merci :o) Wär aber auch egal gewesen ob das Ding nun in Bascom, C, Java oder Fortran programmiert gewesen wäre ... hat kein Aas danach gefragt, die Funktion musste gegeben sein, was beim Wettbewerb von der Hardware her nicht der Fall war.
Datum:
cyblord ---- schrieb: > Ich würde da einfach mal auf MS Visual Studio, genauer Visual C++ > tippen. Vermute ich auch mal.
Datum:
Fhutdhb Ufzjjuz schrieb: > Wär aber auch egal gewesen ob das Ding nun in Bascom, C, Java oder > Fortran programmiert gewesen wäre ... hat kein Aas danach gefragt, die > Funktion musste gegeben sein, was beim Wettbewerb von der Hardware her > nicht der Fall war. Jepp, im Endeffekt zählt halt was hinten rauskommt :-) Schönes Wochenende
Datum:
ich mag BASCOM. Manchmal brauche ich etwas Zeit um einen Umweg für unerklärliche Effekte zu bauen. Also ich finde einen Weg, kann aber nicht erklären warum es nicht so wie beschrieben funktioniert. C ist dann für mich eher wie diese Krähe die durch mein Tintenfass lief... und dann kreuz und quer über meinen Schreibblock.
Datum:
Kopfschüttel.
Was habt ihr immer mit den C-Sonderzeichen. Soviele sinds doch gar nicht
bzw. sind doch ohnehin immer dieselben 10 (größenordnungsmässig).
Programmiert doch mal in APL. Da könnt ihr euch über Sonderzeichen
beschweren. Wenn da mal ein normales ASCII Zeichen auftaucht, ist das
schon die Ausnahme, für die man eigentlich sofort ein Grillfest
anzetteln sollte um das Ereignis zu feiern.
Eine Programmiersprache ist ein WERKZEUG mit dem man seine Arbeit macht.
Mehr nicht. Beim Programmieren gehts doch nicht darum, ob ich jetzt
if then
endif
oder
if( ) {
}
schreibe. Das sind doch nur 2 verschiedene Schreibweisen. Der
interessante Teil beim Programmieren sind die Verfahren, die
Algorithmen. Dort steckt das Gehirnschmalz drinnen und nicht ob ich
jetzt DO LOOP oder while(1) schreiben muss.
Datum:
Helmut Lenzen schrieb: > Die Software der Kanzlerin sieht so aus: > while(1) > { > } Und beim Koalitionspartner: while(0); In einigen Landesparlamenten hat der Compiler das auch schon wegoptimiert. Also das ist jetzt nicht politisch gemeint. Deshalb nochmal eine ernsthafte Frage: Kann Bascom auch in verschiedenen Levels optimieren? mfg.
Datum:
Paul Baumann schrieb: > Aber ich glaube nicht, daß ich es schaffe, eine eigene > Programmiersprache > "herzustellen". Eine Sprache in der das Programm als Gedicht geschrieben werden muss, DAS wär doch mal was. Zum eigentlichen Thema sag ich lieber nix, Pulverfass...
Datum:
cyblord ---- schrieb: >> AVRs werden trotzdem in ASM programmiert. > Was halt auch keinen Sinn macht. Komplexe Programme werden dadurch > unüberisichtlich, fehleranfällig und null portabel. Programme werden dadurch schnell und ressourcenschonend. Übersichtlichkeit erreicht man durch Strukturierung, Fehleranfälligkeit minimiert man durch saubere Programmierung, Portierbarkeit zumindest auf weiterentwickelte AVRs erreicht man durch Einsatz von Konstanten statt direkter Adressierung. Also genau so wie bei "höheren" Programmiersprachen. Dafür weiss ich in ASM genau, was der AVR im Programm macht. Ich hab mir einfach mal eine Aufgabe in einer "höheren" Sprache geschrieben und das Ergebnis mit der Lösung in ASM verglichen. Wenn dann für einfache verkettete Rechenoperationen ständig Werte "gestort" und "geloadet" werden und die Ausführung in einer doch etwas zeitkritischen PID-Regelung dafür fünfmal solange dauert, weiss ich was ich an ASM habe.
Datum:
Timm Thaler schrieb: > weiss ich was ich an ASM habe. Du bist hier im falschen Thread. Hier läuft: "Ewig-gestrige C-Freaks" vs "Weitsichtige Bascom-Programmierer" Assembler-Friemler werden woanders fertig gemacht. mfg.
Datum:
Ich habe früher auch viel BASIC programmiert. Erst aufm Sinclair ZX81, dann aufm Casio Taschenrechner, dann QBasic, Quickbasic und schließlich FreeBasic. Ich schäme mich so! Ich glaub ich brauch nächste Woche wieder ne Sitzung beim Therapeuten. Beruflich progge ich nicht mehr, haben wir alles in die Gegend den Punjab aussgegliedert. Ist billiger, sagt unser Prozessoptimierer.
Datum:
Marek N. schrieb: > Ich schäme mich so! Ich glaub ich > brauch nächste Woche wieder ne Sitzung beim Therapeuten. Musst du nicht. Hier sind die Bascomiker die Guten und die C-Programmierer die Deppen. mfg.
Datum:
Paul Baumann (Gast) schrieb: > Wenn BASIC nicht Basic sondern vielleicht "HORST" hieße, hätten nicht so > viele Leute regelrecht Angst davor zuzugeben, daß sie es benutzen. Dann gäbe es auch das wunderbare Namenskonstrukt Turbohorst 1.0 Ein mögliches Derivat hieße dann Blitzhorst Einen Horst-Compiler gäbs vermutlich ebenfalls und für Windows gäbe es ein Visual Horst ;-)
Datum:
:-))) Uns was ist mit FreeHorst und QuickHorst. Mein Favorit in Sachen Programmiersprachen ist übrigens Ook!
Datum:
Schon 182 Posts hier wird Zeit dass jemand Gott oder Hitler ins Spiel bringt ;) Echte Kerle programmieren übrigens in BF http://de.wikipedia.org/wiki/Brainf*ck (Link bitte selbst editieren)
Datum:
snowfly schrieb: > Echte Kerle programmieren übrigens in BF > http://de.wikipedia.org/wiki/Brainf*ck > (Link bitte selbst editieren) lol, damit habe ich wirklich heute(gestern) mittag noch programmiert :D Bin da über einen anderen Zusammenhang drauf gekommen. Im Gegensatz zur weit verbreiteten Annahme ist es übrigens nicht Zweck der Sprache, möglichst kompliziert zu sein. Das ist Malbolge oder so ähnlich.
Datum:
snowfly (Gast) schrieb: > Schon 182 Posts hier > wird Zeit dass jemand Gott oder Hitler ins Spiel bringt ;) Ooeech habe doch annngeorrrrdnet, dass noecht mehr compilirrrrrrrrt, sondoerrn nurrrr noch überrrrrrrsoetzt wirrrd, in meinoem Rrrrrreich. :-)
Beitrag #2663686 wurde von einem Moderator gelöscht.
Datum:
Nicht Waffen töten Menschen, sondern Menschen töten Menschen. So ist's auch mit der Programmiersprache. Nicht BASIC ist Schuld, wenn das Projekt nach schneller Anfangsentwicklung stagniert, sondern der Entwickler, der durch diese schnellen Anfangserfolge den Auftraggeber zu einem Basic-Projekt überredet und den Aufwand eines echten Projektes unterschätzt hat. Zum richtigen Einschätzen des Aufwands eines echten Projekts gehört eine gewisse Portion Erfahrung, und wer die hat, kennt genügend Programmiersprachen, Betriebssysteme und Umgebungen, dass seine Wahl nur in wenigen speziellen Fällen aus eher seltenen Gründen auf BASIC fallen wird. Nur deswegen wird mit BASIC so viel Schindluder getrieben, weil es halt so oft die erste Sprache ist, und Anfänger entsprechend oft ihr Lehrgeld in der Währung BASIC bezahlen.
Datum:
Immer wieder zu beobachten ist das viele meinen nur weil sie eine bestimmte Sprache können wären sie gleich Profis. Programmieren hat doch zu aller erst mit den Algorithmen zu tun, die Sprache ist erst mal zweitrangig. Und wenn es keine Lib, Highlevelbefehl etc pp gibt, dann sollte man eben noch wissen wie man sich das Bastelt. Natürlich muß man Anforderungen wie Portierbarkeit in die Auswahl bei bedarf mit reinnehmen, aber ich denke man sollte immer Idiologiefrei beim Projektstart vorgehen. Wahnsinn, der ganze Beitrag ohne Nennung einer Sprache. :-) Übrigens ist es auch im richtigen Leben von Vorteil wenn man mehr als eine Sprache kann.
Datum:
Paul Baumann schrieb: >>Ich würde BASIC auch dann nicht benutzen, wenn es HORST hieße. Dazu >>müsste es mindestens PAUL heißen ;-) > > Ja, das wäre was! ;-) > Aber ich glaube nicht, daß ich es schaffe, eine eigene > Programmiersprache > "herzustellen". Blaise PASCAL hat keine eigene Programmiersprache entwickelt. ADA Lovelace hat keine eigene Programmiersprache entwickelt. Monty PYTHON haben keine eigene Programmiersprache entwickelt. HASKELL Curry hat keine eigene Programmiersprache entwickelt. Gustave EIFFEL hat keine eigene Programmiersprache entwickelt. PAUL Baumann wird auch keine eigene Programmiersprache entwickeln, ... aber vielleicht findet sich jemand in seiner ständig wachsenden Fangemeinde, der PAUL für ihn auf den Weg bringt. Bitte füllen Sie dieses Feld aus. schrieb: > Eine Sprache in der das Programm als Gedicht geschrieben werden muss, > DAS wär doch mal was. An so etwas hätte ich auch als erstes gedacht. Ein Ansatz, in welche Richtung PAUL (Akronym für "Programming Artistically Using Lyricism") gehen könnte, ist Shakespeare: http://shakespearelang.sourceforge.net/report/shakespeare/ Das ist doch eine schöne Programmiersprache, die besonders die Hasser kryptischer C-Operatoren zum Schwärmen bringen dürfte. Man schaue sich nur die Beispielprogramme auf der Webseite an. Kann da Basic auch nur im Ansatz mithalten? Paul ist aber nicht Shakespeare und sein Stil ist auch ein anderer. Deswegen muss PAUL von Grund auf neu entwickelt werden, was — um dem großen Namen halbwegs gerecht zu werden — sicher einige Jahrzehnte in Anspruch nehmen wird. Mal sehen, ob ich mal etwas Zeit übrig habe ... Paul Baumann schrieb: > Es ist mir leider auch nicht gelungen, herauszufinden, womit Bascom > selbst erstellt wurde. Das ist eine interessante Frage. Sowohl der Compiler als auch die IDE scheinen in Delphi geschrieben zu sein. Guter Brauch ist es ja eigentlich, einen Compiler in seiner eigenen Sprache zu schreiben, also einen C-Compiler in C, einen Lisp-Compiler in Lisp usw., so dass er sich selbst übersetzen kann. Das hat neben technischen und organisatorischen Vorteilen auch einen interessanten philosophischen Aspekt: Er ist die Existenzberechtigung seiner selbst. Aber ok, bei einem Cross-Compiler liegen die Dinge etwas anders. Wäre der Autor aber ein echter Basic-Freak, hätte er Bascom wenigstens in Visual Basic oder dergleichen geschrieben ;-)
Datum:
Yalu X. schrieb: > philosophischen Aspekt: Er ist die Existenzberechtigung seiner selbst. Das ist Käse. Nach dieser "Philosophie" hätte keine komplexere Maschine eine Existenzberechtigung, da sie ja auch nicht aus sich selbst hergestellt wurde, sondern eine Kombination von vielen kleineren Teilen ist. Auch sollte sich ein Schraubenschlüssel nicht einbilden, dass sein Typ oder Hersteller für die Existenzberechtigung der Maschine großen Belang hätte, nur weil er zum Bau benutzt wurde.
Beitrag #2663754 wurde vom Autor gelöscht.
Datum:
Proxxon schrob: >Dann gäbe es auch das wunderbare Namenskonstrukt >Turbohorst 1.0 Das geht nicht, denn diesen Namen hat schon meine Garagennachbar inne... @Yalu Der Link von Dir ist prima! Ich bin also nicht der Einzige mit solchen Gedankengängen... ;-) MfG Paul
Datum:
MWS schrieb: > Yalu X. schrieb: >> philosophischen Aspekt: Er ist die Existenzberechtigung seiner selbst. > > Das ist Käse. Und du hast es nicht verstanden. Das musst du auch nicht, da es ohnehin nicht todernst gemeint war. Trotzdem ein paar Worte zu deinen Einwänden: > Nach dieser "Philosophie" hätte keine komplexere Maschine eine > Existenzberechtigung, da sie ja auch nicht aus sich selbst hergestellt > wurde, sondern eine Kombination von vielen kleineren Teilen ist. Das ist verkehrt herum geschlossen: Die komplexe Maschine stellt die Existenzberechtigung für ihre Teile dar, nicht umgekehrt. Die Existenz- berechtigung der Maschine selbst ergibt sich bspw. aus ihren Anwendungs- möglichkeiten. > Auch sollte sich ein Schraubenschlüssel nicht einbilden, dass sein Typ > oder Hersteller für die Existenzberechtigung der Maschine großen > Belang hätte, nur weil er zum Bau benutzt wurde. Hier das Gleiche: Weil der Schraubenschlüssel einen sinnvollen Beitrag zum Bau der Maschinene geleistet hat, ist er existenzberechtigt, nicht unbedingt die Maschine. Man könnte jetzt natürlich postulieren, dass die Nutzung eines Objekts A zur Schaffung eines Objekts B nur dann eine Existenzberechtigung von A impliziert, wenn auch B existenzberechtigt ist. Beim Compiler, der sich selbst übersetzt, wäre dann A=B, was — wie man leicht zeigen kann — dazu führt, dass das Postulat immer erfüllt ist, unabhängig davon, ob der Compiler existenzberechtigt ist oder nicht. Man könnte dann also alleine aus der Tatsache, dass der Compiler sich selbst übersetzt, nicht seine Existenzberechtigung (aber auch nicht das Gegenteil) ableiten. Das genannte Postulat ist aber ohnehin etwas fraglich: Akzeptiert man es als richtig, hat entweder kein einziges Objekt dieser Welt eine Exis- tenzberechtigung (das wäre schlimm), oder es muss mindestens ein Objekt geben, das per Axiom als existenzberechtigt definiert wird. Was aber könnte dieses Objekt sein? Vielleicht Gott? Oder der Kosmos? Oder Paul Baumann? Da es auf diese Frage es wohl kaum eine allgemein akzeptierte Antwort geben wird (außer vielleicht Paul Baumann), ist es sinnvoller, das obige Postulat zu verwerfen und einfach zu akzeptieren, dass ein Compiler, der sich selbst übersetzt, eine inhärente Existenzberechtigung hat :)
Datum:
Weil's ja hier auch um die bessere Verständlichkeit von C-Operatoren und der Sprache an sich ging, hier mein Vorschlag:
#include <avr/io.h> #define und & #define alogischund && #define oda | #define alogischoda || #define obaned ! #define isned != #define is = #define wendmogst if #define dhauptsach main #define learad void typedef char akurzer; typedef int alanger; typedef long aganzlanger; // ... akurzer a; alanger b; alanger c; aganzlanger d = 0; alanger dhauptsach(learad){ a is obaned(PORTA); b is 96; c is b oda a; wendmogst (c isned 128){ d is 2E6; } } |
Datum:
a ganz langer! :) Dass sich manche Programmierer && als AND definieren und || als OR, hab ich tatsächlich schon gesehen. Naja, wer's braucht.
Datum:
Yalu X. schrieb: > Und du hast es nicht verstanden. Doch, ich schon verstanden, Du nicht verstanden haben. >> dass sein Typ oder Hersteller für die Existenzberechtigung > Hier das Gleiche: Weil der Schraubenschlüssel einen sinnvollen Beitrag Ich rede von Typ und Hersteller (also im übertragen Sinn die verwendete Programmiersprache) und Du redest vom Schraubenschlüssel an sich (in beliebiger Form), Du möchtest also ablenken oder hast die Aussage nicht verstanden. Deshalb lassen wir mal Deine weiteren Obfuscating-Versuche außer acht und machen dafür eine Textersetzung: > einen Compiler in seiner eigenen Sprache zu schreiben > Er ist die Existenzberechtigung seiner selbst. "Er" = "einen Compiler" = AVR GCC "seiner selbst" = "seiner eigenen Sprache" = C Also lautet Deine Aussage: "AVR GCC ist die Existenzberechtigung für C" Und das ist natürlich Unsinn, umgekehrt würde vielleicht ein Schuh draus. > Das musst du auch nicht, da es ohnehin nicht todernst gemeint war. Hab's auch nicht so betrachtet.
Datum:
Ich kapier nix mehr.. darüber meditieren ich muss
Datum:
@MWS Sag mal im Ernst: Hat sich das in Deinem Beitrag von 10:24 Uhr wirklich so übersetzen lassen? Wenn das so geht, dann wäre es ja eine einmalige Möglichkeit, die Syntax von C erst mal außen vor zu lassen und sich mit den Hürden der Sprache an sich zu befassen. MfG Paul
Datum:
> #define und & > #define alogischund && > #define oda | > #define alogischoda || > #define obaned ! > #define isned != > #define is = Vielleicht lerne ich doch noch C ... :-)
Datum:
Paul Baumann schrieb: > @MWS > > Sag mal im Ernst: Hat sich das in Deinem Beitrag von 10:24 Uhr wirklich > so übersetzen lassen? Wenn das so geht, dann wäre es ja eine einmalige > Möglichkeit, die Syntax von C erst mal außen vor zu lassen und sich mit > den Hürden der Sprache an sich zu befassen. > > MfG Paul Also wenns schon an diesem Syntax scheitert, und eine einfache Textersetzung die Rettung sein soll, würde ich mir den Rest auch gleich sparen. Das hilft dann alles nichts mehr.
Datum:
MWS schrieb: > Yalu X. schrieb: >> Und du hast es nicht verstanden. > > Doch, ich schon verstanden, Du nicht verstanden haben. dto. ;-) > Deshalb lassen wir mal Deine weiteren Obfuscating-Versuche außer acht > und machen dafür eine Textersetzung: > >> einen Compiler in seiner eigenen Sprache zu schreiben >> Er ist die Existenzberechtigung seiner selbst. > > "Er" = "einen Compiler" = AVR GCC Nehmen wir besser den GCC für PCs, denn der AVR-GCC ist ein Cross- Compiler und übersetzt sich deswegen nicht selber. > "seiner selbst" = "seiner eigenen Sprache" = C Nein, mit "seiner selbst" meine ich genau das, was ich geschrieben habe, nämlich ihn, den Compiler. > Also lautet Deine Aussage: > "AVR GCC ist die Existenzberechtigung für C" Nein, sie lautet, übetragen auf das Beispiel: > "Der GCC ist die Existenzberechtigung für den GCC" Der GCC hat natürlich viele Existenzberechtigungen, das leitet sich aus seiner großen Verbreitung ab. Aber selbst seine Verbreitung gegen null ginge: Mindestens ein einziges Mal muss er genutzt worden sein (nämlich um sich selbst zu compilieren), sonst würde er nicht existieren. Wenn man allem, was mindestens einmal für irgendetwas genutzt wird, eine Existenzberechtigung zuspricht, hat also der GCC eine. Und diese Exis- tenzberechtigung leitet sich alleine von seiner Eigenschaft als "sich selbst bauendes Programm" ab. Somit ist er seine eigene Existenzberech- tigung. Das wollte ich oben ausdrücken :)
Datum:
Paul Baumann schrieb: > Sag mal im Ernst: Hat sich das in Deinem Beitrag von 10:24 Uhr wirklich > so übersetzen lassen? Ja, selbstverständlich, das hat sich nicht nur übersetzen lassen, sondern auch das Richtige gemacht. Bevor ich so'n Schmarrn reinstell', teste ich das natürlich. :-)
Datum:
MWS schrieb: > Paul Baumann schrieb: >> Sag mal im Ernst: Hat sich das in Deinem Beitrag von 10:24 Uhr wirklich >> so übersetzen lassen? > > Ja, selbstverständlich, das hat sich nicht nur übersetzen lassen, > sondern auch das Richtige gemacht. Bevor ich so'n Schmarrn reinstell', > teste ich das natürlich. :-) Wenn du dem Paul jetzt noch eröffnest, dass man mit den Defines C auch an andere Sprachen als Bayerisch anpassen kann (Paul ist kein Bayer), wird aus ihm sicherlich ein neuer C-Fan ;-)
Datum:
@MWS Ich staune deshalb, weil ich annahm, daß man "Schlüsselworte" so hinzunehmen hat, wie sie in der Sprache "eingebaut" sind. Du hast ja den Schlüsselworten eigene Namen als Ersetzung gegeben. Es wunderte mich eben, daß der Kompiler da nicht hustet und spuckt. MfG Paul
Datum:
Yalu X. schrieb: > Nehmen wir besser den GCC für PCs, denn der AVR-GCC ist ein Cross- > Compiler und übersetzt sich deswegen nicht selber. Du hast sicher bemerkt dass es hier im Thread um Compiler wie AVR GCC geht und nicht um beliebige andere Compiler, mit diesem Mass solltest Du auch messen. Wenn Deine Aussage hier: > Guter Brauch ist es ja eigentlich, einen Compiler in seiner eigenen > Sprache zu schreiben, also einen C-Compiler in C, einen Lisp-Compiler in > Lisp usw., so dass er sich selbst übersetzen kann. Das hat neben > technischen und organisatorischen Vorteilen auch einen interessanten > philosophischen Aspekt: Er ist die Existenzberechtigung seiner selbst. nichts anderes ausdrücken soll als: > "Der GCC ist die Existenzberechtigung für den GCC" dann ist sie nichts als eine leere Worthülse. Jede Sache ist die Existenzberechtigung ihrer selbst, das kannst Du auf Dich und auf jedes Atom anwenden. Versteht man es dagegen wie's ich verstand, dann fehlt nach Deiner Aussage im Umkehrschluss Compilern die nicht in ihrer eigenen Sprache geschrieben wurden die Existenzberechtigung. Und das ist auch wieder Käse.
Datum:
Yalu X. schrieb: > Wenn du dem Paul jetzt noch eröffnest, dass man mit den Defines C > auch an andere Sprachen als Bayerisch anpassen kann (Paul ist kein > Bayer), wird aus ihm sicherlich ein neuer C-Fan ;-) >> #define und & >> #define alogischund && >> #define oda | >> #define alogischoda || >> #define obaned ! >> #define isned != >> #define is = Dat geit sogoor ob platt: > #define un & > #define logenun && > #define odder | > #define logenodder || > #define isnümmer ! > #define wardnich != > #define ward = Moin.
Datum:
Paul Baumann schrieb: > Du hast ja den Schlüsselworten eigene Namen als Ersetzung gegeben. Es > wunderte mich eben, daß der Kompiler da nicht hustet und spuckt. Die #define's werden erstmal nur als Wortersetzung eingebaut, danach erst macht der Compiler seinen Job. Das hat Vor- und Nachteile, 'nen Vorteil hast Du hier gesehen.
Datum:
War mit den noch verbliebenen Stilelementen unzufrieden ;D
#include <avr/io.h> #define und & #define alogischund && #define oda | #define alogischoda || #define obaned ! #define isned != #define is = #define wendmogst if( #define dannhoid ) #define ofang { #define desend } #define dhauptsach main #define learad void typedef char akurzer; typedef int alanger; typedef long aganzlanger; // ... akurzer a; alanger b; alanger c; aganzlanger d is 0; alanger dhauptsach(learad) ofang a is obaned(PORTA); b is 96; c is b oda a; wendmogst (c isned 96) dannhoid ofang d is 2E6; desend desend |
Datum:
Des gfreit mi gscheit, tat i doch soagn! (Wenn ich aus Bayern käme) Das ist doch ein richtig gut verständlicher Quelltext! :-))) Freut sich Paul
Datum:
MWS schrieb: > War mit den noch verbliebenen Stilelementen unzufrieden ;D Ich bin mir sicher, das das ein ganz heißer Anwärter für den Bayerischen Kulturpreis ist.
Datum:
Bascom ist wirklich gut! Die Basic Syntax ist auch nicht viel anders als die von C. Schämt ihr euch nicht für den "Print" Befehl ihr C Freaks? "If" ist auch nicht viel besser. Basic hat halt noch das "then". Naja, damit kann man leben. Keil C brauchte für den "print" Befehl immer schon 2 Mikrocontroller, weil es so efektiv ist ;-) Und viele komplizierte Verschachtelungen, die in C möglich sind, verhindert Basic Gott sei Dank. Diese kann eh niemand mehr deuten nach einem Jahr. Hole mir jetzt noch etwas Popcorn und genieße den Treat. Schönen Samstag
Datum:
Das mit der Syntax ist alles sehr subjektiv. Meine erste 'richtige' Programmiersprache (nach BASIC auf nem Taschenrechner) war javascript. Daher ist für mich die C-Syntax das selbstverständlichste der Welt.
Datum:
Geht das wirklich:
> #define isnümmer !
Mit Umlaut?
Datum:
Karl schrieb: > Ich bin mir sicher, das das ein ganz heißer Anwärter für den Bayerischen > Kulturpreis ist. Stell Dir mal vor, die Bayerische Staatsregierung würde Ihre Verwaltungssoftware mit einer solchen Programmiersprache erstellen. Nachdem sie bereits die göttlichen Befehle vom Engel Aloisius http://de.wikipedia.org/wiki/Ein_M%C3%BCnchner_im_Himmel erhalten haben, könnt' ja dann fast nichts mehr schief gehen. Einzig vor Piraten müssten sie sich in acht nehmen.
Datum:
Vergleichen wir doch mal nicht Gemüse(C) mit Obst(Basic), sonder Obst mit Obst. Im Sinne des TO vergleiche ich die neue Konkurrenz(luna) mit dem Alten(bascom): Was mich ewig gestört hat sind fehlende Strukturen, das Gefrickel mit overlay ist an Unübersichtlichkeit nicht zu übertreffen. Ausdrücke aufzudröseln und dafür sinnlose Zwischenvariablen anlegen zu müssen ist weit ab von jeglicher Effizienz und Übersichtlichkeit. Kapselung von Codeabschnitten in einem getrennten Namensraum sind auch nicht möglich, ein einziges Gematsche wenn man Module in der Sprache selbst erstellen will. Eigene Datentypen definieren nicht möglich, Bitmanipulationen in Ausdrücken sind ein Krampf oder nicht machbar, der Editor der IDE ist grauselig. Codeblöcke ein/ausklappen? automatische Einrückung? Verbindungspfade zwischen den Konditionen? Übersicht über die Speicherverteilung durch einen grafischen Report? Fehlanzeige.. usw. usf. Man kann sagen: Konkurrenz belebt das Geschäfft. Das neue Basicartige Dingens ist da wesentlich moderner und macht das alles was ich mir gewünscht habe. Vielleicht tut sich dann auch mal was an dem altbackenen Bascom. Zu wünschen wäre es den Anwendern. Harald
Datum:
Timm Thaler schrieb: > Geht das wirklich: >> #define isnümmer ! > Mit Umlaut? Ja. Aber nur in einigen Teilen Schleswig Holsteins. Woanders muß man das mit ue schreiben. mfg.
Datum:
Wem das "GOTO" in Basic nicht gefällt, der kann ja INTERCAL nehmen, dort hat man dann das Gegenstück "COME FROM": http://en.wikipedia.org/wiki/INTERCAL Wemm die vielen Sonderzeichen in C ein Graus sind, für den wird WHITESPACE bestimmt das richtige sein: http://en.wikipedia.org/wiki/Whitespace_(programmi...) Wem beides nicht gefällt, weil er lieber mit Katzen spielt, für den gibt es LOLCODE: http://en.wikipedia.org/wiki/Lolcode Und ansonsten: Immer locker bleiben. Soll doch jeder benutzen was er mag, dafür gibt es ja die Vielfalt an (Hoch-)Sprachen. BASIC hat sicher viele dazu gebracht sich intensiver mit Computertechnmik zu beschäftigen, war es doch in fast jedem Heimcomputer damals fest eingebaut (selbst der IBM PC hatte ein eingebautes BASIC). Borland hat dann PASCAL recht weit verbreitet, war seinerzeit auch eine recht beliebte Sprache. C ist halt die "Wald und Wiesen Sprache", mit der man fast überall etwas anfangen kann. Grüße, Chris
Datum:
Christian Klippel schrieb
> .. von INTERCAL
Naja. Die ganzen sog. "Esoterischen Programmiersprachen" sind doch eher
ein Selbstzweck, als dass sie der Lösung von (Programmier-) Problemen
dienen.
Im genannten Beispiel schaffen es die Macher tatsächlich ein Hello World
so ausschauen zu lassen:
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP
Dagegen ist doch C ein geradezu wunderbar kurzer, aussagekräftiger
Dialekt mit eigener (Klammer-) Ästhetik
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
Dort wo ein (ansich einst schönes) Turbo Pascal in all seiner (doch
zuweilen nervenden) Geschwätzigkeit mit ständigen begin/end Sequenzen
aufwartet
program HalloWelt;
begin
WriteLn('Hallo Welt!');
end.
Wie schön kann da doch so ein simples Klammernpaar sein. ;)
Beitrag #2664750 wurde von einem Moderator gelöscht.
Datum:
Gelegenheitsprogrammierer schrieb: > Christian Klippel schrieb >> .. von INTERCAL > > Naja. Die ganzen sog. "Esoterischen Programmiersprachen" sind doch eher > ein Selbstzweck, als dass sie der Lösung von (Programmier-) Problemen > dienen. > > Im genannten Beispiel schaffen es die Macher tatsächlich ein Hello World > so ausschauen zu lassen: > [...] Das passiert halt wenn man 1) die WP Artikel nicht gelesen hat und 2) einfach zu verkrampft ist um den gemachten Punkt zu begreifen ;) Manch einer würde es "Beißreflex" nennen ... Grüße, Chris
Datum:
Christian Klippel schrieb: > Das passiert halt wenn man 1) die WP Artikel nicht gelesen hat Wozu auch! Steht doch nix drin was mir irgendwie C abspenstig machen könnte. Nix als überflüssiges Gedöns. > und 2) > einfach zu verkrampft ist um den gemachten Punkt zu begreifen ;) > Manch einer würde es "Beißreflex" nennen ... Ach Gottchen, da reagiert aber einer angepinkelt. Einfach mal ruhiger werden hilft!
Datum:
Gelegenheitsprogrammierer schrieb: Was ist daran jetzt ästhetisch? > #include <stdio.h> > > int main() > { > printf("Hello, world!\n"); > return 0; > } DAS ist ästhetisch:
If OpenConsole()
PrintN("Hallo Welt")
Input()
EndIf |
In Quickbasic dürfte das noch einfacher gehen, ist lange her:
PrintN("Hallo Welt")
Input() |
Datum:
Hi, Gelegenheitsprogrammierer schrieb: > Christian Klippel schrieb: >> Das passiert halt wenn man 1) die WP Artikel nicht gelesen hat > Wozu auch! Steht doch nix drin was mir irgendwie C abspenstig machen > könnte. Nix als überflüssiges Gedöns. Da muss ich dem Christian aber zustimmen. Zumal ich denke das er darauf hinaus wollte: Wikipedia schrieb im Artikel zu Intercal: > INTERCAL is an esoteric programming language that was created as a *PARODY* >... > It SATIRIZISES satirizes aspects of the various programming languages > at the time,[1] as well as the proliferation of proposed language > constructs and notations in the 1960s. Und auch: Wikipedia schrieb im Artikel zu esoteric programming language: > An esoteric programming language is a programming language designed as a > [...], or as a joke. > There is usually no intention of the language being adopted for > mainstream programming Sich darüber aufzuregen das eine ausdrücklich als Parody gedachte Sprache zu umständlich ist und auf den Hinweis die Anmerkungen zur Sprache die man kritisiert zu lesen (um damit festzustellen das es nur ein Scherz ist) mit der Argumentation zu entgegnen das C eh besser ist, das ist schon ein wenig... NAJA! Aber BTT: Grundsätzlich ist ja schon alles gesagt, nur nicht von jedem. Letzten Endes ist es doch egal wie jemand zum Ziel kommt, hauptsache er kommt zum Ziel. Allerdings ist es auch eine Unumstößliche Tatsache das man wann immer man plant sich mit µC Programmierung beruflich beschäftigen zu müssen um C nicht drumherum kommt. Die Strukturunterschiede zwischen einem BASIC Dialekt und C finde ich absolut nebensächlich. Man kann mit beidem Arbeiten. Gewisse Dinge in den Sprachen haben ihre Vorteile, aber auch ihre Nachteile. Und es liegt am jeweiligen Programmierkonzept was jetzt wirklich für diese Anwendung und diesen Programmierer effizienter ist. Daher ist es genau genommen müßig über solche Dinge zu diskutieren. Zumal es den allermeisten die BASCOM so toll finden wohl überhaupt nicht um die Struktuir geht sondern die wohl wann immer sie es loben die Umfangreichen Libs meinen. Mit C würden die genauso zufrieden sein wenn die dort diese LIB unterstützung hätten. Diese LIB Unterstüzung ist natürlich gerade für Anfänger ein gewichtiges Argument, allerdings sollte man wann immer jemand Fragt mit welcher Programmiersprache er nun einsteigen soll und er überhaupt keine Vorkenntnisse hat bedenken das BASCOM zwar im ersten Schritt einfacher ist, aber dies auf lange Sicht eine Sackgasse ist. Zumindest wenn er beruflich in die Richtung will und/oder er mehr als nur AVR Programmieren möchte. Dann muss er C trotzdem auch noch zusätzlich lernen. Lernt also doppelt. Dann kann man für Einsteiger mit gutem Recht also gleich C empfehlen. ISt am Anfang etwas steiniger, sobald man sich aber einmal damit beschäftigt wird es schnell klarer. Zudem bringt C den Vorteil das man erst einmal in Ruhe auf dem PC lernen kann und dann erst auf den µC wechselt. Daher ist meine Meinung: Wer mit Bascom gut zurecht kommt und für wen es ausreicht soll ruhig dabei bleiben. Es gibt dann ,zumindest zum aktuellen Zeitpunkt, keinen Grund umsteigen zu müssen. Aber wenn jemand neu in die Materie einsteigt ist die Wahl von Bascom einfach nur kurzsichtig das der EInstieg zwar etwas leichter ist, aber man im Endeffekt doppelten Lernaufwand hat. AchJa: Marwin schrieb: > Helmut Lenzen schrieb: >> Weil jemand anderes fuer dich die Arbeit getan hat. Wenn du eine fertige >> Lib fuer den Prozessor hast ist das auch in C in 5 Minuten erledigt. > > Das ist das alte Problem von C/C++, auch zum Beispiel gegenueber Java. > Es gibt oft nicht "eine Bibliothek", die man einbinden koennte - sondern > meist entweder keine, oder ein Dutzend von denen sich keine mit den > anderen vertraegt, die man schon hat. Das liegt aber nicht an der > Sprache - eher an einer Mischung aus der historischen Entwicklung und > der Klientel, die diese Sprache benutzt. Karl Heinz Buchegger schrieb: > Hier werden doch Äpfel mit Birnen verglichen. > Was ist denn das Tolle an BASCOM? Doch nicht die Sprache an sich. > [...] > Nein, das Tolle an BASCOM ist, dass es die Hardware der AVR (und nicht > nur die) in weitgehend abstrahierter Form als Sprachkonstrukt zur > Verfügung stellt. [...] Das alles hat den Vorteil, dass sich Neulinge > erst mal um viele Dinge nicht kümmern müssen. > Aber: Das ist kein Vor- oder Nachteil für C. Wenn es gelingen würde, > eine Standard-'Lib' zusammenzustellen, in der ebenfalls für die > häufigsten Anwendungsfälle fertige Codemodule zur Verfügung stehen, dann > ist man mit C genauso schnell wie mit BASCOM, was das Hochziehen einer > App angeht. > > Das wir diese Codemodule nicht haben hat keine technischen Gründe > sondern ist ein Politikum. 30 oder 40 Programmierer kriegst du nun mal > nicht unter einen Hut ohne dass es zu Kompetenzgerangel kommt, weil > jeder seine Lösung als die bessere ansieht, die allen anderen überlegen > ist. (Und wie man an BASCOM sieht, ist es gar nicht sooo wichtig, immer > die allerbeste Lösung zu haben. EINE Lösung die zuverlässig ist, würde > schon reichen) > > Da hat es BASCOM ein wenig leichter. Die gibt es 1 Firma und die macht > die Vorgabe. GEnau das ist der Grund warum ich so gerne mit Microchip PIC arbeite. Da gibt es nämlich für viele Dinge genau das was viele an Bascom so toll finden auch für C. Klar als LIB nicht ganz so einfach, man muss es einbinden usw. Aber dann hat man auch hier einfache Befehle die man ganz normal aufrufen kann ohne sich um weitere Dinge zu kümmern. Und das alles schon im Paket das mit dem Compilerdownload kommt oder als nachladbares Framework zum Download. Routinen für das ansprechen der Prozessoperipherie, aber auch für HD44700 LCD, externe CAN Bausteine oder externe EEPROM Bausteine, gehören genauso zum Sprachumfang wie Rotinen für SOFT SPI, SOFTI2C usw. für Bausteine die keine passende Peripherie haben oder wo man mehr funktionen Braucht. Alles im Anhang der Compileranleitung und der Hilfe beschrieben. http://ww1.microchip.com/downloads/en/DeviceDoc/MP... http://ww1.microchip.com/downloads/en/DeviceDoc/MP... Oder für komplexere Dinge dann das jeweilige Framework: USB, TCPIP, MemoryDiskDrive, SmartCard, Touch, MiWi und sogar eine für Android Zusatgeräte. http://www.microchip.com/stellent/idcplg?IdcServic... Alles Zentral von einer Stelle, das heisst Koordiniert und man braucht nicht suchen. Es passt zueinander und zu allen gängigen µC der Firma. Bei Problemen hat man einen Ansprechpartner. Alles ist gut dokumentiert und wird geflegt. Weitere Quellen aus der Feder von Autoren die nichts mit dem Hersteller zu tun haben gibt es natürlich oft auch, deren Verwendung ist aber rein Optional. Gruß Carsten
Datum:
Hallo Carsten, Carsten Sch. schrieb: > Hi, > > Gelegenheitsprogrammierer schrieb: >> Christian Klippel schrieb: >>> Das passiert halt wenn man 1) die WP Artikel nicht gelesen hat >> Wozu auch! Steht doch nix drin was mir irgendwie C abspenstig machen >> könnte. Nix als überflüssiges Gedöns. > > Da muss ich dem Christian aber zustimmen. Zumal ich denke das er darauf > hinaus wollte: > > Wikipedia schrieb im Artikel zu Intercal: >> INTERCAL is an esoteric programming language that was created as a *PARODY* >>... >> It SATIRIZISES satirizes aspects of the various programming languages >> at the time,[1] as well as the proliferation of proposed language >> constructs and notations in the 1960s. > > Und auch: > Wikipedia schrieb im Artikel zu esoteric programming language: >> An esoteric programming language is a programming language designed as a >> [...], or as a joke. >> There is usually no intention of the language being adopted for >> mainstream programming > > Sich darüber aufzuregen das eine ausdrücklich als Parody gedachte > Sprache > zu umständlich ist und auf den Hinweis die Anmerkungen zur Sprache die > man kritisiert zu lesen (um damit festzustellen das es nur ein Scherz > ist) mit der Argumentation zu entgegnen das C eh besser ist, das ist > schon ein wenig... NAJA! ganz genau, 100% Volltreffer ;) Die ganze Diskussion ob C oder Bascom ist doch genauso überflüssig wie die leidige Diskussion ob PIC oder AVR. Beides ist jeweils nicht das Ende der Fahnenstange. Wer glaubt man könne oder solle nur zwischen den beiden Optionen wählen der ignoriert die ganze Vielfalt die es gibt. Es hat eben alles seine Vor- und Nachteile. Wenn man sich das selber eingesteht stellen sich diese Fragen eigentlich auch gar nicht mehr. Verbissen nur auf einer Schiene zu reiten, das bringt niemanden voran. Letzten Endes zählt die Funktion des fertigen Projekts/Produkts. Wenn ich Aufträge machen, dann muss ich mich halt zum Großteil danach richten was der Kunde verlangt. Ich kann zwar Vorschläge machen, aber wenn der nicht will, dann will er nicht. Für mich privat kann ich immer selber entscheiden was ich benutzen möchte. Bei mir ist das halt immer C und meistens PIC. Mir ist halt die Portierbarkeit wichtig. Nicht nur bzgl. des µC, sondern auch die der Entwicklungsumgebung. Einen C-Compiler bekommt man so gut wie für jeden Chip auf so gut wie jedem Rechner ans laufen, das ist halt der große Vorteil wenn man auf sowas Wert legt. Es gibt halt immer mehr als zwei Auswahlmöglichkeiten.... Grüße, Chris
Datum:
Ein großer Nachteil sowohl von Bascom als auch C für Anfänger ist, dass die Abstraktionsebene schon so hoch ist. Man kommt zwar schnell zum Ziel, mit Bascom vlt am schnellsten, aber gerade Anfängern ist überhaupt nicht klar, was da im Controller abläuft. Und dann kommen so Sachen wie speicher- und zeitfressende Float-Operationen heraus, wo es ein paar Feststellen-Bytes auch getan hätten. Oder ewig lange Stringausgaben. Dann muss plötzlich der nächstgrößere Controller her, weil der Speicher nicht reicht, obwohl nur paar Temperaturen gemessen und auf ein Display ausgegeben werden...
Datum:
Ich formuliere meine Zustimmung zu Timm Thaler mal so: Ich habe mal vor langer Zeit einen Beitrag über eine Chinesische Fahrschule gesehen. Das war staatlich organisiert, in Uniform im Laufschritt zu den Fahrzeugen und so. Auf mich Europäer machte das einen grotesk-lustigen Eindruck, aber was interessant war, war daß die Jungs jede Schraube an dem Fahrzeug kennen mussten, bevor sie das erste mal fahren durften. Unabhängig davon, ob die Medien hier mal wieder etwas übertrieben oder verzerrt haben: Je mehr eine Programmiersprache (oder eine Lib) die Hardware abstrahiert, desto weiter kommt man davon weg, die Schrauben seines µC zu kennen und umso leichter sitzt man in der Sch..., wenn mal etwas nicht klappt. Womit ein µC-Anfänger konfrontiert wird, entspricht einem selbstfahrendem Auto (immerhin mit Option auf manuelle Steuerung). Man gibt das Ziel ein, und es fährt. Wenn es das Ziel nicht kennt, und man nicht selber fahren oder mit Karten umgehen kann, hat man halt Pech gehabt.
Datum:
Timm Thaler schrieb: > Ein großer Nachteil sowohl von Bascom als auch C für Anfänger ist, dass > die Abstraktionsebene schon so hoch ist. Man kommt zwar schnell zum > Ziel, mit Bascom vlt am schnellsten, aber gerade Anfängern ist überhaupt > nicht klar, was da im Controller abläuft. Naja, das kann man so oder so sehen. Natürlich wird durch die verfügbaren Bibliotheken alles einfacher gemacht für den Anwender, oder sollte es zumindest. Aber will man einem Anfänger wirklich zumuten "ganz unten" einzusteigen? Gerade am Anfang ist man doch froh wenn es schnelle Erfolgserlebnisse gibt. Das fördert das Interresse an der Materie und motiviert einen weiter zu machen. Natürlich sollte man sich dann nicht darauf ausruhen, sondern auch wirklich bereit sein tiefer in die Materie einzusteigen. Ich denke das ist das eigentliche Problem. Die Gefahr der Faulheit anheim zu fallen. "Geht ja, was soll ich da noch weitermachen" ... > Und dann kommen so Sachen wie speicher- und zeitfressende > Float-Operationen heraus, wo es ein paar Feststellen-Bytes auch getan > hätten. Oder ewig lange Stringausgaben. Dann muss plötzlich der > nächstgrößere Controller her, weil der Speicher nicht reicht, obwohl nur > paar Temperaturen gemessen und auf ein Display ausgegeben werden... Ja, aber ist da nicht auch ein wenig Schuld bei "uns" zu suchen? Also bei denen, die schon länger drinstecken und den Anfängern zur Seite stehen? Wie oft hört man "Ach, dann nimm doch X und fertig". Es wird erklärt wie man nun die printf() auf dem µC anpassen muss damit das gewünschte ausgegeben wird. Aber sehr selten sieht man "Hey, das brauchts doch nicht. Das kannst Du viel sparsamer so und so machen". Klar, bei ersterem hat man es schneller erklärt, weil es ja Standard ist. Letzteres müsste man dann mit mehr Aufwand und Geduld vermitteln. Grüße, Chris
Datum:
Manches ist nur noch zum Kopf schütteln. Hier wird geklönt ob C besser ist als Bascom usw. Anstatt was ähnliches wie Open Office zu machen, also entweder dem Bascomentwickler oder Lunaentwickler unter die Arme zu reifen, wird hier gelästert, gestritten, über Obst und gemüse diskutiert. Schon mal überlegt wieviele Ein-Mann-Stunden ein Entwickler braucht um etwas bestehendes sinnvoll zu verbesser oder zu erweitern? 30 Mann-Stunden zusätzlich werden nicht angeboten, es sei denn man verdient mit daran. Muss etwas offene Software sein, damit sich jemand der könnte daran beteiligt? Habt ihr dem Ersteller von Bascom schon mal Beteiligungsangebote gemacht, anstatt hier rum zu klönen? oder kommt jetzt die Antwort, Bascom braucht eh niemand, es gibt ja C?
Datum:
Starkstromer schrieb: > Manches ist nur noch zum Kopf schütteln. Hier wird geklönt ob C besser > ist als Bascom usw. Anstatt was ähnliches wie Open Office zu machen, > also entweder dem Bascomentwickler oder Lunaentwickler unter die Arme zu > reifen, wird hier gelästert, gestritten, über Obst und gemüse > diskutiert. > > Schon mal überlegt wieviele Ein-Mann-Stunden ein Entwickler braucht um > etwas bestehendes sinnvoll zu verbesser oder zu erweitern? 30 > Mann-Stunden zusätzlich werden nicht angeboten, es sei denn man verdient > mit daran. > > Muss etwas offene Software sein, damit sich jemand der könnte daran > beteiligt? Habt ihr dem Ersteller von Bascom schon mal > Beteiligungsangebote gemacht, anstatt hier rum zu klönen? oder kommt > jetzt die Antwort, Bascom braucht eh niemand, es gibt ja C? Hä, wat willst du?
Datum:
Starkstromer schrieb: > oder kommt jetzt die Antwort, Bascom braucht eh niemand, es gibt ja C? Genau :-) Oder anders gesagt, warum sollte ich Opel helfen ein besseres Auto zu bauen an dem dann GM in USA verdienen würde wenn ich doch schon einen BMW fahre?
Datum:
Klaus schrieb: > Hä, wat willst du? Gute Frage, genau das dachte ich beim lesen auch. Was will er uns sagen?
Datum:
Beteiligt Euch an der Weiterentwicklung von Bascom oder von Luna. Bascom ist zwar kein Open Source, aber beteiligen wird sich mancher von Euch wohl können. Oder an Luna.
Datum:
Hi Früher hat jeder Grafiker, der meinte etwas auf sich halten zu müssen, eine neue Schriftart erfunden. Hat zwar niemand wirklich gebraucht. Aber das war egal. Heute scheint es mit Programmiersprachen genauso zu sein. MfG Spess
Datum:
Starkstromer schrieb: > aber beteiligen wird sich mancher von Euch wohl können. Oder an Luna. Warum sollte ich? Warum sollte ich meine Lebenszeit dafür aufwenden ein Produkt weiterzuentwickeln das: ich nicht brauche mir nicht besonders gefällt mit dem andere geld verdienen ... to be continued Gegenfrage: Wenn du Basic programmieren willst warum kaufst du es dann nicht und erweist den Entwicklern dieses Basics damit deinen Respekt und sorgst damit für Geld in der Kasse für eine Weiterentwicklung?
Datum:
spess53 schrieb: > Früher hat jeder Grafiker, der meinte etwas auf sich halten zu müssen, > eine neue Schriftart erfunden. Hat zwar niemand wirklich gebraucht. Aber > das war egal. > > Heute scheint es mit Programmiersprachen genauso zu sein. Dafuer gibt es seit Jahrzehnten schon Lex und Yacc. http://de.wikipedia.org/wiki/Yacc Da kann jeder seine eigene Programmierprache mit erstellen. Ob die einer braucht ist fraglich.
Datum:
Geht es immer nur um diese Fragen, warum ich, was habe ich davon, bringt mir das was usw? Übrigens, ich habe Bascom vor Jahren bereits gekauft. Benutze es hobbymäßig und für mich relativiert sich der Aufwand, eine kompliziertere Sprache wie C lernen zu müssen für die wenigen Projekte die ich mit Bascom bequem erledigen kann. Luna werde ich ausprobieren. Steckt noch in den Kinderschuhen und bräuchte Unterstützung von Profis, also beteiligt Euch.
Datum:
Starkstromer schrieb: > Steckt noch in den Kinderschuhen und > bräuchte Unterstützung von Profis, also beteiligt Euch. Profis nehmen 'C' C-Compiler gibt es fuer jeden Prozessor.
Datum:
Hi, Starkstromer schrieb: > Geht es immer nur um diese Fragen, warum ich, was habe ich davon, bringt > mir das was usw? In gewisser Weise JA. ZUmindest muss man einen Sinn hinter seiner Tätigkeit erkennen. Der kann natürlich auch ideell oder Gemeinnützig sein und muss nichts mit seinem persöhnlichen Vorteil zu tun haben. Aber einen für mich selbst erkennbaren Sinn sollte es schon haben. Und für jemanden der findet das BASCOM (oder was auch immer) im vErgleich zu C (als Beispiel) für ihn überhaupt keine Alternative ist weil C schon überwiegend das bietet was er möchte, da ist es völlig unsinnig von so jemanden zu verlangen er solle doch mithelfen BASCOM zu verbessern. Wenn - dann könnte man ihm höchstens Vorschlagen in der C Welt aktiv zu werden und da etwas mehr zu machen. Wenn jemand z.B. ständig darüber JAmmern würde das der GCC den er erinsetzt dieses und jenens nicht bietet und die Programmierer das nicht einbauen wollen -> DANN währe es eine logische Konsequenz ihm nahezulegen doch selbst daran zu arbeiten. Alles andere aber ist genauso Sinnvoll wie wenn du von einem überzeugten IBM kompatiblen PC benutzer verlangst er solle gefälligst APPLE bei der Entwicklung helfen, gerade WEIL er schon keinen Apple benutzen will da er IBM Kompatible besser geeignet für seine ZWecke findet. Gruß Carsten
Datum:
Profis: C bastler und noobs: bascom ganz klar! so thread kann closed werden! mfg
Datum:
@@@tux@@@ schrieb: > so thread kann closed werden! Noe, ich habe mein Popcorn noch nicht auf.
Datum:
@Starkstromer ich bräuchte (falsch brauchen tu ichs nicht aber ich will mein eigenes nicht ausgeben) ein bischen finanzielle Unterstützung. nach deiner Logik müsstest du jetzt in die Bresche springen und mir mal ein paar (Hundert) Euro überweisen. Kostst dich sogar weniger Zeit als wenn ich anfange Luna weiterzuentwickeln, und du hast dich an mir verdient gemacht, weil ich muss jetzt nicht zu meinem Bankautomaten (Analog zu C lernen) p.s. Lass deine Kohle stecken
Datum:
Udo Schmitt schrieb: > falsch brauchen tu ichs nicht aber ich will mein eigenes nicht ausgeben Kannst meins ausgeben. Schliesslich: > Geht es mir nicht um diese Fragen, warum ich, was habe ich davon, bringt > mir das was usw? Und dann kriegst du noch eine schicke neue Programmiersprache. mfg.
Datum:
Helmut Lenzen schrieb: > Profis nehmen 'C' "Die Titanic wurde von Profis gebaut, die Arche Noah von einem Amateur"
Datum:
MWS schrieb: > "Die Titanic wurde von Profis gebaut, die Arche Noah von einem Amateur" ROFL falsch die Titanic wurde von Iren in Belfast für Engländer gebaut. Wie nachhaltig die Iren wirtschaften sieht man ja an ihrer derzeitigen Situation, die wurde uns hier vor 5-8 Jahren noch als mustergültig verkauft als Deutschland in der EU angeblich das Wachstumsschlusslicht war.
Datum:
Bla Bla Bla Sowie es VW, Opel, Nissan usw gibt, muss es auch Basic, C und was weis ich noch alles geben. seit doch Froh. so ist für alle was dabei. Drauf geschissen welches besser ist.....
Datum:
Carsten Sch. schrieb: > Wenn - dann könnte man ihm höchstens Vorschlagen in der C Welt aktiv zu > werden und da etwas mehr zu machen. Wenn jemand z.B. ständig darüber > Jammern würde das der GCC den er erinsetzt dieses und jenens nicht > bietet und die Programmierer das nicht einbauen wollen -> DANN währe es > eine logische Konsequenz ihm nahezulegen doch selbst daran zu arbeiten. Nein, waere es nicht, denn das ist nicht mein Job. Der gcc ist, wie viele "offene" Software, ein klassisches Danaergeschenk. Ich habe nicht darum gebeten, damit beglueckt zu werden. Ich war zufrieden damit, meinen Compiler kaufen zu muessen. Das System hat funktioniert, es hat mich ein wenig Geld gekostet, die Compilerentwickler haben gutes Geld verdient und die Weiterentwicklung war gesichert. Heute hat der gcc die meisten anderen Compiler verdraengt, viele Hersteller gibt es nicht mehr. Fuer eine minimale Ersparnis pro Nutzer wurde der groesste Teil eines Marktes und einer Branche vernichtet. Ich habe heute nicht mehr die Auswahl, ich habe die Macht, durch meine Produktentscheidung als Kunde den Markt zu beeinflussen, verloren. Stattdessen muss ich das Einheitsprodukt verwenden, weil es keine Alternative mehr gibt. Und bei Kritik bekomme ich noch vorgeworfen, ich solle mich doch bitte an der Entwicklung, von der ich angeblich profitiere, beteiligen, statt zu meckern. Auch wer ein Geschenk macht, hat dafuer eine Verantwortung und nur weil etwas gratis ist, ist es nicht automatisch ein Nutzen fuer die Gemeinschaft.
Datum:
Marwin schrieb: > Stattdessen muss ich das > Einheitsprodukt verwenden, weil es keine Alternative mehr gibt. GCC hat sich halt durchgesetzt. Die Compiler, die heute nicht mehr am Markt sind, sind einfach schlechter gewesen.
Datum:
Meinen alten Manx Aztek habe ich noch ...
Datum:
> Stattdessen muss ich das > Einheitsprodukt verwenden, weil es keine Alternative mehr gibt. LLVM ist doch grad im Aufwärtstrend...
Datum:
Marwin schrieb: > Ich habe heute nicht mehr > die Auswahl, ich habe die Macht, durch meine Produktentscheidung als > Kunde den Markt zu beeinflussen, verloren. Andersrum wird aber auch ein Schuh daraus. Ich habe mal einen Fehler an MS gepostet. Bei einer C Api funktion fwrite oder fread gabs bei Dateien > 2 GByte und einer bestimmten Puffergröße das Problem, das es einen Versatz gab. Wir konnten es hier mit eineigem Aufwand nachweisen und an MS schicken. Antwort: Fehler ja, patch nein, es wird empfohlen statt dessen die WIN32 API zu benutzen. Supertoll wenn das in einem Projekt mit ca 1000 Sourcedateien passiert und das für die Betriebssysteme Windows32, Windows 16 Bit, OS/2, Linux, AIX, Sun Solaris, IBM Host, BS2000 und AS400 geschrieben wurde. Bei Open Source hast du dann zumindest die Chance selbst was an dem Fehler zu ändern!
Datum:
Udo Schmitt schrieb: > Bei Open Source hast du dann zumindest die Chance selbst was an dem > Fehler zu ändern! Bei Open Source kann dein Patch genauso abgelehnt werden. Und dann? Ein fork? Kaum realistisch, da ist es billiger, einen Workaround in die eigene File-Klasse zu machen. Dafuer muss man im Uebrigen auch nicht 1000 Files anfassen, sondern Eines...
Datum:
Marwin schrieb: > Bei Open Source kann dein Patch genauso abgelehnt werden. Und dann? Dann haste immer noch den Patch und bist zurfrieden.
Datum:
Marwin schrieb: > sondern Eines... Klar weil eine Funktion wie fread() nur in einer Source datei eines heterogenen und seit 15 Jahren gewachenen Systems ist. Statt dessen mussten wir einen betriebssystemspezifischen Abstaktionslayer dazwischen setzen. Die Crux hast du nicht verstanden: Du hast KEINE Macht dem Hersteller gegenüber, egal ob es MS, IBM oder eine Community für ein open source projekt ist. Nur bei dem kommerziellen zahlst du!
Datum:
smufte schrieb: > Sowie es VW, Opel, Nissan usw gibt, muss es auch Basic, C und was weis > ich noch alles geben. seit doch Froh. so ist für alle was dabei. Drauf > geschissen welches besser ist..... Grundsätzlich richtig, jedoch Wen interessiert was besser ist? Besser ist das, was der Einzelne persönlich für sich selbst praktisch und verwendbar hält. Ich allein entscheide darüber was ich besser finde und was nicht. Aus einem gewissen Lager liest man im gesamten Forum: Alles Andere ist scheiße, gehört in den Kindergarten, benutzen nur Menschen die verblödet sind, ist was für Kinder, will keiner, kacke, unfug, sinnlos, braucht man nicht... Erinnert mich an "Mercedes (C) ist das Beste, alles Andere ist scheiße", da steige ich doch glatt in meinen BMW (Luna) und habe Freude am fahren..;)
Datum:
Hiermit möchte ich mich bei allen bedanken, die sich an diesem Thread beteiligt haben. Hätte ich ahnen können, wie lustig (und stellenweise interessant) so manche Beiträge sind, hätte ich mir, wie Lueger, auch Popcorn besorgt, um mir die etwa fünf Stunden des Lesen noch etwas zu versüßen. Ich bin während des Lesens ernsthaft ins Grübeln gekommen, ob ich, als professioneller E-Techniker und Hobbyprogrammierer, ein Sozioligie-Studium anfangen soll. Diesen Thread taugt auf jeden Fall für meine eventuelle Promotion!!! In diesem Sinne... Engstirnigkeit rules ;-)
