Author Archives: juhan

SICP – cap. 1 – Costruire astrazioni tramite procedure – esercizi – 14

picsContinuo, sono sempre qui, oggi esercizi.

Exercise 1.11A function f is defined by the rule that f(n) = n if n<3 and f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3) if n> 3. Write a procedure that computes f by means of a recursive process. Write a procedure that computes f by means of an iterative process.

Così al volo sembrerebbe una variante di quanto visto per fib. Ci si può fidare? Quelli di SICP sono sempre a caccia di quelli che appena si distragono un attimo😦 A me è capitato recentemente, qui.

E qui ci sono tante chiamate, per cui attenzione che la versione ricorsiva funzionerà solo per numeri piccoli. Dai non è troppo impegnativo, si può fare. Si deve fare.

La mia versione ricorsiva è tranquilla, niente da segnalare; più pasticciata (e non la pubblico) quella iterativa. Dopo aver visto il post di Bill the Lizard ho capito che posso migliorare ancora. Assay😳
Mi consola la soluzione di Ken Dyck, più vicina alla mia.
S-sol (Community-Scheme-Wiki) si dilunga con varie versioni, commentate.

Ecco, anche questo esercizio non era una ripetizione; e doveva essere approfondito se davvero si vuole uscire dalla niubbaggine😳

Roba da fare tappa qui.

:mrgreen:

Calc, Gedit e Racket – memo per niubbi ubunteros come me

mandelOrmai ci sono abituato: ogni volta che c’è una nuova versione da installare sono sia eccitatato [che bello chissà le nuove novità nuove di pakka e quelle rinnovate] e presentivato [ma poi devo reinstallare tutta quella roba che nel tempo ho adottato e ne sono dipendente (atticto terminale (nel senso di perso (non nel senso di personale ma di perso propriamente detto)))].

Perché so benissimo che la grande maggioranza delle cose filano via lisce, manco conta di dirle, fatto. Ma c’è ogni volta qualcosa che richiede googlate, tentativi, e altro che io condisco con un crescendo di psicopatologismo e non-ce-la-posso-farismo. Mi vengono anche fastidiose eruzioni cutanee e disordini al sistema intestinale.

Capace che ne ho già anche parlato, anche su questo blog, ma la memoria sapete…

Allora lo ripeto qui, non so se serve ma ci provo.

Calc
Calc è la mia calcolatrice preferita, anzi l’unica. Non conviene seguire le indicazioni del sito (How to Install), c’è un modo molto più semplice:

sudo apt install apcalc

Ecco! il nome è apcalc, non calc! Lo ripeto qui chissà se…
Poi sì so che apt* è roba del passato, adesso c’è snap, ma nel panico di cui sopra; da domani mi adeguo, promesso; forse.

snap

OK, Calc, c’è😀

Gedit
Gedit è cambiato; è sparita la toolbar, OK, poco male, ma manca (sembrerebbe) l’opzione per cambiare il caso (che sarebbe convertire i caratteri maiuscoli/minuscoli, un po’ quello che fa tr). Opzione sparita dal menu Modifica e non c’è da nessuna parte, nessun plugin. Poi disperatamente seleziono un pezzo di testo e, contrariamente a quello che faccio sempre uso il tasto destro del mouse per dire copia e miracolo (nel suo piccolo):

gedit

Ma dimmi te! Dubbio: magari era così anche prima, non lo saprò mai😉
Lo scrivo qui perché di sicuro me lo dimentico, sapete la mia memoria…

Aggiornamento: medeoTL (rockz!) ha appena twittato, qui, una dritta che funziona, pratica, meglio di quella indicata da me. Quindi per cambiare MAIUSC|minusc per il testo selezionato ci sono le scorciatoie:

C-u converte in maiuscolo
C-l converte in minuscolo
C-~ inverte M/m

Dove C-u sta per Ctrl+u, come usano i saputi.
Nota aggiuntiva per quelli come me che dimenticano le cose: ~ è nascosto sulla tastiera italiana; si ottiene con AltGr+ì.

Racket
Qui tutto Ok, quasi, c’è la pagina Download Racket dove si può scaricare uno script di 120MB, da eseguire con sudo bash, anzi snap (prossimamente).
Ora la versione che ho scaricato e installato è quella per mamma Debian; funziona ma c’è anche quella per ‘buntu, anche se per una versione non recentissima, anzi (Precise Pangolin, 12.04). Anche questa nota potrebbe servire per il futuro chissà…

Ah, un’ultima nota: per gli screenshots uso —com’è già che si chiama…–, a sì: xfce4-screenshooter, da installare con sudo apt install; anzi snap.

Tutto questo perché adesso è prematuro parlarne ma

yy

Uh! yakkety, yakkety, yakkety Yak!

ott

Il 20 è giovedì, di solito l’installazione la faccio la domenica. Pre-panico per domenica 23 ottobre 2016. Quel giorno non ci sono per nessuno; non vi conviene. E mancano solo sei mesi, scarsi😦

:mrgreen:

Il test di Jake

past

Cosa non si trova a seguire le persone giuste su Twitter; prendi Jake VanderPlas, un über-nerd che lascio si definisca da solo, paura di dimenticare qualcosa. Oggi twitta una cosa su Python (chi ha detto che è il nuovo Basic, semplice-semplice?). Il test è troppo bello per non riportarlo qui sul blog, senza spiegare il perché perché non ne sono capace voglio lasciare a voi il piacere di trovare la soluzione😉

Poi chi è vecchio –come me– si ricorderà di tanti casi in cui cambiando compilatore (o versione dello stesso) le cose cambiavano. If it’s working tuca nen! come da detto inglese: if it ain’t broke, don’t fix it.

OK, tornando a Jake ecco il cinguettio.

Da provare subito:

class A: 
    def b(self): 
        pass 

if A.b is A.b: 
    print("Python 3") 
else: 
    print("Python 2")

j0

OK, come previsto. Notare che l’interprete Python guarda anche dove non deve, approfittando del cambiamento di print che nel 2.x è un’istruzione e nel 3.x una funzione faccio una piccola modifica, supposta innocente:

class A: 
    def b(self): 
        pass 

if A.b is A.b: 
    print("Python 3") 
else: 
    print "Python 2"

j1

Uh! ma mica finisce qui:

class A: 
    def b(self): 
        print("hi!")

if A.b is A.b: 
    print("Python 3")
    print(A.b) 
    A.b(True)
else: 
    print("Python 2")
    print(A.b) 
    A.b(True)

j2

Quasi panico!😳 Cose che capitano.

Io intanto torno con le operazioni di post-installazione dello Scoiattolo Ospitale di Xenial Xerus.

:mrgreen:

Rust – considreazioni conclusive

CQKZQTHXAAAff-t

La lunga serie di post su Rust finisce qui. Ma con una raccomandazione, per quel che può valere la mia opinione: tenetelo d’occhio; crescendo diventerà qualcuno, una star.
Probabilmente, forse. Si sa che il futuro è nascosto tra le Pastose Appendici del Prodigioso FSM, sempre sia condito, RAmen.

Graydon Hoare

Un po’ di storia (vorrei, ne so poco) per iniziare. Tanto tempo fa, come ricorda la Wiki, Lambda the Ultimate diceva:

Rust is systems programming languages being developed by Mozilla. It’s very preliminary work, but the list of features suggests an interesting intersection of features. I’m particularly excited by the control over memory layout that Rust gives to the programmer, but it also has massive concurrency, structural typing, and the “ability to define complex invariants that hold over data structures” in its bag of tricks.

The main developer is Graydon Hoare, with contributions from heroes-to-the-Internet Dave Herman and Brendan Eich amongst others.

OOPS!😳 ho copiato tutto il post😳 Ma ci sono i commenti, tanti, variegati. Tutti del 2010, un’altra era geologica.
Poi Rust è cresciuto (e continua tuttora a crescere), copio dalla Wiki:

In January 2014, the editor-in-chief of Dr Dobb’s, Andrew Binstock, commented on Rust’s chances to become a competitor to C++, as well as to the other upcoming languages D, Go and Nim (then Nimrod): according to Binstock, while Rust was “widely viewed as a remarkably elegant language”, adoption of it stayed behind because the language kept changing between versions.[32] The first “stable” version of the Rust, version 1.0.0, was released in May 2015.

Rust was the third most loved programming language in the 2015 Stack Overflow annual survey, and jumped to the first place in 2016 Stack Overflow annual survey.

C’è un intervista a Graydon Hoare, il creatore di Rust da leggere, qui.
Graydon continua a interessarsi al programma, anche se non è più il responsabile; si è perso anche il suo sito ma è attivo su Twitter, dove i follows e followers sono i soliti che sono abituato a trovare (il mondo è piccolo).E su Twitter posta anche cose così😀

OK, basta storia, il programma adesso.
Rust mi piace. Come piace (e viene usato da) hacker che seguo ontehtoobz, già ricordati più volte, niente elenco che poi dimentico qualcuno, sapete la gestione della mia memoria non è paragonabile a quella di Rust. (Solo un link, che mi sembra utile, qui).
Poi c’è l’ambiente, Cargo, p.es., che diventa insostituibile appena il progetto assume una dimensione sensata.
C’è una documentazione on- e offline molto completa, esaustiva.

Il problema piuttosto è un altro, umano.
Rust è un programma di sistema, se la richiesta è piccola ci sono altri strumenti, per esempio Python. Ma, più grave, il tempo è prezioso e il periodo di apprendimento è sempre troppo lungo. Poi quando ci si ambienta si fanno cose che ti fanno sentire meno niubbo, p.es. ecco cose come questa:

with open('{0}{1}'.format(pdir, "/orc-ma"), "w") as f:
	f.write('{0}{1}{2}'.format( ...

Basta, finisco di installare ‘buntu; Rust, solo se dovesse servire.

:mrgreen:

Visto nel Web – 232

Presto che oggi devo installare la nuova versione di ‘buntu; ma prima devo dirvi cosa ho visto nel Web.

134450934-a73cd171-2014-40c0-858d-0b10c46fbdb2
CIDER 0.12 (Seattle) is out! The release notes are here … Enjoy!
#:programmazione funzionale
::: bbatsov

Spry Modules
sembra interessante, chissà se…
#:linguaggi di programmazione
::: Roads Less Taken

Who are the world’s great internet powers?
#:Web, Internet
::: World Economic Forum

Phineas Fisher’s account of how he took down HackingTeam
#:sicurezza, spionaggio
::: newsycombinator

Google Hack: Type in ‘zerg rush’ and watch your screen
#:umorismo
::: LindaRegber

engs

Snowden Predicts Global iPhone Hack, Records Song
#:sicurezza, spionaggio
::: Slashdot

Six-Hour Meeting Friday Fails to End Oracle/Google Lawsuit
#:ditte #:free open source software #:linguaggi di programmazione
::: Slashdot

Microsoft’s New AI Mistakenly Identifies Photos, Ignores Hitler
#:algoritmi, codice
::: Slashdot

pLisp
pLisp is an integrated development environment for Lisp. While it aims to be a friendly Lisp development system for beginners, its feature-set is comprehensive enough to address the needs of a small-to-medium sized Lisp project
#:lisp e derivati
::: shikantaza

Not sure why the Italians in Florence are so against viral open source licenses
#:umorismo
::: davemethvin

CegDQrdUEAAUofX

Xelf documentation reference
Xelf extends Common Lisp with an Emacs-inspired 2D OpenGL game engine, a game project editor interface, and an integrated command shell
#:lisp e derivati
::: Xelf

MyShake, l’app che trasforma lo smarphone in un rilevatore sismico
#:algoritmi, codice
::: Zanichelli

Rilasciato Wine 1.98
Wine permette l’esecuzione di programmi Microsoft Windows su Linux
#:tools, componenti software
::: lffl

rust-musl-builder
Do you want to compile a completely static Rust binary with no external dependencies?
#:linguaggi di programmazione
::: emk

Cosa è la Open Source Initiative (OSI)
#:free open source software
::: Tech Economy

12924514_817240011713302_7664241736440927967_n

A Python Interpreter Written in Python
#:programming, codice, snippet #:linguaggi di programmazione
::: The Architecture of Open Source Applications

In first quarter of 2016, 85 cents of every new dollar spent in online advertising will go to Google or Facebook
#:Web, Internet
::: owasow

MIT Reveals AI Platform Which Detects 85 Percent of Cyberattacks
#:algoritmi, codice
::: Slashdot ::: MIT News

Sed – An Introduction and Tutorial
#:manuali, how to
::: Grymoire

Google Books Can Proceed As Supreme Court Rejects Authors Guild Appeal
#:dati, raccolta
::: Slashdot

fears

rustw – a web frontend for the Rust compiler
#:linguaggi di programmazione #:Web, Internet
::: nick_r_cameron

Why academics are on Twitter
#:Web, Internet
::: AcademiaObscura

Richard Stallman : « Plus rien ne me fait rêver dans la technologie »
grazie @rewasp1973 per il suggerimento
#:free open source software
::: Numerama

How close are AI systems to human-level intelligence? The Allen AI challenge
#:innovazioni, futuro
::: Daniel Lemire

Mapping Corruption in the Panama Papers with Open Data
#:dati, raccolta
::: Num3ri

Cgcfh0uVIAEGS9a

FreeCAD – Note di rilascio della versione 0.16
#:tools, componenti software #:free open source software
::: FreeCAD

Bolzano sceglie Office365 per lavorare “nella cloud”: e la banda?
#:free open source software
::: Tech Economy

A polyglot’s guide to multiple dispatch
#:algoritmi, codice
::: Eli Bendersky

Lista di programmi CAD 2D e 3D free
#:tools, componenti software
::: ElectroYou

LibreCAD 2.0.10
#:tools, componenti software
::: Garr-8

1914827_1109325425744326_1263990852551335220_n

Know your tools
io lo dico da molto indietro nello scorso millennio😉
#:programming, codice, snippet
::: Michele Adduci

Google Admits That Google.com Is Partially Dangerous
#:ditte
::: Slashdot

Breccia Hacking Team, come lo feci
#:sicurezza, spionaggio
::: Punto Informatico

How to Generate Self-Referential Programs
à la Quine; con Racket (e Scheme) è anche più facile, niente baskquote e comma
#:lisp e derivati
::: Macrology

Il diritto all’oblio secondo Rampini
il problema è più generale, fidarsi di quello che scrive Rampini (cit.)
il problema è più generale: leggere Renpubblica (cit.)
Repubblica considera corrispondenza dall’estero uno che legge il New York Times a New York? (cit.)
#:Web, Internet
::: manteblog

generate

self-driving duckbots cruise thru “Duckietown” as part of new MIT class
#:innovazioni, futuro
::: MIT_CSAIL

How to digitize a graph
#:programming, codice, snippet
::: John D. Cook

Ubuntu Through The Years
#:sistemi operativi
::: YouTube

No more leaks with sanitize flags in gcc and clang
#:programming, codice, snippet
::: Daniel Lemire

Snappy Changes
#:sistemi operativi
::: Labix

Cgl2ZNEW0AAmFxk

Book review: “The Go Programming Language” by Alan Donovan and Brian Kernighan
#:manuali, how to
::: Eli Bendersky

Can Switzerland Become a Safe Haven For the World’s Data?
#:dati, raccolta
::: Slashdot

Almost Nothing About the ‘Apple Harvests Gold From iPhones’ Story Is True
#:ditte
::: Slashdot

Tutto cambia, nulla cambia
#:Web, Internet
::: Tech Economy

Scientist Shrinks Arduino To Size Of An AA Battery
#:innovazioni, futuro #:hardware
::: Slashdot

stephen

Costruire un sistema di monitoring scalabile
#:programming, codice, snippet
::: GNUrants

Gli sviluppatori italiani guadagnano 11.000 euro all’anno meno degli altri
attenzione che il titolo è fuorviante; il post è OK😀
#:economia
::: Motherboard

UK spy agencies have collected bulk personal data since 1990s, files show
#:sicurezza, spionaggio
::: the Guardian

Changes Are Coming To the EU’s Cookie Directive, But It’s Not Going Away
#:Web, Internet
::: Slashdot

FBI Paid More Than $1 Million For San Bernardino ‘Hack’
#:sicurezza, spionaggio
::: Slashdot

13043575_10206350893712618_8283320104420558827_n

Ubuntu 16.04 LTS
oggi pomeriggio, salvo imprevisti lo installo
#:sistemi operativi
::: SIAMO GEEK

Fizz buzz in a tweet!
#:programming, codice, snippet
::: rustlang

How to search – install – remove, Snap packages in #Ubuntu
#:tools, componenti software
::: novatillasku

Community WiiLDOS: istruzioni per l’uso
#:free open source software
::: Tech Economy

Cgj-8bpWIAAgQMD

Rust – il linguaggio – 53

k3v_u8NP

Proseguendo dovrei scrivere del capitolo Nightly Rust, qui: /usr/local/share/doc/rust/html/book/nightly-rust.html ma per me sono cose troppo specifiche. Lo stesso vale per tutti i post del capitolo; Tutto per über-nerd rustici (rustaceans). Che un po’ invidio ma non sono dei loro.

Restano altre tre sezioni:

  • Glossary [/usr/local/share/doc/rust/html/book/glossary.html]: Not every Rustacean has a background in systems programming, nor in computer science, so we’ve added explanations of terms that might be unfamiliar;
  • Syntax Index [/usr/local/share/doc/rust/html/book/syntax-index.html], elenco di tutte le keywords, operatori e simboli e altre sintassi, fondamentale per chi ha la memoria come la mia, dimentica i nomi e fa confusione tra i linguaggi (e le parentesi);
  • Bibliography [/usr/local/share/doc/rust/html/book/bibliography.html]: This is a reading list of material relevant to Rust. It includes prior research that has – at one time or another – influenced the design of Rust, as well as publications about Rust. Molto ricca, da perdercisi :grin.

Sono molto grato a Robitex che mi ha fatto conoscere Rust, anche se poi non ho raccolto il suo invito originale (manca il tempo, non sono così bravo come crede). Resta da fare sull’argomento un ulteriore post, le mie conclusioni. Niente di che ma tirare le somme😀

:mrgreen:

Il Web oggi

ipc

Forse è stata un’illusione, ma molto realistica. Quella di poter spegnere lo schermo della banalità piovuta dall’alto. Di svestire gli abiti dello spettatore passivo e trasformarsi in Indiana Jones della conoscenza …

Segnalato da Massimo Mantellini (il Mante) ho scoperto un post di Luca Castelli che devo davvero segnalare. Concordo perfettamente in tutto.

Ma voglio aggiungere qualche considerazione mia, personale.
Forse è solo un momento di stanchezza, sapete la primavera, da sempre a me capita di sentirmi fiacco e stanco in questa stagione, poi passa, cambia, o peggiora. In questi giorni Twitter –mi sembra– sta avendo uno sversamento di pubblicità mai visto, roba da TeleVenditaEccezzionaleQui, e senza set di pentole. Poi forse mi abituerò; o forse no come quando mi capita di vedere la pubblicità alla tele e non ho il telecomando. E spesso vedo che alla gente piace, ho anche un amico (finora, adesso mi scancella) che la produce (e tra un po’ si laurea, peccato che mi scancelli proprio ora😦 che manca poco alla festa).

Per me il Web (forse sbaglio ma lo distinguo da Internet, più ampio) è importante, mi tiene collegato con il mondo. Ha anche sostituito –molto meglio– i giornali. Forse sono solo io a pensarlo ma i quotidiani italiani oggi sono molto peggiorati; sulle edizioni online si trovano –in ritardo– notizie prese da tweets, quasi sempre epurate dei link. Ma con il Web ho a disposizione tutto il mondo –OOPS! no: c’è il problema della lingua. Finisce che resta l’inglese e poco altro (il francese non è così importante, lo spagnolo mai studiato, niente tedesco, niente cinese, niente arabo, niente le altre lingue). Resta fuori la maggior parte del mondo; che magari nemmeno è collegata. OK, sono OT.

Che dire delle bufale che imperversano, dai vaccini alle scie chimiche? Non vale la pena combatterle; le ignoro (quasi sempre).
Altra delusione i social-cosi: tanti contatti si limitano a mettere un like (a tutto quello che vedono). Pochissimi i commenti, a ragione: usano il telefono e non è comodissimo; le volte che ne ho uno a disposizione realizzo di essere negato. Quando segnalo un post su Facebook scopro che i like (e a volte anche la condivisione) è per l’immagine fuori contesto, messa lì solo per akkiappare (OK, anch’io, nel mio piccolo).

Luca-Castelli-100x100

Ma, tutto ciò premesso, il Web resta importantissimo, per me. Anche con i limiti indicati dal post di Luca. Anzi c’è ben di peggio, non viviamo nel migliore dei mondi possibili, Gottfried Wilhem sbaglia.

OK, il post di cui sto parlando è questo: Internet per conformisti, l’ho scoperto grazie al Mante, qui: Internet per conformisti.

OT: il linguaggio di Luca è quello attuale del Web, a differenza di altri altrettanto buoni, p.es. quello dell’Atlantic.

Rust – il linguaggio – 52

sg3
Continuo, oggi qui: /usr/local/share/doc/rust/html/book/borrow-and-asref.html.
Solo qualche appunto; in generale sono cose già viste e queste specifiche servono solo se davvero si userà Rust.

Borrow e AsRef

The Borrow and AsRef traits are very similar, but different.
The Borrow trait is used when you’re writing a datastructure, and you want to use either an owned or borrowed type as synonymous for some purpose.

The AsRef trait is a conversion trait. It’s used for converting some value to a reference in generic code.

OK, passo al capitolo successivo, a proposito dei canali qui: /usr/local/share/doc/rust/html/book/release-channels.html.

Release Channels

The Rust project uses a concept called ‘release channels’ to manage releases. It’s important to understand this process to choose which version of Rust your project should use.

There are three channels for Rust releases:

  • Nightly
  • Beta
  • Stable

New nightly releases are created once a day. Every six weeks, the latest nightly release is promoted to ‘Beta’. At that point, it will only receive patches to fix serious errors. Six weeks later, the beta is promoted to ‘Stable’, and becomes the next release of 1.x.

This process happens in parallel. So every six weeks, on the same day, nightly goes to beta, beta goes to stable. When 1.x is released, at the same time, 1.(x + 1)-beta is released, and the nightly becomes the first version of 1.(x + 2)-nightly.

Generally speaking, unless you have a specific reason, you should be using the stable release channel. These releases are intended for a general audience.

Poi, ovviamente, ci sono casi che … –da leggere tutto di là😀

Come pure il capitolo successivo, qui: /usr/local/share/doc/rust/html/book/using-rust-without-the-standard-library.html.

Usare Rust senza la Standard Library

Rust’s standard library provides a lot of useful functionality, but assumes support for various features of its host system: threads, networking, heap allocation, and others. There are systems that do not have these features, however, and Rust can work with those too! To do so, we tell Rust that we don’t want to use the standard library via an attribute: #![no_std].

Ahemmm… ovviamente (etc.)😉

:mrgreen:

SICP – OOPS! correggo una sconsideratezza

cs212f

Ahemmm… non so come cominciare… davvero😦

Sapete com’è alle volte l’impulsività …
O potrei anche prenderla alla lunga, citare precedenti, il fratello di Prometeo, per esempio. Ecco, io ero stato avvertito ma ho fatto davvero come Epimeteo. Adesso vi conto.

SICP richiede tutta l’attenzione di cui sei capace, anzi di più. Ti distrai un attimino (OK, lo so è silly ma a volte ci vuole) e fai cose che poi ti accorgi che sono –come dire– non esattamente razionali. E te l’avevano detto, poche righe prima:

This procedure is instructive as a prototypical tree recursion, but it is a terrible way to compute Fibonacci numbers because it does so much redundant computation. […]  To get an idea of how bad this is, one can show that the value of Fib(n) grows exponentially with n.

Ma l’ho fatto, qui, ho lanciato l’esecuzione di (fib 100); siccome durava un po’ (poi dirò quanto) ho scritto:

Nota provvisoria: l’elaborazione è tuttora in corso, dura da quasi un giorno intero; aggiorno e metto l’immagine appena possibile. Inoltre: il bello di avere quattro CPU, usate pochissimo, ai miei tempi invece…😳

s22-1 –appena pronta la metto

Dove s22-1.png doveva essere lo screenshot che non credo ci sarà (sì, potrei GIMPare ma non ne sono capace è contro la mia etica).

Dopo più di un giorno intero, complice lo stacco per recarmi a un appuntamento mi è venuto da ripensarci, proprio come Epimeteo. E sì, forse, vuoi vedere che … Insomma tornato a casa ho fatto qualche prova:

ncalls

Atz! se cresce ncalls, il numero di volte che fib viene chiamata.
Ho ricavato la serie di ncalls per fib per i primi valori, quelli computabili, li ho inseriti in un programma di interpolazione esponenziale disponibile online, ab-Exponential regression Calculator – High accuracy calculation, e ho avuto la conferma della mia epimenicità.

regInsomma, la faccio breve, il calcolo di (fib 100) sarebbe durato per un tempo pari ai 2/3 di quello intercorso dal Big Bang. Troppo, per me. ho killato l’elaborazione. Ho anche verificato che i parametri ricavati dalla regressione fossero corretti, per valori piccoli di n:

s20-40-50

Adesso se non fossi (temporaneamente almeno) vaccinato dall’epimeticità mi verrebbe da dire: “ma ‘spetta ‘n attimino: 50 è metà di 100 …”.
‘Tento che c’è la progressione esponenziale, brutta bestia, catastrofica. E la prossima volta pensaci prima😉 nèh!

:mrgreen:

Rust – il linguaggio – 51

Sergio Gridelli

Sergio Gridelli

Oggi qui: /usr/local/share/doc/rust/html/book/choosing-your-guarantees.html, continuando la mia rassegna da qui.

Scegliere le condizioni (garanzie)

One important feature of Rust is that it lets us control the costs and guarantees of a program.

There are various “wrapper type” abstractions in the Rust standard library which embody a multitude of tradeoffs between cost, ergonomics, and guarantees. Many let one choose between run time and compile time enforcement. This section will explain a few selected abstractions in detail.

Before proceeding, it is highly recommended that one reads about ownership and borrowing in Rust.

Vengono di seguito esaminati i vati tipi di puntatori, già incontrati nella lunga serie di post precedenti. Riporto solo l’elenco: Box<T>, &T, &mut T, *const T, *mut T e Rc<T>.

Si passa poi a esaminare tipi più specifici come Cell<T>, RefCell<T> e i tipi sincroni Arc<T>, Mutex<T>, RwLock<T> e le loro composizioni.

Se si usa Rust questa pagina del manuale è fondamentale; per me basta sapere che c’è, se dovesse servirmi in futuro😉

Si passa quindi a FFI, qui: /usr/local/share/doc/rust/html/book/ffi.html.

Foreign Function Interface

Uhmmm… oltre che molto specifico l’argomento è già stato trattato in modo comprensibile anche agli umani come me, copiando TheKeng3r, qui e qui.

:mrgreen:

Iscriviti

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

Segui assieme ad altri 89 follower