… und es lässt sich sicherlich auch bestätigen, dass IDEs bislang noch keinen Programmierer daran gehindert haben, Schrottcode zu produzieren.
Der Code-Schnippsel-Thread
-
-
Also dass man bei grossen Codebases nur noch mit IDEs arbeiten kann würde ich so auch nicht unterschreiben. Kenne viele die C++ mit vim/emacs coden, auch an gigantischen Projekten. Ich find's halt unkomfortabel.Brauchen tut man das alles nicht, klar, aber es geht ja um Produktivität.
Ja gut, die arbeiten dann aber auch mit tausend Plugins...
Und zu obigem: Der Programmierer muss schon noch was drauf haben, das ist ja aber klar.
-
… und es lässt sich sicherlich auch bestätigen, dass IDEs bislang noch keinen Programmierer daran gehindert haben, Schrottcode zu produzieren.Dir ist schon bekannt, das Werkzeuge nicht die Fähigkeit haben, einem die Arbeit komplett und korrekt zu erledigen - jedoch einem „unter die Arme greifen“ können wenn es darum geht Fehler zu verhindern.
Steintafeln (heute vermutlich eher nur noch Grabsteine) sind zwar mit Hammer, Meißel und Schleifpapier sicherlich auch herzustellen, aber eine Maschine mit Rechtschreibkorrektur, die jemanden fragt ob er wirklich "dass" statt "das" in den Stein fräsen soll, spart sicherlich die ein oder andere Marmorplatte.
Werkzeuge wie Maschinen erlauben es durchaus Fehler bei Aufgaben zu reduzieren, Sie komplett zu verhindern geht bisweilen noch nicht.
Deshalb sind IDEs ein wirklich tolles Werkzeug.
-
Danke, dass du meine Gedanken nochmal zusammengefasst hast. Ich hatte es gar nicht anders gemeint.

-
Im Auftrag meiner Mutter: Kleines Script, was die Spielstände von "Candy Crush" vom Android-Smartphone runtersichert. Benötigt adb.
Vor Aufruf des Scripts einmal kurz "Helium Backup" auf dem Android-Gerät ausführen, damit die Dateien an der richtigen Stelle liegen.
Aufrufen einfach mit candy.sh, Rest geht automatisch.
Bash#!/bin/bash cd /tmp/ for i in com.king.candycrushsaga.ab com.king.candycrushsaga.json do adb pull /mnt/sdcard/carbon/com.king.candycrushsaga/${i} . done tar -cvf /stuart/backup/candy_$(date +%Y-%m-%d_%H-%M-%S).tar com.king.candycrushsaga.ab com.king.candycrushsaga.json rm com.king.candycrushsaga.ab com.king.candycrushsaga.json cd - -
-
Kleines Python-Skript, das sich jeden Tag auf Arbeit mit dem Referenz- und Entwicklungs-Datenbankserver verbindet und auf neue Daten überprüft, die von ersteren auf letzteren gespiegelt werden müssen:
Code
Alles anzeigenimport os.path, datetime conn_str_ziel = "user1/pass1@tnsname1" conn_str_quelle = "user2/pass2@tnsname2" query_str = "SELECT MAX(RECHENTERMIN) FROM GROSSE_TABELLE" msg_titel = "Data Transfer Checker" msg_head = "Es ist ein neuerer Datenstand vorhanden!" # aktuelles Datum im ISO-Format (YYYY-MM-DD) today = datetime.date.today().isoformat() lastrun = today lastrun_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), "datatransfer_check_last.txt") if os.path.isfile(lastrun_file): # Durch den with-Context werden Fehler beim Einlesen der Datei abgefangen # und lastrun behält den Wert von today bei -> keine DB-Anfrage. with open(lastrun_file, encoding='ascii') as f: lastrun = f.readline().rstrip() if lastrun < today: # Ich verzichte hier auf zusätzliche Wrapper und nutze den Oracle-Treiber # direkt. Diese funktionieren alle ähnlich dem eingebauten sqlite-Modul. import cx_Oracle as oracle rechendatum_ziel = None rechendatum_quelle = None # Siehe oben. Bei DB-Fehler ist das Rechendatum unbestimmt. with oracle.connect(conn_str_ziel) as conn: cursor = conn.cursor() cursor.execute(query_str) result = cursor.fetchone() if result: # RECHENTERMIN ist eine DATE-Spalte, die der DB-Treiber als # datetime.datetime-Objekt zurückgibt. Wir wollen nur den # Datums-Teil, da ohnehin keine Tageszeit angegeben ist. rechendatum_ziel = result[0].date().isoformat() cursor.close() with oracle.connect(conn_str_quelle) as conn: cursor = conn.cursor() cursor.execute(query_str) result = cursor.fetchone() if result: rechendatum_quelle = result[0].date().isoformat() cursor.close() if rechendatum_ziel and rechendatum_quelle and rechendatum_quelle > rechendatum_ziel: msg = "\n".join([msg_head, "Rechendatum Ziel:\t" + rechendatum_ziel, "Rechendatum Quelle:\t" + rechendatum_quelle]) # ich frickel lieber mit der Win32-API herum als mit Tk :P import ctypes MB_OK = 0x00000000 MB_INFORMATION = 0x00000040 # unter Python2 mit Byte-Strings MessageBoxA nutzen! ctypes.windll.user32.MessageBoxW(None, msg, msg_titel, MB_OK | MB_INFORMATION) with open(lastrun_file, mode='w', encoding='ascii') as f: print(today, file=f) -
Weil XING die Contacts-Export-Funktion rausgeschmissen hat und ich schnell alle meine Kontakte mit Position und Firma brauchte:
https://gist.github.com/chrisnew/69d82b8a55a5ea94dc8f
Code
Alles anzeigenwindow.contacts = []; $('#contacts-table > li').each(function(){ var elem = $(this); var data = { name: elem.find('.title > a[href^="/profile"]').text(), position: $.trim(elem.find('.text').clone().children().remove().end().text()), company: elem.find('.company > a').text() }; if (data.name) { window.contacts.push(data); } }); JSON.stringify(window.contacts);Erzeugt einen schönen JSON String.
-
Ein bisschen Zalgo-Fuckup. Von gandro in Rust und von indiagreen aus #haskell und mir in Haskell:
Codefn main() { let x = "Z̷̘̲̗̤̹̞̥̦͖̻̘̍ͦ̋̐͑̈ͪͣͫͧ͑ͭ̇͡ͅÄ̸̧͈̣̩̲̲̜̟͓͚̻ͭ͂̌ͫ̊͊ͤ̇ͨ̀̈̔͂̚͟L̊̄̌̎̕͜͏̳̣̼̰̭̮̠̗̞̜͙G̡̳͕͕̫̍ͩͬ̉̀̐̔͗̃͛̌͆͑̚͠Ó͇̟̯̤̖̩̬̯̻͚͆͒ͫ̏͊̌̆ͯ̏ͧͭͩ"; println!("Graphemes: {}", x.graphemes(true).count()); println!("Characters: {}", x.char_len()); println!("Bytes: {}", x.len()); }Code
Alles anzeigenimport qualified Data.ByteString as B import qualified Data.ByteString.UTF8 as UB import qualified Data.Text as T import Data.Text.ICU x = "Z̷̘̲̗̤̹̞̥̦͖̻̘̍ͦ̋̐͑̈ͪͣͫͧ͑ͭ̇͡ͅÄ̸̧͈̣̩̲̲̜̟͓͚̻ͭ͂̌ͫ̊͊ͤ̇ͨ̀̈̔͂̚͟L̊̄̌̎̕͜͏̳̣̼̰̭̮̠̗̞̜͙G̡̳͕͕̫̍ͩͬ̉̀̐̔͗̃͛̌͆͑̚͠Ó͇̟̯̤̖̩̬̯̻͚͆͒ͫ̏͊̌̆ͯ̏ͧͭͩ" main = do putStrLn x putStr "Graphemes: " print $ length $ breaks (breakCharacter Current) $ T.pack x putStr "Codepoints: " print $ length x putStr "Bytes (in UTF-8): " print $ B.length $ UB.fromString x -
missingno detected
-
Viel zu viele ifs
C
Alles anzeigen/* Programmierer: akino_germany Made with wxDev-C++ */ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int a; char eingabe; do { cout << "Welche Zahl wollen Sie pruefen?" << endl; cin >> a; if (a < 5) { if (a < 3) { if (a==1) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } else { if (a==3) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } } else { if (a < 7) { if (a==5) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } else { if (a==7) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } } cout << "Wollen Sie noch einmal pruefen?" << endl; cin >> eingabe; } while (eingabe=='j'); return EXIT_SUCCESS; } -
Alter wtf, geh mal den Code gescheit formatieren o_O
-
Was soll ich denn da ändern? Ist doch übersichtlich so.
-
Was soll ich denn da ändern? Ist doch übersichtlich so.Nein.
C
Alles anzeigen/* Programmierer: akino_germany Made with wxDev-C++ */ #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int a; char eingabe; do { cout << "Welche Zahl wollen Sie pruefen?" << endl; cin >> a; if (a < 5) { if (a < 3) { if (a == 1) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } else { if (a == 3) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } } else { if (a < 7) { if (a == 5) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } else { if (a == 7) { cout << "Wahr" << endl; } else { cout << "Falsch" << endl; } } } cout << "Wollen Sie noch einmal pruefen?" << endl; cin >> eingabe; } while (eingabe == 'j'); return EXIT_SUCCESS; } -
Hmm das ist in der Tat übersichtlicher. Danke.

-
Alter wtf, geh mal den Code gescheit formatieren o_OSagt der, der die { nichtmal in ne neue Zeile macht.
-
Sagt der, der die { nichtmal in ne neue Zeile macht.
Doch. Da, wo es so gehört.
-
Nein tut es nicht. Denn wenns da oben rumhängt, sieht man nicht auf einen Blick, von wo bis wo eine Ebene der Einrückung geht.
-
Nein tut es nicht. Denn wenns da oben rumhängt, sieht man nicht auf einen Blick, von wo bis wo eine Ebene der Einrückung geht.Ja, doch, die letzte Zeile mit Text, wo anderswo Whitespace ist.
-
Ich kann da nur thosch zustimmen..
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!