Octave, Matlab e Sympy

confusione

Sapete quando un post proprio non viene. Come questo, in corso di stesura da un paio di settimane e proprio non funziona. Tanto che avevo pernato di mettere grande confusione sotto il cielo ma poi perderei la stima di quelli che continuano a leggermi e pensano che sia una persona seria.
Ieri mi sono fissato una scadenza (oggi, finisce il mese e può sempre essere considerato un pre-pesce d’aprile). Poi, Murphy insegna, ieri sono stato preso da problemi audio con Windows (nota per quelli come me: se non hi le casse non ci provare, non ottieni quello che vuoi; e poi con il portatilino piccolo-piccolo, OK).

Il problema è questo: Octave può essere utilizzato al posto di Matlab?
Perché Matlab è oneroso e spesso è comodo avere PC intercambiabili, in un ambiente di lavoro si lavora in squadra e tutti (quelli della squadra) devono essere intercambiabili (quasi, anzi no, discorso lungo ma non lo faccio, potrei passare per sembrare razzista).
Qualche tempo fa ho scoperto Octave e ho anche scritto che mi piace, è OK :roll:
Ne sono ancora convinto, se si usa per cose che è capace di fare (per esempio le matrici). Ma non fa tutto quello che fa Matlab.
Dovete sapere che sono anche abbastanza testardo e alle volte mi lancio in imprese senza senso, anche perché essendo io che avevo proposto Octave ne ero considerato non solo responsabile ma anche esperto.
E mi sono dovuto leggere il manuale, tutto.
E ho cercato sul Web, googlando e stackoverflando e niente.

Poi, la paglia che spezza la schiena al cammello goccia che fa traboccare il vaso: un paio di post introduttivi di un blog che consiglio (me l’ha segnalato Massimo), questi:

Non è quello che stavo tentando di fare ma è stato comunque risolutivo: una cosa semplicissima con Matlab ma impossibile con Octave.

E tra i consigli di Stack Overflow salta fuori (oltre a altri casi in cui Octave, almeno attualmente, non funziona) che ci sono alternative, per esempio Sympy, che oltretutto è Python. Non che sia semplicissimo, e i manuali sono impegnativi, ma c’è.

Insomma: Marx ricorda che a Birmingham si costruivano cinquecento tipi di martelli diversi, diversamente configurati a seconda della particolarità dell’operazione a cui essi erano adibiti.

    confusione--

o in Python:

    confusione -= 1

:shock: :oops: :cool:

Visto nel Web – 124

OK, ora legale, anche se… OK, ecco cosa ho visto nel Web.

2-484

Floppy canterini
::: Palmux

C++ FAQ
::: isocpp

Flash is dead, long live OpenFL!
::: Gamasutra

micio

AMD Develops New Linux Open-Source Driver Model
::: Slashdot

Google’s lightweight image format makes YouTube pages load 10 percent faster
::: Engadget

Range-Checks and Recklessness
invecchiando…
::: Programming in the 21st Century

155123_10202706635839360_1179064351_n

Lettera aperta su XPocalypse rivolta ai LUG italiani
::: GrappaLUG

Digital – PDP
::: Twitter

GNU/Linux Distribution Timeline
::: Futurist

talk

Unless companies pay, their Facebook updates reach 6 percent of followers
::: Boing Boing

Bash implementation of 2048 game
incredibile :roll:
::: github

The 2048 game implemented in sed
::: github

be happy

Come impostare un autocompletamento “umano” per Python in Geany
::: La concoide

JavaScript Inventor Brendan Eich Named New CEO of Mozilla
::: Slashdot ::: Lambda the Ultimate ::: Slashdot ::: WSJ ::: The Verge

Doudou Linux per i bambini ma non solo
::: Freeonline

BjWKXPaIQAA_1ar

Google e Luxottica. La tecnologia ha bisogno di design. Saper fare e saper inventare
::: Luca De Biase

A practical introduction to functional programming
::: Mary Rose Cook

New Approach Could Stop Websites from Leaking or Stealing Your Data
::: Technology Review

dance

Facebook Buying Oculus VR For $2 Billion
::: Slashdot

The Curious Nature of Sharing Cascades on Facebook
::: Technology Review

Brazil House Passes Internet Bill as Data Demand Dropped
::: Bloomberg

anello

#socialUniversity – Le università italiane sui social network
::: nexa

Lettere d’amore fra Alice e Bob
in realtà RSA
::: Num3ri

What Zuckerberg Sees in Oculus Rift
::: Technology Review ::: Slashdot

save

Resources for learning about Python internals and CPython source code
::: github

spaghetti_folks
::: Twitter

The singularity
::: Twitter

drones

Toward Better Programming
sono vecchio: non l’ho apprezzato (o capito)
::: Slashdot

Pochissime persone al mondo meritano il mio sabato mattina. LUI è una di queste
::: Twitter

1044081_10202756388603148_104704500_n

Domanda difficile: quanti oggetti in una directory?

Baby_Gnu_and_Tux_by_syralg

In questi giorni mi sto occupando di tutt’altro. E sono cose noiose. E ancora non sono arrivato a un qualcosa di raccontabile, prossimamente, forse…
Per intanto salta fuori una domanda volante, di quelle che ti fanno rimpiangere di non esserti trasferito in Finlandia (dove se anche ti facessero la stessa domanda non capiresti e continueresti a vivere sereno).
Ma per intanto, ecco il problema: in una directory particolare vengono creati parecchi files, in genere piccoli (qualche KB) dove restano per poche ore o giorni prima di essere processati e rimossi; il tutto automaticamente da un bot uno script.
Capita però che se apri la cartella con il file manager l’operazione è lunga e pare che in almeno un caso sia andato perso qualche file (naturalmente importantissimo e insostituibile). Nella stessa directory sono presenti anche sub-directories ma non credo cambi niente. Per completezza c’è da dire che se modifichi un file con Gedit (e altri editors, credo) quando lo chiudi viene creato un back-up nascosto con il nome terminante con ~.
In ogni caso l numero degli oggetti presenti non supera 2-3000. Può essere troppo grosso e servirebbe dividerli?

Secondo StackOverflow pare di no, nessun problema.

Qualcuno ha problemi simili? O ne sa qualcosa?

Twitter in Turchia (e non solo)

1947329_10154006714810347_972329057_n
Alla fine ce l’ha fatta: il Silvio locale sta riuscendo a bloccare Twitter, successo praticamente totale: Turkey Heightens Twitter Censorship with Mandated IP Blocking.

Le storie circolate in questi giorni sono in parte non veritiere e in parte parziali, non tengono conto della gradualità della censura.

fb-turchia
Pagherà? Riuscirà il despota locale a conservare il potere? Non lo so, da altre parti Twitter (e i social-cosi, importanti tutti) hanno avuto la meglio. Anche se poi la situazione è degenerata, non puoi farcela quando dio (attraverso i suoi rappresentanti locali) è contro di te. E il libertarismo senza limitismo è il male. Assoluto (per lui/loro).

t2

Anche se ci sono segnali interessanti, per esempio: Emerging and Developing Nations Want Freedom on the Internet, Obama e i Silvios locali lo sanno; e lottano. Contro.

Questo post l’ho fatto senza sapere dove pubblicarlo: Al Tamburo Riparato o Ok, panico? Nel dubbio entrambi.

Visto nel Web – 123

OK: Primavera, non tanto OK: influenza, OK: ecco cosa ho visto nel Web.

1234880_10202698619278951_288097422_n

Desert – Schema di colore per Geany
::: Mattux

The Era of Facebook Is an Anomaly
::: Slashdot

How I rebuilt “Flying Toasters” using only CSS animations
::: Bryan Braun

Bh8b_LjIMAAb8wK

What’s New In Python 3.4
::: Python

Woot! Python 3.4.0 (final) is released!!!
::: Twitter

Why OCaml, why now?
::: Andy’s

pacemaker

This presentation can’t be opened because it’s too old
::: Google+

[rust-dev] Announcing the new Rust package manager, Cargo
::: Mozilla

Shuttleworth, ACPI, e il software proprietario in Ubuntu
::: Bl@ster’s

57Swans are removed from a stretch of the River Thames

Il futuro di Twitter
::: la Stampa

Over 500,000 PCs attacked every day after 25,000 UNIX servers hijacked by Operation Windigo
::: welivesecurity ::: Slashdot

Why Google Doesn’t Have a Research Lab
::: Technology Review

5ncSKDW[1]

Three Questions for Leslie Lamport, Winner of Computing’s Top Prize
::: Technology Review ::: ACM

XPocalypse, andiamo avanti tranquillamente (verso il disastro)
::: Dario Cavedon (iced)

Java 8 Officially Released
::: Slashdot

Bi8ygUaIIAEhtfC

Wherein Paul maligns the lack of proper GNU/Linux support on Android devices
PaulTag ;-)
::: Peace, Love and C++

Google Chromecast in Italia: con 35 euro hai una Smart TV
::: tom’s

Motorola’s Smart Watch Looks Pretty Sweet
::: Technology Review

1619481_10152696690737785_594411320_n

Officials: NSA’s PRISM Targets Email Addresses, Not Keywords
::: Slashdot

Crytek announces its CRYENGINE-as-a-Service Program
::: Crytek

Before Snowden, There Was Huawei
::: Technology Review ::: Technology Review

Reading Can Seriously Damage.......

How Quickly Did Your Country Adopt the Internet?
::: Mashable

Support for internet freedom is especially strong in countries where a large percentage of the population is online
::: Pew Research Center

Simple Kriging in Python
::: Connor Johnson

languagess

Click per la versione completa, grazie a Roberto Gambuzzi

Important Corrections to General Inaccuracies and Misconceptions Regarding U.S. Announcement and IANA Functions
avevate capito male, nèh!
::: ICANN

World Wide Web Timeline
::: Pew Research Center

Facebook Introduces ‘Hack,’ the Programming Language of the Future
::: Lambda the Ultimate

made in italy

Linux MultiMedia Studio: L’ Home Recording è servito
::: Nerd Slider

Oppo’s New Phone Hits 538 PPI
::: Slashdot

1899995_10152287366224841_667883872_n

Ancora PI, poi basta per un po’

AthenaPeiraeusStampAllora … ultima puntata (per ora, ci sarebbe altro materiale ma non vorrei sembrare monomaniaco) sulle cifre di π, o PI, o pi, o –lui insomma.

Questa volta ricavato e memorizzato su file formattato usando sympy.
Non ci sono arrivato da solo anche perché c’è Stack Overflow. A volte mi chiedo come facevo una volta prima del Web! OK, <mode nostalgia OFF>. Trovato qui: 1000 digits of pi in python, in particolare la risposta di Garret Hyde. Che cita Python Adventures, lo stesso post di cui parlavo la volta scorsa (il mondo è piccolo, anzi no, è enorme ma se ti riesci a orientare :wink:)
Ecco il codice:

#!/usr/bin/python
# -*- coding: utf-8 -*-

def riga_numeri(bl, n):
    f.write(bl + ' ')
    for c in range(n / 5):
        f.write('{:>5} '.format((c + 1) * 5))
    f.write('\n')

def num_col(n):
    f.write('{:>8} '.format(n))

from sympy.mpmath import mp

mp.dps = 1000001  # number of digits
PI = mp.pi
# print(PI)	  # print pi

lunriga = 100 #per TR

f = open("pag-sy", "w")
bl = " " * 8
riga_numeri(bl, lunriga)
n = 0
st = str(PI)

for c in st[2:]:
    if (n % lunriga) == 0:
        num_col(n)
    f.write(c)
    n += 1
    if (n % lunriga) == 0:
        f.write("\n")
    elif (n % 5) == 0:
        f.write(" ")
f.write("\n")
f.close()

pi1Msy

Undici minuti sul mio ‘puter non recentissimo, anzi… Al solito utilizza pienamente una delle CPU presenti:

cpu

E, ovviamente, produce lo stesso risultato di pi, componente della libreria CLN, utilizzato qui: Contare le cifre di PI.

diff

Ops! diff mi dice che c’è un newline di differenza, verificabile anche con ls:

ls

A qualcuno interessa un file di 1.3 MB, abbondante, questo:

dump

Dai con la prossima settimana si cambia argomento :roll:

Tanti decimali, il caso di PI

1986_stamp_83d40m_Athena_Recentemente Ok, panico ha partecipato al Carnevale della Matematica tenuto dall’ottimo GLF :-)
Uno scoop: il carnevale porta pochissime visite, appena visibili se si vanno a cercare ma devi metterci molta cura. Forse perché l’argomento era difficile, troppo teorico? Ma io ho partecipato anche con l’altro blog, quello più generalista, il Tamburo Riparato. Di là era per pubblicizzare Linux, risultati molto scarsi, un flop.
Ma l’argomento m’interessa, anzi lo script originale lo rivelo solo oggi.
E non finisce qui: ho altra roba già in bozza, mica posso buttarla :roll:

Ecco la versione naïf per calcolare PI con tante cifre decimali quanto volete. Usa sympy e non è ottimale, anzi: è lentissimissima:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys, sympy

ndec = int(sys.argv[1]) + 2
# evalf restituisce il numero di cifre,
#compreso il 3 e il punto  iniziale

pi_str = str(sympy.pi.evalf(ndec))
print pi_str

pisym

OK, le ultime cifre non sono attendibili, come si vedrà in seguito. Inoltre è lentissimo; vediamo cosa capita per un caso più sostanzioso, 1 milione di decimali:

pitime

No, non può andare 10 minuti e 32 secondi! Ma quando il gioco si fa :oops: già detto, cancello.

Un sito da prendere in considerazione in questi casi è Rosetta. Sì, c’è il nostro caso, qui.

#!/usr/bin/python
# -*- coding: utf-8 -*-

def calcPi():
    q, r, t, k, n, l = 1, 0, 1, 1, 3, 3
    while True:
        if 4*q+r-t < n*t:
            yield n
            nr = 10*(r-n*t)
            n  = ((10*(3*q+r))//t)-10*n
            q  *= 10
            r  = nr
        else:
            nr = (2*q+r)*l
            nn = (q*(7*k)+2+(r*l))//(t*l)
            q  *= k
            t  *= l
            l  += 2
            k += 1
            n  = nn
            r  = nr

import sys

ndec = int(sys.argv[1]) + 1
pi_digits = calcPi()

i = 0
for d in pi_digits:
    sys.stdout.write(str(d))
    i += 1
    if i == ndec: print; sys.exit(0)

rosetta1

scrive il 3 iniziale, problema minore. Per quanto riguarda la velocità c’è sempre di mezzo il print, per velocizzare si potrebbe mettere in una stringa (problema aggiuntivoo: in Python le stringhe sono immutabili). In ogni caso ecco:

rotime

Niente, l’ho interrotto, dopo 200 minuti. Cosa succede se tolgo l’output commentando la riga 30? Continua a essere molto lento. Mistero, per adesso meglio la mia versione naïf :shock:
Però, che razza di codice! Chissà da dove viene? Ecco, entrano in gioco la Wiki e Google e prima di subito la soluzione:

OK, ma: 1) non è in Python e 2) Haskell? di nuovo?

Beh, Haskell forse in futuro, per Python c’è Laszlo Szathmary: Digits of PI (Part 2).

Non so se l’argomento interessa solo me; in ogni caso conto di parlarne ancora.
Ah! intanto ho scoperto che c’è un clone FOSS di Mathematica, scritto in Python; interessa? a me sì ovviamente.
Prossimamente… forse… :roll:

Visto nel Web – 122

Non so se avete visto che siamo sul Carnevale della Matematica; ma niente panico, nèh!
Intanto ecco cosa ho visto nel Web.

amy

Autodesk Says It’s Killing Softimage Development, Support
::: Slashdot

Le opere d’arte sono di tutti
::: manteblog

Curiosi di imparare ad usare Linux? La Linux Foundation organizza un corso gratuito
::: Gizmodo

ora legale

A Perugia si parla di open source con la giornata formativa “Ti presento il software libero”
::: Tech Economy

Monadic lifting in C++
sì, ma con altri linguaggi viene, come dire, diverso, ecco
::: Bannalia

Things the NSA doesn’t want you to know
::: nsa-observer

iphone

Sony & Panasonic Next-Gen Optical Discs Moving Forward
::: Slashdot

From Leaker to Speaker
::: Technology Review ::: USA TODAY

Switch from Photoshop to GIMP: Tips From A Pro
::: Riley Brandt

Pejac

Computer Security Career Paths
::: Twitter

Statement from Sir Tim Berners-Lee on the 25th Anniversary of the Web
::: Pew Research Center

Telegram: pro e contro
::: Bl@ster’s

1795668_10152069541584748_1734480314_n

Twitter e la dinamica delle opinioni di maggioranza
il TG1 globale? ma dal basso, non da Silvio e preti
::: Le Scienze ::: doi

Python vs Julia – an example from machine learning
::: Andrew Tulloch

“Fixing” xkcd 1340 (or making the most redonkulous clock ever)
::: github:gist

2012_06_25_03_33_50_IMG_20120625_033350

Giù le mani dal Web
::: Wired

CBSD, lecture 1, 12 March 2014
voi sapete di questo vero? poi continuerà, prossimamente
::: You Tube ::: You Tube ::: You Tube

Happy 25th Birthday to the World Wide Web!
::: Computer History Museum ::: CERN ::: Twitter ::: dropsea ::: the Guardian

lillibella

Don’t be a technical masochist
::: The Endeavour

How the NSA Plans to Infect ‘Millions’ of Computers with Malware
::: The Intercept

The $1 Origami Microscope
::: Technology Review

word

E le aziende scoprono che internet impone un cambiamento strategico nel loro dialogo con la società
::: Luca De Biase

Russia Blocks Access to Major Independent News Sites
::: Electronic Frontier Foundation

A Look at the NSA’s Most Powerful Internet Attack Tool
::: Slashdot

spider

The Web is 25, What Does the Next 25…
::: Pew Research Center

Shuttleworth On Google Go, Unity 8, Ubuntu Phone, Etc
Canonical is using Go a lot internally
::: [Phoronix]

A Short Guide to the Internet’s Biggest Enemies
::: Electronic Frontier Foundation

schroe

Why San Francisco Is the New Renaissance Florence
::: Slashdot

U.S. to relinquish remaining control over the Internet
::: Washington Post

Mozilla Scraps Firefox For Windows 8, Citing Low Adoption of Metro
::: Slashdot

citazioni

Vent’anni fa veniva rilasciato il Kernel Linux 1.0
::: lffl ::: Marco’s Box

Replacing `import` with `accio`: A Dive into Bootstrapping and Python’s Grammar
Amy, quella dell’immagine iniziale, sembra tosta; per intanto RSSisco il suo blog –oops! non si può (ancora).
::: Amy Hanlon

How Data Storage Has Grown In the Past 60 Years
::: Slashdot

leonesse

Open source rules the Web/Internet
::: Twitter ::: Jordan Open Source Association

Arriva la petizione per portare #Linux nelle #scuole Italiane
::: YBlog

Email Monouso
::: Nerd Slider

1925313_637855922954804_1804652793_n

Quattrocento al Giorno
::: MadBob

Declaration of Internet Freedom
::: OpenMedia

simple

Crittografia a chiave pubblica per le email: io mi sono deciso a usarla. E voi cosa aspettate?
::: my life according to me v2.0

Snowden A Hero? Gates Says No, Woz Says Yes
::: Slashdot

BivD5a6CcAAwi9p

IPython

While it does not provide any computational or data analytic tools by itself, IPython is designed from the ground up to maximize your productivity in both interactive computing and software development. It encourages an execute-explore workflow instead of the typical edit-compile-run workflow of many other programming languages. It also provides very tight integration with the operating system’s shell and file system. Since much of data analysis coding involves exploration, trial and error, and iteration, IPython will, in almost all cases, help you get the job done faster.

IPy_header

Me ne avevano già parlato in tanti (sul Web) ma l’ho installato solo oggi. E pensare che… OK, ricomincio dall’inizio.

L’ho installato da terminale sudo apt-get install ipython, scarica ben 3MB sull’hard disk ed è pronto:

ip0

Da provare prima di subito:

ip1

OK. Il sito di IPython dice che la versione corrente (stabile) è la 1.2.1 – February 2014. Con Ubuntu viene installata la 0.13.2, anche se si usa sudo apt-get install ipython-notebook come consigliato dalla docmentazione ufficiale (pagina Installing IPython del sito, in realtà installa la versione per il browser) o da Software Center. Chissà se ad aprile, con Trusty Tahr (che sarebbe poi la Fidata Capra dell’Himalaya (pensa te che i francesi non sono ancora riusciti a cambiargli il nome)) si aggiornerà, vedremo.
Anche il manuale in versione PDF non è aggiornato e io ormai li leggo sul Kindle, scollegato.

OK, vediamo:

ip2

Comodo l’autocompletamento!

def f(x, y, z):
    return (x + y) / z

a = 5
b = 6
c = 7.0

result = f(a, b, c)

ip3

Non ci sono ancora arrivato del tutto ma se si ha uno script (t.py nel mio caso) si può valutare (si capisce valutare o è da lisperato perso) con %run. Con %who si ha l’elenco delle variabili, non so se sia possbile modificarle, tipo debug.

Però…
Sto barando. Finora ho copiato. Devo studiare. Io intanto mi leggo il manuale, l’ho appena caricato sul Kindle poi ne riparlo.
Prossimamente :shock: Forse :roll:

Scrivere formattando bene

OK, questo post lo mettiamo negli sfoghi, volendo non leggetelo, niente d’importante ma –sapete com’è– una mia fissazione. E devo dirlo :roll:

In questi ultimi tempi sono preso da cose übersegretissimissime, in futuro magari vi dirò che si tratta di Python e Java e altro ancora ma adesso non vi posso dire niente. Anzi censuro la frase di sopra.
Viaggiando leggo cose, per esempio su Emacs (prima o poi…) e, la cosa più bella, la sua estrema personalizzabilità e estensibilità con Elisp.

emacs-logoEcco, Elisp. C’è un documento per principianti, fatto molto bene, di Bob Chassell, questo: GNU Emacs Lisp Reference Manual, lo leggo sul Kindle Paperwrite (molto migliorato rispetto all’originale) sui pullman, aspettando gli stessi e dappertutto.

Il Lisp si sa è polimorfo, ognuno lo vede in modo diverso e i lispisti vanno a dire in giro che, oltre a essere il più bel linguaggio, è anche molto semplice. Vero ma se lo dici perdi amici per cui non dirò mai che è l’unico linguagio che si dovrebbe usare (OK, anche Python, Java, Octave/Matlab, forse il C++ e altri, va’).
Inoltre è vecchio, certe cose aveva senso quando io e lui eravamo giovani ma con il passare del tempo si matura…

0Anche l’ufficiale Common Lisp è pieno di funzioni che oggi sarebbero scritte molto diversamente, se risultassero davvero necessarie. Ma sto divagando. Queste cose mi sono venute in mente mentre procedevo nella lettura e apprezzavo certe parti e mi dicevo che altre venivano omesse perché non servivano a Emacs. Poi è venuto fuori il busillis. Non me ne sono accorto subito ma sapete quelle cose che tornano in mente a tradimento e non se ne vanno.
Questo:

3.8 If–then–else Expressions
An if expression may have an optional third argument, called the else-part, for the case when the true-or-false-test returns false. When this happens, the second argument or then-part of the overall if expression is not evaluated, but the third or else-part is evaluated. You might think of this as the cloudy day alternative for the decision “if it is warm and sunny, then go to the beach, else read a book!”. The word “else” is not written in the Lisp code; the else-part of an if expression comes after the then-part. In the written Lisp, the else-part is usually written to start on a line of its own and is indented less than the then-part:

     (if true-or-false-test
         action-to-carry-out-if-the-test-returns-true
       action-to-carry-out-if-the-test-returns-false)

For example, the following if expression prints the message ‘4 is not greater than 5!’ when you evaluate it in the usual way:

     (if (> 4 5)                               ; if-part
         (message "4 falsely greater than 5!") ; then-part
       (message "4 is not greater than 5!"))   ; else-part

Note that the different levels of indentation make it easy to distinguish the then-part from the else-part. (GNU Emacs has several commands that automatically indent if expressions correctly.

Bizzarro, non me n’ero mai accorto. Anche se dev’essere senz’altro così, o no?
OK, cerco con Google, niente, è solo una convenzione di GNU/Lisp. Ma loro la usano abitualmente, potrei portare altri esempi, non solo di Bob, ma forse è meglio tornare a qualcosa che avevo già raccontato in passato: Piccolo sfogo sul tempo che passa.

Uh! vecchio di due anni, per questo non riuscivo a ritrovarlo. Nel frattempo Kazimir Majorinc ha spostato quello che si trovava sul suo blog nel sito nuovo (il blog l’ha chiuso proprio, cose che capitano con il passare del tempo!).
Il post di Kazimir è meraviglioso. E mi da ragione, completamente!
Qui: A Few Examples of Lisp Code Typography.

Tra le altre cose trovate l’esempio di AutoLISP per AutoCAD. Adesso si chiama Visual LISP, gode di ottima salute.

hy-logo-small
Poi, certo, non possono mancare Clojure e altre cose affascinanti, come hy.
M’è passato, prossimamente devo dirvi di una cosa che ho scoperto di Python :roll:

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 63 follower