– Στη Java πατάς την τελεία (.) και σου βγαίνουν οι επιλογές. Δεν είναι σαν τη C που πρέπει να τα γράφεις όλα με το χέρι.
Δεν κατακρίνω αυτόν που το είπε. Αυτοί που τον έμαθαν να σκέφτεται έτσι πρέπει να βρούν τρύπα να κρυφτούν.
– Στη Java πατάς την τελεία (.) και σου βγαίνουν οι επιλογές. Δεν είναι σαν τη C που πρέπει να τα γράφεις όλα με το χέρι.
Δεν κατακρίνω αυτόν που το είπε. Αυτοί που τον έμαθαν να σκέφτεται έτσι πρέπει να βρούν τρύπα να κρυφτούν.
Ο Gerard J. Holzmann του NASA/JPL δίνει 10 κανόνες, εύκολους να τους θυμάται κανείς, για τη συγγραφή safety critical code. Παρόλαυτά είναι καλό να τους θυμόμαστε και όταν γράφουμε “κανονικό” κώδικα. Κυρίως γιατί σε αντίθεση με άλλα standard, δεν είναι σελίδες επί σελίδων, άρα μπορούμε να τους θυμόμαστε εύκολα και δεν φτάνουν να κυβερνάνε ακόμα και την αισθητική του κώδικά μας (ή ακόμα και το πόσα “spaces” είναι το [TAB]). Οι 10 κανόνες είναι:
Adhering to a set of 10 verifiable coding rules can make the analysis of critical software components more reliable.
Όλο το άρθρο παρουσιάζει εξαιρετικό ενδιαφέρον και ειδικότερα η ανάλυση του σκεπτικού πίσω από τους εμπειρικούς αυτούς κανόνες.
[via The Power of 10: Rules for Developing Safety-Critical Code]
(Και την OTcl)
Σχεδόν πάντα όταν κάποιος συζητάει στο comp.compilers για τις ανάγκες που έχει μια domain specific language που σχεδιάζει υποστηρικτικά για κάποια εφαρμογή, εμφανίζεται η Tcl. “Γιατί δεν το κάνεις σε Tcl;”
@!^&#$%
Έχω αγοράσει και διαβάσει τα Tcl and the Tk Toolkit, Tcl/Tk for Real Programmers και Tcl/Tk Programmers’ Reference (σε PDF), είχα κατεβάσει και το draft του βιβλίου του Welch. Διάβαζα και το the tclsh spot (σειρά άρθρων για την Tcl στο ;login:). Έχω δοκιμάσει ακόμα και το tclkit. Αλλά δε μπορώ ακόμα να συνηθίσω μια γλώσσα που τις μισές φορές που αναφέρεσαι στη μεταβλητή της βάζεις $ μπροστά και τις άλλες μισές όχι, ενώ για να της αλλάξεις την τιμή γράφεις μια προσευχή:
set x 3 set x [expr $x * 5] incr x
Μπλιάχ! Προτιμάω να διαβάζω modem noise…
Freely downloadable book on Genetic Programming:
“A Field Guide to Genetic Programming is an introduction to the field of genetic programming, a type of evolutionary algorithm that provides powerful search tools in the areas of machine learning and artificial intelligence.”
[via]
Από το maclisp.info:
“MACLISP is a dialect of the LISP Programming Language that ran on DEC PDP10 and Honeywell Multics in the 1970’s and early 1980’s. […] The long-awaited, comprehensive summary of MACLISP, a webbed version of Kent Pitman’s The Revised Maclisp Manual, is finally available.”
[via LtU]
Μετά από αρκετά χρόνια αναμονής, ο Paul Graham και ο Robert Morris έβγαλαν στην κυκλοφορία το νέο μαργαριτάρι του προγραμματισμού, τη γλώσσα Arc. Από το Arc Forum:
| “Arc is designed above all for exploratory programming: the kind where you decide what to write by writing it. : It’s not for everyone. In fact, Arc embodies just about every form of political incorrectness possible in a programming language. : Exploratory programming is the fun end of programming, and we hope that will be the guiding principle of the Arc community.” |
Image courtesy of oreillymaker.com |
Η τρέχουσα έκδοση της Arc τρέχει πάνω από την MzScheme*. Παράδειγμα χρήσης της γλώσσας είναι το Hacker News, το οποίο είναι γραμμένο όλο σε Arc, ακόμα και ο HTTP server, πράγμα που τους επιτρέπει να αλλάζουν τον κώδικα του server on-the-fly+.
(Note to self: Να βρω λίγο χρόνο για δοκιμές…)
[via LtU]
Update: ArcCrossReference, an unofficial wiki site of the reference document of the language Arc. The main purpose is to understand the differences between Arc and other Lisp dialects.
[*] – Προς το παρόν με τη version 352 μόνο.
[+] – 10 χρόνια πριν συζήταγα με τον Παναγιώτη την δυνατότητα υλοποίησης ενός web server σε Haskell (με το Hugs ακριβέστερα) για τον ίδιο λόγο. *sniff* *sniff*
Από το http://www.fosscomm.gr/
Από ότι βλέπω συμμετοχή έχουν δηλώσει μέχρι στιγμής:
* Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
* Ελληνική κοινότητα Debian
* Ομάδα Χρηστών Linux Ιωαννίνων (I.L.U.G.)
* Ελληνική Διανομή της έκδοσης Slackel
* Ενωση Χρηστών και Φίλων Λίνουξ Ελλάδος (Hel.L.U.G)
* Ελληνική κοινότητα Drupal (Νεκτάριος Συλλιγαρδάκης)
* Τμήμα Πληροφορικής, Νέων Τεχνολογιών και Διαδικτύου ΠΑΣΟΚ (Αθανάσιος Πρίφτης)
* Eλληνικό openoffice.org (Δημήτρης Κορμπέτης)
* Ελληνική κοινότητα υποστήριξης του Joomla (Γιώργος Φάκας)
* JBoss/Redhat / Java Hellenic User Group (Δημήτρης Ανδρεάδης)
* Εργαστήριο HEP – NTUA (Φώτης Γεωργάτος)
Καταληκτική ημερομηνία δήλωσης συμμετοχής είναι η 18η Φεβρουαρίου 2008
[via]
(Αυτό είναι στο όρια της ψηφιακής αρχαιολογίας)
Μίλαγα χτες με ένα φίλο που προσπαθούσε να λύσει ένα πρόβλημα με Prolog και έψαξα κανά δίωρο για να βρω μια καλή υλοποίηση που να ταιριάζει στο πρόβλημά του. Στην πορεία θυμήθηκα πως χρόνια πριν, είχα διαβάσει για τη Small Prolog η οποία είχε χρησιμοποιηθεί στον Windows NT kernel. Θυμόμουν πως είχα ξανακάνει αυτή την “άσκηση”, αλλά δε θυμόμουν περισσότερα @(%#*&$%^!
Mε λίγη τύχη, λίγη ώρα και χάρη στο Web Archive: Using Prolog in Windows NT Network Configuration του David Hovel.
Update: Περισσότερα μπορεί να δει κανείς στο “Is Prolog really used in Windows NT?”
Yes.
For more information, see
The MNIST database of handwritten digits, available from this page, has a training set of 60,000 examples, and a test set of 10,000 examples. It is a subset of a larger set available from NIST.
It consists of four files that store data in a simple file format (idx format) which is documented in the MNIST database homepage. I wrote this C program to be able to extract the descriptions of handwritten digits of a certain value separately (eg. only the 0s or only the 1s). The text output is pretty simple and closely resembles the format of a PGM file. It is describes the grayscale pixel values of the image in decimal ASCII. Pixel values range from 0 to 255.
As a bonus, there is the opportunity to extract the images in portable graymap file format (PGM) image files.
This program was written with these guys mostly in mind.
[download mnist.c]
I keep forgetting this, so although it is a note to self, I post it here too. The easiest way to find out what symbols are predefined by gcc in your platform; follow these steps:
$ touch p.c $ gcc -E -dM p.c #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #define __CHAR_BIT__ 8 #define __OpenBSD__ 1 #define __WCHAR_MAX__ 2147483647 #define __DBL_DENORM_MIN__ 4.9406564584124654e-324 #define __FLT_EVAL_METHOD__ 2 #define __unix__ 1 #define __i386__ 1 #define __SIZE_TYPE__ long unsigned int #define __ELF__ 1 #define __DBL_MIN_10_EXP__ (-307) #define __FINITE_MATH_ONLY__ 0 #define __GNUC_PATCHLEVEL__ 5 #define __FLT_RADIX__ 2 #define __LDBL_EPSILON__ 1.08420217248550443401e-19L #define __SHRT_MAX__ 32767 #define __LDBL_MAX__ 1.18973149535723176502e+4932L #define __LDBL_MAX_EXP__ 16384 #define __LONG_MAX__ 2147483647L #define __SCHAR_MAX__ 127 #define __DBL_DIG__ 15 #define __USER_LABEL_PREFIX__ #define __STDC_HOSTED__ 1 #define __LDBL_MANT_DIG__ 64 #define __FLT_EPSILON__ 1.19209290e-7F #define __LDBL_MIN__ 3.36210314311209350626e-4932L #define __WCHAR_TYPE__ int #define __FLT_DIG__ 6 #define __FLT_MAX_10_EXP__ 38 #define __INT_MAX__ 2147483647 #define __FLT_MAX_EXP__ 128 #define __DECIMAL_DIG__ 21 #define __DBL_MANT_DIG__ 53 #define __WINT_TYPE__ unsigned int #define __GNUC__ 3 #define __LDBL_MIN_EXP__ (-16381) #define __LDBL_MAX_10_EXP__ 4932 #define __DBL_EPSILON__ 2.2204460492503131e-16 #define __DBL_MAX__ 1.7976931348623157e+308 #define __DBL_MAX_EXP__ 1024 #define __ANSI_COMPAT 1 #define __FLT_DENORM_MIN__ 1.40129846e-45F #define __LONG_LONG_MAX__ 9223372036854775807LL #define __FLT_MAX__ 3.40282347e+38F #define __GXX_ABI_VERSION 102 #define __FLT_MIN_10_EXP__ (-37) #define __FLT_MIN_EXP__ (-125) #define i386 1 #define __GNUC_MINOR__ 3 #define __DBL_MAX_10_EXP__ 308 #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L #define __DBL_MIN__ 2.2250738585072014e-308 #define __PTRDIFF_TYPE__ long int #define __tune_i386__ 1 #define __LDBL_MIN_10_EXP__ (-4931) #define __REGISTER_PREFIX__ #define __LDBL_DIG__ 18 #define __NO_INLINE__ 1 #define __i386 1 #define __FLT_MANT_DIG__ 24 #define __VERSION__ "3.3.5 (propolice)" $ rm p.c $
The output in this example is from a PIII machine running OpenBSD-4.2.