Riecht stark nach Fibonacci.
*schlägt die Formel nach*
Yep, Fibonacci.
Riecht stark nach Fibonacci.
*schlägt die Formel nach*
Yep, Fibonacci.
Die wahrscheinlich kürzeste Variante, Fibonacci mit Caching zu implementieren. Ich bin aber gerne für Alternativen zu haben.
Heyo. =)
Ich sollte eigentlich für eine Klausur lernen (Compilerdesign, woohoo!) die morgen stattfindet, aber stattdessen schau ich Game of Thrones und habe lustige Ideen... ist ja klar.
Eine solche lustige Idee ist, dass mir gerade die wohl schlechteste Methode in den Sinn kam, zu überprüfen, ob eine Nummer wohl eine ganze Zahl sei oder nicht; das ganze in Javascript, weil ich damit täglich zu tun habe, und man damit so herrlich viel Spaß haben kann:
Die Funktion gibt true zurück, wenn man sie mit einer ganzen Zahl füttert (oder irgendwas, das ganzzahlig ausschaut, zum Beispiel auch für 4.0), und false ansonsten.Code:isInt = function (x) {
arr = [i = -999];
for (; !arr[-1000];) {
arr[i < 1001 ? i++ : -1000] = 1.0;
}
if (arr[x] == true) {
return true;
} else {
return false;
}
}
Was ich daran toll finde ist, dass:
- es nur von -1000 bis 1000 funktioniert - andere Zahlen sind sowieso unwichtig;
- magic numbers genutzt werden, um genau -1000 bis 1000 zu erreichen (also -999 und 1001);
- die lustigen Verhaltensweisen von Javascript, die man am besten vermeiden sollte, gnadenlos ausgenutzt werden (arrays mit negativem Index? Jupp... arrays mit floats adressieren? Jupp...);
- die ternary-Kontrollstruktur um den for-loop zu verlassen sehr - und grundlos - unübersichtlich ist;
- es vollkommen grundlos den == Operator verwendet, um floats mit booleans vergleichen zu können, nur um alles noch unübersichtlicher zu machen;
- i und arr implizit global deklariert werden - dabei kann ja gar nichts schiefgehen!;
- arr jedesmal, wenn die Funktion aufgerufen wird, neu angelegt wird (wenn schon global, dann sollte man das doch wenigstens... ach, was soll's);
- am Ende eine unnötige if-Struktur steht, bloß um das Ergebnis des ifs auszugeben - das könnte man auch in einer Zeile haben
Mir ist schon klar, dass man sicherlich noch viel mehr Idiotie in noch viel weniger Zeichen stecken kann, und daher meine Frage an euch alle:
Was ist der schlimmste Code den ihr in ein paar kurzen Zeilen schreiben könnt? Nehmt ruhig die Programmiersprache eurer Wahl; ich bin gespannt, mit was für Unsinn man in den verschiedensten Sprachen so durchkommt. =)
Das schönste was ich je mit C verzapft hatte war eine Rekursion ohne Rekursionsanker, Prozesse quasi-rekursiv zu forken und innerhalb einer Rekursion nach dem Allozieren von Speicher das Freigeben zu vergessen .
Alles schöne Sachen die man erst zur Programmzeit merkt, weil die Speicher- und Prozessorauslastung recht schnell in die Höhe geht.
Was ich auch immer wieder lustig finde, ist wenn man in C/C++ mit Pointern in Arrays rum stochert, statt über den Index zu zu greifen.
Das schrägste was ich mal in einem Quellcode gesehen habe war folgendes:
Programmiersprache war da Java, einfach schlechter Programmierstil. Was man nicht braucht, sollte man auskommentieren oder gleich entfernen, sonst wird das Kompilat bei schlechten Compilern größer.Code:... (irgendein Code) ...
if(1 == 1)
return();
... (irgendein Code, der aber nie ausgeführt wird) ...
Ich hab mir die Tage das Retro BASIC Sonderheft zugelegt. Ich bin zwar totaler ein programmier Analphabet, aber ich habe so eben mein erstes Listing in meinen MSX getippt^^
Anhang 20590
Anhang 20591
Leider endete der 2. Screen in einer Fehlermeldung, was mich veranlasst hat meinen Code mit dem aus dem Heft und dem vom Ursprungsposting zu vergleichen. Und siehe da! Ich hab meinen ersten Code debuggt*g der Fehler lag darin, dass wo bei mir und im Heft
steht,Code:B:WITH32:
hätte stehen müssen.Code:B:WIDTH32:
Jedenfalls bin ich neugierig wie das Ergebniss sein wird wenn ich korrigierte Fassung eingebe.
Ziel des ganzen ist übrigens ein Spiel bei dem man am oberen Bildschirmrand seine Spielfigur nach links und rechts steuern kann und den von unten etgegenscrollenden Sternen ausweichen muss. Je länger man durchhält desto höher ist die Punktzahl und es ist möglich die Spielfeldbreite einzustellen.
Für die Neugierigen, hier ist der Originalpost
http://www.msx.org/forum/development...msx-basic-game
Schon Schade, dass das alles vor meiner Zeit war. Ich hätt da bestimmt Spaß dran gehabt^^
Das erinnert mich an die ganze Abtipperei auf dem C64 :D
Für Menschen jüngeren Alters: Früher veröffentlichen Programmier-Magazine ihre Programme per Quellcode in Papierform, die man dann abtippen musste.
Es gab dann die Möglichkeit die Programme auf einer Diskette/Datasette zu bestellen. Später gab es dann zwei Ausführungen des Magazins. Entweder mit Diskette oder ohne. Die mit Diskette war dann deutlich teurer.
Irgendwo müsste ich noch ein Buch für den C64 haben, mit Spielen zum Abtippen. ^^
Wollte jetzt keinen extra Thread dazu aufmachen, aber ich habe diese Aufgabe hier gekriegt:
Ich soll das hier nachbearbeiten, hab ich gemacht und war natürlich falsch. Ich habe sowas definiert:
Bei interessen habe ich einfach einen String eingegeben den man auch in der Gruppe finden soll, damit es einfacher ist die Gruppe mit den meisten Spielern zu finden. Prof. Assisten schrieb mir:
"Das Attribut "Interesse" in der Datenstruktur "Gruppe" abzufragen, ist der falsche Ansatz." Ja was wäre den der richtige Ansatz...?
Das Attribut "Interessen" an der Gruppe ist ja kein Indikator dafür, ob es nun die Gruppe ist, mit den meisten Personen, die die Interesse "Spiele" haben.
Das Attribut kann höchstens nur zur besseren Übersichtlichkeit dienen, welche Gruppen überhaupt welche Interessen besitzen, damit eine Person diese Gruppe auch findet.
Man kann ja aber dennoch eine Gruppe erstellen, die die Interesse "Spiele" besitzt, aber keine Person in dieser Gruppe hat in seinem eigenen Profil "Spiele" als Interesse angegeben.
Um nun herauszufinden, welche Gruppe die meisten Personen besitzt, die als Interesse "Spiele" besitzt, musst du nun durch die Liste der Mitglieder iterieren, und die Personen zählen, welche diese Interesse besitzt.
Darüber hinaus ist das Attribut "anzMitglieder" redundant und fehleranfällig. Die Anzahl der Mitglieder ergibt sich schon aus der Liste der Mitglieder. "anzMitglieder" ist in dem Sinne Fehleranfällig, weil dieses Attribut jedes Mal aktualisiert werden muss, wenn eine Person sich aus der Gruppe ein- oder austrägt. Diese Implementierung vergisst man schnell im Eifer des Gefechts, oder man muss ein Datenbank-Korrektur-Script ausführen, das dies nicht beinhaltet, und schon hat man inkonsistente Daten.
Das Attribut "Alter" würde ich auch gegen "Geburtsdatum" austauschen, da sich das Alter jedes Jahr ändert. Geburtsdatum hingegen nicht und daraus lässt sich ja bekanntermaßen das Alter berechnen ;)
Das Geburtsdatum ließe sich ja auch über die Unix Time als Integer abbilden. (Vorausgesetzt man ist nicht früher als 1.1.1970 geboren ^^)
Microsoft hat auf der derzeit stattfindenden Build 2015 den Code-Editor Visual Studio Code, u.a. auch für Linux und OS X, vorgestellt. Damit wollen sie die Cross-Plattform-Entwicklung weiter vorantreiben. Dies ist aber ein reiner Editor und keine Entwicklungsumgebung mitsamt Compiler. Kompilieren müsste man dann schon selber (z.B. mit Mono wer C# unter Linux verwenden möchte). Da der Code-Editor aber nicht nur C# versteht, sondern mehrere Sprachen (darunter auch PHP, Python, JavaScript, HTML, CSS) könnte der Editor auch für Webentwicklung eingesetzt werden. Für JavaSript gibt es sogar eine IntelliSense-Unterstützung, und für ASP.NET 5- und Node.js Applikationen gibt es auch Debugging-Möglichkeiten.
Hm. Einerseits hat VS einen guten Ruf, andererseits klingt "es ist wie VS, nur daß es keine IDE ist" etwas merkwürdig (und ich mag es, in einer IDE zu arbeiten) und Microsoft hat sich in den letzten Jahren einen Ruf für bizarre User Interfaces erarbeitet. Daß VS Code in den Screenshots ein wenig wie Sublime Text mit einer unbeschrifteten Iconleiste an der Seite aussieht, hilft da nicht.
Könnte gut sein, vielleicht auch nicht. Ich denke, ich warte erst mal ein Jahr oder so und sehe dann, was die Leute sagen.
Ich habs am Donnerstag mal ganz kurz ausprobiert. Das ist im Wesentlichen ein Atom Klon. Davon kann man jetzt halten, was man will.
Auch ausprobiert, die Menüleiste von VS Code verträgt sich mit dem KDE(5)-Theme Breeze nicht und ist somit fast gar nicht lesbar (graue Schrift auf grauen Hintergrund).
Ich habe es aber einen Augenblick später wieder deinstalliert.
Ich bin mir nicht ganz sicher, ob folgendes hier was zu suchen hat. Ich probiers trotzdem:
Zachtronics hat ein Programmier-Spiel namens TIS-100 (GoG-Link, Steam-Link, jeweils Windows- und Linux-Version) veröffentlicht, in welcher man mit einer Assembler-ähnlichen Programmiersprache Aufgaben erfüllen darf. Es fängt schon stilecht damit an, dass man sich ein ca. 14-seitiges PDF-Dokument, in der die Syntax erklärt wird, bestenfalls ausdrucken soll^^.
Das Spielprinzip sieht ungefähr so aus, dass bestimmte Patterns von einem IN-Port kommen, diese der Aufgabenstellung gemäß bearbeitet und dann nach OUT-Ports weitergeleitet werden müssen. Mangels Assembler-Erfahrung kann ich nicht sagen, wie akkurat die Bearbeitung wirklich abläuft, aber soviel kann ich schon sagen: Das Spiel macht verdammt viel Spaß und lässt tatsächlich den Kopf rauchen. Ist IMHO wert, es mal gespielt zu haben, wenn man sich selbst mindestens Hobbyprogrammierer schimpft^^...
Das ist megageil, sollte sich jeder jemals zulegen!
Gekauft und direkt die ersten paar Levels gespielt. Gefällt.
Hey, danke für den Tipp. Von der Spielbeschreibung alleine hätte ich nicht gedacht, dass es so viel Laune macht.
Warum gibt es org-mode nur für emacs /o\
Warum fühlt sich emacs mit evil-mode immer noch nicht gut an /o\
Warum ist vimscript so blöd und elisp so cool /o\
Warum kann es keinen coolen emacs- oder vim-fork geben, der die gute Textverarbeitung vom vim mit der krassen Erweiterbarkeit (von mir aus auch nur org-mode, ich bin nicht wählerisch) von emacs kombiniert /o\
Der Buddhismus hat recht, das Leben ist von Leid geprägt.
https://github.com/danielmagnussons/orgmode
Das mal angesehen? Oder tut das nicht alles was du willst?
Übrigens: Rest In Peace - Ian Murdock, Gründer des Debian-Projekt, hat sich für basisdemokratische Software-Entwicklung stark gemacht
Die Umstände wie er zu Tode gekommen ist, sind noch nicht aufgeklärt worden. Die letzten archivierten Tweets von ihm: http://archive.is/OPlI7
Bevor man daraus Spekulationen zieht folgendes:
(Quelle http://heise.de/-3057053)Zitat:
Murdocks Familie bittet, im Respekt für seine Privatsphäre Spekulationen über die Todesursache zu unterlassen.
Debian ist die Linux-Großmütterchen-Distribution schlecht hin, besonders die Stable-Version. Die einzige Version mit recht aktueller Software ist das instabile Debian Sid, aus welcher Ubuntu damals abgespalten wurde.
Das Debian-Projekt ist bekannt für lange, ausschweifende - und imho nicht immer über der Gürtellinie stattfindende - Diskussionen und diversen Abspaltungen.
Frohes Neues Jahr 2016 dem Progforum. Auf das das neue Jahr uns mehr Aktivitaet bringt.
Auch noch ein frohes neues Jahr von mir :)
Ich hab zu Weihnachten nun ein 7" Touchscreen für mein Raspberry Pi bekommen.
Hat einer eine Idee, was man dafür basteln könnte?
Ebenfalls Frohes Neues Jahr. :)Ich für meinen Teil hab ein 2.8"-Touchdisplay für den Pi und mir eine Benutzeroberflächezusammengehackt/programmiert, mit dem ich diverse Serveraufgaben steuere. Hab quasi eine Art "Taschenserver" dabei, mit dem durch einen Fingerzeig DHCP-/DNS-/NTP-Server etc. starten und konfigurieren kann. Wenn ich mich ein wenig in Samba eingelesen habe, hoffe ich, auch einen AD-Server damit konfigurieren zu können... Das Ding wird natürlich keinen Server ersetzen, aber es reicht, um IT-Interessierten diverse Serverdienste zeigen und erklären zu können, ohne sie vor einem Windows-Server oder einer Linux-Kommandozeile hinsetzen zu müssen... Und, weil ich sowas gernezusammenhacke/programmiere^^.
Beim 7"-Display hab ich mir auch schon überlegt, ob ich mir eines zulegen soll. Interessant finde ich da v.a. die Multitouch-Funktion (10 Klicks gleichzeitig können erkannt werden, oder?). Im Endeffekt war das genau der Grund, weshalb ich es mir noch nicht geholt habe: Außer einem Digitalen Bilderrahmen weiß ich ebenfalls nichts, was ich damit machen könnte^^...
Die Frage eines unbedarften Laien:
Was bedeutet es, wenn bei einer Versionsnummer an den Build-Teil noch ein Buchstabe angehängt wird, also 1.1.0.0006f bspw.?
Naja, wie gesagt, das kann dir nur die Firma selbst sagen. Da gibt es keine pauschale Antwort.
Vielleicht wird ja auch kein Buchstabe drangehängt, sondern sie benutzen das Hexadezimalzahlensystem. Dann hast du auch Buchstaben von A bis F.
Samsung verwendet z.B. Buchstaben als Code, wann das Build gebaut wurde. So lässt sich anhand der Buildnummer erkennen, in welchem Jahr und in welchem Monat das Build gebaut wurde.
Vielleicht steht das f bei dir auch für eine Plattform, oder ob es eine 32- oder 64-Bit-Anwendung ist, etc.
*Staub wegpust*
Habe mir vor kurzem den neuen Raspberry Pi 3 (sowie ein Gehäuse, SD-Karte und USB-Netzteil) bestellt, mal schauen wann das ankommt. Ich werde da denke ich mal den ARM-Port von Arch Linux als Basis-System installieren.
Das wird einfach meine Kiste zum Herumexperimentieren sein. Ein Glück hat das Teil nun WLAN und Bluetooth.
Eine C#-Klasse mit über 15.000 LoC. Da kommt Freude auf ...
Hehe, einen RPi3 nutze ich derzeit für Retropie (eine Linuxdistro, die rund um Retroarch gebaut wurde - damit lassen sich alle möglichen Spiele bis inkl. PS1 ohne große Probleme emulieren)... Das Ding hat mich zwar einige Nerven gekostet und ist definitiv nichts für einen Linux-Anfänger, aber wenn es mal läuft (wofür ich erstmal 2-3 Tage brauchte, um mich endlich einzuarbeiten), läuft es butterweich... Und Basteln gehört nunmal dazu ;)
Und ich hatte das Riesenglück, einen Pi Zero zu ergattern. Bin gespannt wann das Teil ankommt^^...
Ich habe mir ein Bluetooth-Keyboard für mein Pi3 geholt. Das Verbinden, Pairing und Authentication war eine kleine Odyssee, aber jetzt kann ich darauf tippen und es erscheint tatsächlich auf meinem Bildschirm - gut soweit.
Aber leider funktionieren die F-Tasten noch nicht, also F1 bis F12. Mit meinem MBP funktioniert die Tastatur einwandfrei.
Docker ist ein •••••••••.
Manchmal könnte ich hier einige Entwickler echt in den Arsch treten ... >:(Code:foreach(...)
{
if(...)
{
foreach(...)
{
foreach(...)
{
if(...)
{
foreach(...)
{
if(...)
{
foreach(...)
{
foreach(...)
{
...
}
}
}
}
}
}
}
}
else
{
throw new Exception();
}
}
Hey, mit O(N^6) bist du noch in P, also tractable. Und ohne das wirre Exception Handling wäre Java Programmieren doch glattwegs langweilig. So fühlt man sich wie ein Indiana Jones, der jederzeit mit allerlei Fallen rechnen muss.
Vor einiger Zeit wurde hier ja mal als Tipp das Programmierspiel TIS-100 von Zachatronic gepostet.
Der Entwickler hat jetzt sein neues Projekt Shenzen I/O (Link) veröffentlicht. Diesmal geht es darum fiktive Mikrocontroller zu programmieren. Habe die ersten paar Puzzles gespielt und es sieht schon wieder sehr unterhaltsam aus - das Spiel kombiniert das Programmieren aus TIS-100 mit dem "Reaktorlayout"-Konzept aus Space Chem. Man darf erwarten dass es später wie auch in den anderen Zachatronic-Spielen wohl wieder sehr knifflig wird.
easyrpg (spiele rpgmaker-games auf u.a. android), tttool (tiptoi-reverse-engineering) sind 2 coole Projekte
(und eigentlich wollte ich nur irgendein Lebenszeichen mal hier lassen)
Warum macht sich jemand die Mühe einen obskuren Rätselstift zu analysieren? In der Zeit könnt man doch einige Assemblersprachen zu nicht mehr gebauten System lernen.
Wow, dein letzter Post hier war vor Chromes Release. xD
Ja, ich war lange nimmer hier.
Multimediaxis war meine digitale Heimat zum RPGMakern als Jugendliche (ok, ein Teil, ich war noch in einem anderen Forum). Damals hiess es noch anders (und ich war auch auf Parallactic (oder so ähnlich)). Draus geworden ist kein Spiel, aber eben ein wenig die Lust am Programmieren. Dann habe ich Abi gemacht, studiert, Familie gegründet, Berufseinstieg (ok, da bin ich noch dran, so richtig im Beruf angekommen fühle ich mich nicht) - und derweil halt immer mehr vom Makern entfernt. Jetzt kam die jährliche Geburtstagsmail, und da dachte ich 'mal sehen, wer noch so da ist'.
EasyRPG ist cool, weil RPGMaker Spiele fürs Smartphone halt einfach ideal sind - und die ganzen Klassiker doch immer noch cool sind (UiD, VD, Tara...) - man wieder neue finden kann (ich war nur im deutschsprachigen Raum unterwegs, anderssprachige Communities haben doch deutlich andere Spiele gemacht). - kurz, das ist ein bisserl Nostalgie - da ich aber leider keine Zeit habe, da Energie reinzustecken, hoffe ich, hier wen zu begeistern ^^
tiptoitool ist deswegen was cooles, weil man damit eben coole Sachen machen kann. Und viele Leute in meinem Alter (Geburtsjahr im Nick ^^), die beruflich programmieren, Kinder haben (oder bald bekommen) und da so einen Stift gerne an ihre Kinder verschenken - und dann damit ohne viel Aufwand kleine Personalisierungen machen können. Von Projekten damit weiss ich:
1) Monkey Island physikalisch
2) neuvertonung von bestehenden tiptoi-Sachen
3) Geschenkkarten an Weihnachtsgeschenke, sodass ein Kindergartenkind verteilen kann (ohne lesen können zu müssen)
4) Schatzsuche
Also ist das für Eltern durchaus sinnvoll, da man damit zwar seinen Technikspieltrieb nachgehen kann, aber eine halbe Ausrede hat, warum das doch für die Kinder gut ist. Ehrlich gesagt, fehlt mir eine Idee, was man cooles mit machen kann, um mich wieder dran zu setzen.
Jeden Tag ein kleines Programmierpuzzle gibt es wie letztes Jahr wieder im Advent of Code Adventskalender:
http://adventofcode.com
Volle Zustimmung. Ich hab mal eine Woche damit zugebracht, einen Docker-Container zusammenzubauen, der ein Buildsystem für C#-Projekte auf Basis von GitLab CI und Visual Studio 2017 Community Edition zur Verfügung stellt. Es ist eine wahnsinnige Quälerei und ich hab ihn wenige Tage, nachdem er produktiv war, wieder durch eine vollwertige VM ersetzt.
Könntet ihr wenigstens kurz elaborieren, was Docker ist, wenn ihr schon darüber schimpft ?
Irgendwo zwischen chroot und Minimalvirtualisierung. Du kannst dir Container bauen, die den gleichen Kernel nutzen, wie das Betriebssystem, aber ansonsten vollkommen voneinander isoliert sind. Eigenes virtuelles Dateisystem, eigener RAM, ggf. eigener Netzwerkstack. Im Vergleich zu echten VMs ist das ressourcensparend genug, dass man jedem Programm seinen eigenen Container geben kann. Die Hauptvorteile sind, dass man die Containerimages für extrem viele Programme fertig konfiguriert runterladen kann und dass das im Serverbetrieb sehr viel sicherer ist, als alles direkt im gleichen Kontext laufen zu lassen. Wenn jemand eine Sicherheitslücke in meinem Datenbankserver findet, dann kann er sich höchstens in dem Container austoben, in dem die Datenbank läuft und reißt nicht gleich die ganze Maschine mit.
Zusätzlich gibt es auch noch recht komfortable Lösungen, um Docker Container automatisch auf die Knoten in einem Cluster zu verteilen und viel viel mehr. Das würde den Umfang dieses Posts jetzt sprengen.
Das Problem mit Docker unter Windows ist, dass die Container keine grafische Oberfläche haben, sondern man alles (inklusive der Softwareinstallation) über PowerShell oder CMD machen muss. In der Theorie mag das funktionieren, in der Praxis ist es ein furchtbares Gefrickel.
Jemand schonmal in VBA programmiert? Vorneweg, hört niemals darauf, wenn jemand sagt, das Ding kann OOP. Irgendwie kann es das, aber nur in einer grausam-frickeligen, überhaupt nicht durchsichtigen und pervers verdrehten, Gehirnzellen-zerstörenden Variante. Wäre H.P. Lovecraft Programmierer gewesen, er hätte OOP in VBA erfunden.
Man kann in VBA - wie mit jedem anderen GUI-Toolkit ja auch - Buttons (etc.) eine "Methode" (Anführungszeichen sind absichtlich eingefügt worden) zuweisen, was aufgerufen werden soll, wenn man draufklickt.
In Microsofts VBA-Welt muss diese "Methode" aber ein Unterprogramm einer Prozedur sein. Aber was ist, wenn man eine echte Methode innerhalb des Objekts aufrufen will? Tjoar, ähm... geht nicht. Es ist nicht möglich, es gibt schlicht keinen Befehl dafür. Wie, du willst nach dem Button-Druck irgendwas an dem Objekt verändern? Pech gehabt, geht heutzutage nur in gefühlt 99,9% aller Sprachen mit OOP, aber nicht in VBA... Also darf man irgendwelche Workarounds benutzen die Programmierer besonders (un)glücklich machen, etwa globale Variablen... Und in allen VB-Foren dieser Welt bekommst du verwunderte User, die fragen, weshalb man sich überhaupt mit Klassen beschäftigen soll, wenn eh alles so gut in Prozeduren läuft...
(EDIT: Nur der Vollständigkeit halber: "Me" (Äquivalent zu "this" in Java und "self" in Python) lässt sich per Parameter auch nicht übergeben, sodass der Umweg über eine Prozedur, die besagte Methode am Objekt aufruft, auch nicht klappt. :gah2:)
Ich installier mir jetzt Python und darauf irgendein Excel-Binding...
---
Trotz des Rants grade wünsch ich jedem Frohe Weihnachten und einen guten Rutsch ins Neue Jahr! :)
VBA darf man nicht mit VB verwechseln. Das sind im Grunde zwei unterschiedliche paar Schuhe, auch wenn beide die selbe Syntax teilen und da liegt die Falle: Während VB doch objektorientiert ist, ist VBA für prozedurale Entwicklung gedacht. Es gibt zwar in VBA sowas wie Klassen und Objekte aber es gibt keine Vererbungen oder keine Interfaces.
Nein, es ist eine Prozedur. Die nennen sich nur Unterprogramm. Methoden werden in zwei Arten unterteilt:Zitat:
In Microsofts VBA-Welt muss diese "Methode" aber ein Unterprogramm einer Prozedur sein.
- Unterprogramme: Sie haben keinen Rückgabewert
- Funktionen: Sie haben einen Rückgabewert
Ich verstehe nicht, was du meinst. Das geht doch.Zitat:
Aber was ist, wenn man eine echte Methode innerhalb des Objekts aufrufen will? Tjoar, ähm... geht nicht.
Das ist nicht korrekt. Wie auch in allen anderen OOP-Sprachen, muss das Objekt existieren. Also muss es auch irgendwo instanziiert und gehalten werden. In anderen OOP-Sprachen spricht man von Klassenvariablen oder Klassenmember und du kannst pro Modul solche Variablen/Member anlegen, die auch nur im Modul sichtbar sind und nicht global.Zitat:
Wie, du willst nach dem Button-Druck irgendwas an dem Objekt verändern? Pech gehabt, geht heutzutage nur in gefühlt 99,9% aller Sprachen mit OOP, aber nicht in VBA...
Wie gesagt, VBA ist keine richtige objektorientierte Sprache. VBA wird auch nicht wirklich von Softwareentwicklern verwendet, sondern überwiegend von Endanwender, die sich damit irgendwas zurecht frickeln und sich auch gar nicht mit Objektorientierung auskennen. Wir haben da inzwischen auch einige Projekte am Laufen, weil unsere Kunden die Aufforderung bekommen, ihre Prozesse, die sie überwiegend mit Excel-Makros gelöst haben, in eine standardisierte und dokumentierte Software zu überführen und was man da sieht, ist echt gruselig.Zitat:
Und in allen VB-Foren dieser Welt bekommst du verwunderte User, die fragen, weshalb man sich überhaupt mit Klassen beschäftigen soll, wenn eh alles so gut in Prozeduren läuft...
Microsoft prüft gerade, ob sie Python nicht als offizielle Sprache in Excel einführen wollen:Zitat:
Ich installier mir jetzt Python und darauf irgendein Excel-Binding...
https://www.bleepingcomputer.com/new...uage-to-excel/
Gleichfalls. :)
Ich verzichte freiwillig auf 10% Gehalt, wenn das heißt, dass ich NIE WIEDER mit einem User reden muss.
Alle User müssen brennen. Dasselbe gilt für IT. My life is strictly a developer only space now.
Der Ton hier ist genau der gleiche wie im IRC-Channel unserer Sysadmins.
Docker ist überall ein •••••••••. "sudo apt-get install •••••••••" <- installiert Docker. Es gibt 2 Arten von Entwicklern: Entwickler noch nichts gescheites mit Docker gemacht haben und Entwickler die Docker scheiße finden.
Stattdessen kann ich normale LXC-Container mit Orchestrationsoftware (um schnell mal einen Dev-Container zu bauen) empfehlen; hat sich einigermaßen bewährt.
wer ist eigentlich auf die enorm kluge idee gekommen, dass C-c in GUI Kopieren ist und auf CLI Prozess killen
Ich verlasse mich nie mehr auf irgendwas, was ich im Internet lese.
Internet: Python ist gut! Tatsächlich leider: Python ist nicht gut.
Internet: Perl ist nicht gut! Tatsächlich aber: Perl ist gut.
Und jetzt soll ich mich auf das verlassen, was ich von dir im Internet lese?
http://cherrytree.at/misc/smilies/032gruebel.gif
sollten wir in this.next() besprechen
boah weiß nicht
(*_*)Zitat:
virtualenv is a very popular tool that creates isolated Python environments for Python libraries. If you're not familiar with this tool, I highly recommend learning it, as it is a very useful tool, and I'll be making comparisons to it for the rest of this answer.
It works by installing a bunch of files in a directory (eg: env/), and then modifying the PATH environment variable to prefix it with a custom bin directory (eg: env/bin/). An exact copy of the python or python3 binary is placed in this directory, but Python is programmed to look for libraries relative to its path first, in the environment directory. It's not part of Python's standard library, but is officially blessed by the PyPA (Python Packaging Authority). Once activated, you can install packages in the virtual environment using pip.
pyenv is used to isolate Python versions. For example, you may want to test your code against Python 2.7, 3.6, 3.7 and 3.8, so you'll need a way to switch between them. Once activated, it prefixes the PATH environment variable with ~/.pyenv/shims, where there are special files matching the Python commands (python, pip). These are not copies of the Python-shipped commands; they are special scripts that decide on the fly which version of Python to run based on the PYENV_VERSION environment variable, or the .python-version file, or the ~/.pyenv/version file. pyenv also makes the process of downloading and installing multiple Python versions easier, using the command pyenv install.
pyenv-virtualenv is a plugin for pyenv by the same author as pyenv, to allow you to use pyenv and virtualenv at the same time conveniently. However, if you're using Python 3.3 or later, pyenv-virtualenv will try to run python -m venv if it is available, instead of virtualenv. You can use virtualenv and pyenv together without pyenv-virtualenv, if you don't want the convenience features.
virtualenvwrapper is a set of extensions to virtualenv (see docs). It gives you commands like mkvirtualenv, lssitepackages, and especially workon for switching between different virtualenv directories. This tool is especially useful if you want multiple virtualenv directories.
pyenv-virtualenvwrapper is a plugin for pyenv by the same author as pyenv, to conveniently integrate virtualenvwrapper into pyenv.
pipenv aims to combine Pipfile, pip and virtualenv into one command on the command-line. The virtualenv directory typically gets placed in ~/.local/share/virtualenvs/XXX, with XXX being a hash of the path of the project directory. This is different from virtualenv, where the directory is typically in the current working directory. pipenv is meant to be used when developing Python applications (as opposed to libraries).
As of writing, pipenv has not seen a release on Pypi since November 2018, and there are no commits on GitHub since November 2019. The documentation website pipenv.org is down (#4137), and users are posting issues asking whether pipenv is dead
tooling so anstrengend wie bei javascript
Perl ist wegen den ganzen CPAN-Modulen und der immer noch relativ guten Geschwindigkeit ganz brauchbar aber ein größeres Perl-Projekt bei dem mehr als 3 Personen Code schreiben würde ich heute nicht mehr anreißen (den ganzen Wahnsinn um $_, @_, Skalar/Listenkontext,... und den 1000 Möglichkeiten um genau die gleichen Standardroutinen zu implementieren würde ich mir nicht ohne guten Grund antun). Vielleicht Ist Raku/Perl 6 in der Hinsicht besser; hat zumindest mal vielversprechend ausgesehen.
Ja, was Großes würde ich damit auch nicht anfangen, aber ich glaube das ist jetzt meine Lieblings-"Kurz was scripten"-Sprache.
Ich muss aber auch sagen, dass Python keinen Spaß macht. Ja, es ist für gewisse Use-Cases wahnsinnig schnell, aber das Tooling ist echt einfach nur grauenhaft, insbesondere wenn man Python als Abhängigkeit von irgendwas in ein anderes Projekt einbindet und nicht ein reines Python-Projekt macht. Da wäre etwas wie Composer eine Million mal angenehmer zu benutzen als Pythons obskurer Salat aus venv, pip, pro-Projekt-Runtimes und weiteren Dingen, die mich nicht interessieren, wenn ich einfach nur einen in Python geschriebenen PDF-Renderer mit seinen Abhängigkeiten in meiner C#-Anwendung verwenden will.
Ich habe das Gefühl, dass Python so eine polarisierende Sprache ist. Entweder geht man voll darin auf oder man findet sie furchtbar.
Ja stimme zu, Tooling ist katastrophal.
Ich dachte die Aussage bezog sich auf die Sprache an sich, die ist nämlich sehr schön.
pyenv funktioniert an sich problemlos, aber was die 30 venv Varianten angeht ist es ein wenig die Suche nach dem geringsten Übel. Wer ein Lockfile für dependencies braucht, kommt um pipenv wohl nicht herum, es sei denn man möchte die dependencies selbst resolven. poetry ist vielleicht ein Hoffnungsschimmer, verfügt aber noch nicht über die essentielle pipenv install --deploy Funktion.
Meine Lösung war, den ganzen Kram inklusive Runtime zu einer monolithischen DLL zu kompilieren. Manchmal kommt man mit sowas durch...
(Ich mag die Sprache selbst tatsächlich auch nicht, aber das ist persönlicher Geschmack und kein Problem der Sprache an sich.)
Ich sehne den Tag herbei, an dem WSL einfach mal funktioniert.
Ich nicht. Bin schon seit Jahren mit dem Original unterwegs. ;)