Visto nel Web – 271

Ecco che arriva, tutto quello che ho wisto nel Web.

16114077_1310247509036692_6138894554465718209_n

Dalle nuvole alla nebbia
#:innovazioni, futuro
::: ElectroYou

D-Wave Open Sources Its Quantum Computing Tool
#:innovazioni, futuro
::: Slashdot

Myths about /dev/urandom
#:sistemi operativi
::: Thomas Hühn

Debian 8.7 Released
#:sistemi operativi
::: Slashdot

Sei quello che ti piace
#:Web, Internet
::: Sergio Gridelli

c19jg2oxgaadfzm

Identificare il computer di un client http
#:sicurezza, spionaggio, virus
::: Siamo Geek

Android vs WhatsApp… ovvero come ti controllo la rubrica condivisa!
#:dispositivi mobili
::: OpenFreeMan

Meanwhile …
è un’idea: un elenco di link; questi tutti suoi
#:programming, codice, snippet
::: Web Reflection

Dell adesso crede in Linux: disponibili ulteriori PC con Ubuntu
#:sistemi operativi
::: Dario Cavedon

Will The Death of the PC Bring ‘An End To Openness’?
eh, sì, purtroppo
#:hardware
::: Slashdot

c2udxksvqaanoju

Tutorial features Scratch per Mentors – CoderDojo Parma
#:programming, codice, snippet
::: dcavedon

The Case for Ubuntu Phone
#:dispositivi mobili #:sistemi operativi
::: dcavedon

Roughing It with Lisp
ispirativo; chissà quanti nuovi lispers 😉
#:lisp(s)
::: ThePracticalDev

Fake Gnus
nessuno è santo 😦
#:free open source software
::: lizardbill

What To Expect In GIMP 2.10
#:tools, componenti software
::: dcavedon ::: dcavedon

c2jignmukaawtnw

Web Components, the React way
#:tools, componenti software
::: bdc

Quantum computers ready to leap out of the lab in 2017
#:innovazioni, futuro
::: Nature

Google-Funded Project Envisions Nation’s Librarians Teaching Kids to Code
#:programming, codice, snippet
::: Slashdot

Domestic server using Raspberry Pi
#:hardware
::: NP-Incompleteness

New search engine aims to be “the Google for programming syntax”
#:tools, componenti software
::: MIT_CSAIL

c1qwwsvwiaaljr

L’influence tentaculaire des géants technologiques américains
#:economia
::: alphoenix

Raspberry Pi Upgrades Compute Module With 10 Times the CPU Performance
#:hardware
::: Slashdot

This looks like an incredibly good summary of hard-won pragmatic machine learning advice
#:artificial intelligence
::: avibryant

Chart of similar operations with sed and awk
#:tip, suggerimenti
::: Eric Pement

Graphviz – Graph Visualization Software
#:tools, componenti software
::: Graphviz

c2urrhuuqaawsvn

Happy to announce matplotlib 2.0 is released!
non faccio in tempo a dire che m’intriga che … 😀
#:tools, componenti software
::: tacaswell

FSF announces a major overhaul of free software High Priority Projects List
#:free open source software
::: fsf

Switch happily from OSX to Ubuntu
#:sistemi operativi
::: lucaciavatta

Malware Analysis tools and resources
#:sicurezza, spionaggio, virus
::: xKaliSec

Top 10 Raspberry Pi projects for beginners (or anyone who just wants something easy)
#:programming, codice, snippet
::: lifehacker

c2tz0hbveaiq4p3

Linux Live USB Creator: LiLi
altamente consigliato, chissà che qualcuno poi non veda la luce!
#:tools, componenti software
::: Hackers_toolbox

Why Should YOU Choose Python?
#:linguaggi di programmazione
::: Medium

Cool, pytorch was just open-sourced!
#:free open source software #:linguaggi di programmazione
::: jakevdp

Unix system programming in OCaml is a great book
#:programmazione funzionale
::: keleshev

this post about how & why Instagram disabled Python garbage collection is GREAT
#:programming, codice, snippet
::: b0rk

15826603_1135843393179701_1888275368414959102_n

Trump is an example of How Complex Systems Fail
#:programming, codice, snippet
::: jakedonham

Why is functional programming gaining popularity?
uhmmm… mi sa che … 😉
#:programmazione funzionale
::: ThePracticalDev

Nim language – 255 contributors, 15 releases, more than 2,000 resolved issues and now almost 10,000 commits!
#:linguaggi di programmazione
::: nim_lang

Twitter Just Sold Its Developer Platform To Google
#:media
::: Slashdot

c2fermmvqaad2ug

Never Write For-Loops Again
in Python; da meditare (e seguire i commenti)
#:linguaggi di programmazione
::: Medium

Teach Writing Code First
neanche sbagliato; ma bisogna poi superare il livello BASIC
#:programming, codice, snippet
::: ThePracticalDev

is a really sweet, maintained clone of GNU units
#:programming, codice, snippet
::: whitequark

Yet Another Random Program Generator
#:programming, codice, snippet
::: DmitryBabokin

This is a truly important effort by @zeynep and the cybersecurity community – well done!
#:sicurezza, spionaggio, virus
::: fabiochiusi

da Enrico --rockz! :grin:

da Enrico –rockz! 😀

Zuckerberg Sues Hundreds of Hawaiians To Force Property Sales To Him
#:ditte
::: Slashdot

Oracle Scraps Plans For Solaris 12
#:sistemi operativi
::: Slashdot

Goodvibes is a New Internet Radio Player App for Ubuntu
#:tools, componenti software
::: dcavedon

Adobe Acrobat per Chrome
#:tools, componenti software
::: Siamo Geek

Facebook Has a Team That Handles Mark Zuckerberg’s Page
#:ditte
::: Slashdot

nope

Hy 0.12.0 is out!
#:lisp(s)
uh! maturato molto, viene quasi voglia di usarlo (poi mi sgridano)
::: hylang

Notes on math and computing
#:programming, codice, snippet
::: CompSciFact

popolarità delle distribuzioni #Linux dal 2002 al 2016
#:sistemi operativi
::: madbob

Lavabit Is Relaunching
#:sicurezza, spionaggio, virus
::: Slashdot

rink-rs
Unit conversion tool and library written in rust
Rust è uno dei linguaggi più promettenti; e “bello” 😉
#:linguaggi di programmazione
::: tiffany352

Best of Davos: @Google co-founder Sergey Brin: I didn’t see #AI coming
#:artificial intelligence
::: wef

no-no-no

NumPy – 2 – Help e documentazione di IPython

fworks

Continuo da qui, seguendo Jake, qui.

Help e documentazione di IPython
If you read no other section in this chapter, read this one: I find the tools discussed here to be the most transformative contributions of IPython to my daily workflow.

Sì ci sono, e funzionano, i soliti sistemi, per esempio Stack Overflow e amici e conoscenti (anche via Web), ma dice Jake:

One of the most useful functions of IPython/Jupyter is to shorten the gap between the user and the type of documentation and search that will help them do their work effectively. While web searches still play a role in answering complicated questions, an amazing amount of information can be found through IPython alone. Some examples of the questions IPython can help answer in a few keystrokes:

  • How do I call this function? What arguments and options does it have?
  • What does the source code of this Python object look like?
  • What is in this package I imported? What attributes or methods does this object have?

Here we’ll discuss IPython’s tools to quickly access this information, namely the ? character to explore documentation, the ?? characters to explore source code, and the Tab key for auto-completion.

Documentazione con ?
Credo basti un esempio:

np3

E funziona anche con le funzioni che si definiscono, a patto di usare la docstring:

np4

Accedere al codice con ??

np5

Esplorare i moduli con <TAB>
IPython’s other useful interface is the use of the tab key for auto-completion and exploration of the contents of objects, modules, and name-spaces. È un po’ diverso da come indicato da Jake (e il tab che inserisco alla fine del comando non si vede):

np6

e

np7

si può anche scrivere l’inizio del metodo, verranno visualizzati solo quelli corrispondenti:

np8

Vale anche per i metodi privati/interni:

np9

Vale anche per gli imports

np10

e anche

np11

insomma sempre.

Oltre al TAB completion: wildcard matching
Tab completion is useful if you know the first few characters of the object or attribute you’re looking for, but is little help if you’d like to match characters at the middle or end of the word. For this use-case, IPython provides a means of wildcard matching for names using the * character.

For example, we can use this to list every object in the namespace that ends with Warning:

np12

come si vede vale anche per casi più generali.

Insomma, non so voi ma per me IPython è la mia nuova REPL 😀
Non sono ancora partito con NumPy? No, ma si sa che Ankh-Morpork non è stata costruita in un giorno 😉
:mrgreen:

SICP – cap. 1 – procedure ritornate come valori – X – 59

ngc7331Ultimo esercizio del cap. 1, continuando da qui sono giunto qui.

Exercise 1.46.  Several of the numerical methods described in this chapter are instances of an extremely general computational strategy known as iterative improvement. Iterative improvement says that, to compute something, we start with an initial guess for the answer, test if the guess is good enough, and otherwise improve the guess and continue the process using the improved guess as the new guess. Write a procedure iterative-improve that takes two procedures as arguments: a method for telling whether a guess is good enough and a method for improving a guess. iterative-improve should return as its value a procedure that takes a guess as argument and keeps improving the guess until it is good enough. Rewrite the sqrt procedure of section 1.1.7 [qui] and the fixed-point procedure of section 1.3.3 [qui] in terms of iterative-improve.

Ormai è una tradizione, sento Bill the Lizard, lui spiega bene.
Ecco sqrt:

; sqrt procedure and sub-procedures from SICP 1.1.7

(define (improve guess x)
   (average guess (/ x guess)))

(define (average x y)
   (/ (+ x y) 2))

(define (square x) (* x x))

; fixed-point procedure from SICP 1.3.3

(define tolerance 0.00001)
(define (fixed-point f first-guess)
   (define (close-enough? v1 v2)
     (< (abs (- v1 v2)) tolerance))
   (define (try guess)
     (let ((next (f guess)))
       (if (close-enough? guess next)
           next
           (try next))))
   (try first-guess))

(define (iterative-improve good-enough? improve)
   (define (iter-imp guess)
     (if (good-enough? guess)
         guess
         (iter-imp (improve guess))))
   iter-imp)

(define (sqrt x)
   ((iterative-improve (lambda (guess)
                         (< (abs (- (square guess) x))
                            0.001))
                       (lambda (guess)
                         (average guess (/ x guess))))
   1.0))

s134

E fixed-point:

(define (fixed-point f first-guess)
   ((iterative-improve (lambda (guess)
                         (< (abs (- (f guess) guess))
                            0.00001))
                       (lambda (guess)
                         (f guess)))
    first-guess))

s135

sicp-ex ha una soluzione più sintetica; manca però di ogni spiegazione di quello che fa, dovete scoprirlo da soli (ma fa parte del gioco, no?):

(define (close-enough? v1 v2) 
   (define tolerance 1.e-6) 
   (< (/ (abs (- v1 v2)) v2)  tolerance)) 
  
(define (iterative-improve improve close-enough?) 
(lambda (x) 
 (let ((xim (improve x))) 
   (if (close-enough? x xim) 
       xim 
     ((iterative-improve improve close-enough?) xim)) 
   ))) 

; (a) rewrite sqrt using iterative-improve 
(define (sqrt x) 
((iterative-improve   
 (lambda (y) 
   (/ (+ (/ x y) y) 2)) 
 close-enough?) 1.0)) 

; (b) rewrite fixed-point using iterative-improve 
(define (fixed-point f first-guess) 
((iterative-improve 
 ; improve function is nothing but the 
 ; function f whose fixed point is to be found! 
 f 
 close-enough?) first-guess))

s136

OK 😀 non riporto la mia soluzione perché meno chiara, avendo a disposizione quelle degli über-nerds finisco per sbirciare; cosa che ho visto fanno anche altri 😉
Ma adesso si passa al capitolo successivo 😀
:mrgreen:

cit. & loll – 27

Oggi come un fiume in piena, ecco qua 😀

c2dxak_xcaa_jok

My talk on Python best practices is now outdated
::: keleshev

Geek girl or photoshop? 😂
::: evilripper

‘Hardware eventually fails. Software eventually works.
::: CompSciFact

Programming Wisdom
::: CodeWisdom

Petit jeu des 10 ans de l’iPhone
::: CommitStrip

5gbfe

Bug fixing
::: evilripper

Some people just have no respect for tradition
::: ehud

Glad that all programming languages have flaws
da citare spesso, quasi sempre 😀
::: keleshev

I really hope that this a typo. Should consider carefully
::: Shawpsych

Debugging code
::: slashdot

safe-password

#coderdojo in corso
::: Micio1970 ::: fescarr

Good luck to my PHIL30043 students—may Church’s spirit be with you and your recursive functions
::: consequently

Extracted a Toyota car
::: LinuxTecGeeks

Make types great again
::: pandamonial

#linux inside #debian
::: radhios

obama2008

How malware bypassing anti-viruses work
::: malwareunicorn

Non Sequitur by Wiley Miller
::: GoComics

10 minuti di lavoro su Windows spiegano la follia omicida
::: lopo

identify -format %k [image] # Count unique colors in an image
::: climagic

Affidarsi agli algoritmi is the new affidarsi a Dio
::: Iddio

c2jzonvxeamfwp1

Maybe floating point should be an advanced lang feature
::: gclaramunt

Can everyone read the code on the slide?
::: gfixler

#blockchain
::: timpastoor

FAQ
::: Google+

what i would love to have in linux/X as a desktop widget
uh! anch’io
::: mntmn

c2v0z4awiaaaeby-jpglarge

Manca la corrente!
::: dcavedon

This is exactly why I gave up trying to learn Dutch
::: mistersql

L’ISIS minaccia
::: IsisMinaccia

Evolution of desk
::: tecmint

instagram

I decided to use first and rest this semester instead of car and cdr
::: wallingf

I don’t often want to charge my phone and use headphones at the same time
::: mattmight

This is the best argument against superintelligent AI I’ve ever read
::: mims

Ho disinstallato Pokemon Go
::: evilripper

Il momento della ricerca della parola giusta per non superare i 140 caratteri
BB vi conviene seguirlo –avvisati nèh! 😀
::: BeppeBeppetti

c1_srq9xgaadmzy

The best theory is inspired by practice. The best practice is inspired by theory
::: CompSciFact

Voice Commands
Dvorak no ma tastiere strane tante, con panico; Apollo aveva il tastierino a sinistra perché alla destra c’è il mouse
::: xkcd

Programming languages, like pizzas, come in only too sizes
::: CodeWisdom

Me, to my 9-year-old: “And now for an important lesson in software engineering…”
::: bcantrill

number of computers
::: computerfact

uccelli-in-gara

NumPy – 1 – oltre Python

nikon-small-world-ammonite-shell
Inizio (come annunciato qui) con Python Data Science Handbook di Jake VanderPlas. In particolare seguo (ahemmm… copio) la Jupyter notebook version. Mi sembra che Jake lo consenta, Jake rockz! 😀 e allora sono pronto per iniziare, qui: IPython: Beyond Normal Python.

Partiamo dall’inizio, dice, io uso IPython e un text-editor.
L’editor che usa Jake è più lussuoso di quello che uso io —gedit— e se posso non lo cambio, per ragioni di compatibilità con i miei contatti e poi perché sono vecchio e ai miei tempi l’editor faceva solo l’essenziale; prima del vi.

Invece come ambiente (environment, quello che io chiamo di solito REPL) Jake usa e raccoanda IPython, mi adeguo, anche perché sì rockz! 😀

IPython is about using Python effectively for interactive scientific and data-intensive computing. This chapter will start by stepping through some of the IPython features that are useful to the practice of data science, focusing especially on the syntax it offers beyond the standard features of Python. Next, we will go into a bit more depth on some of the more useful “magic commands” that can speed-up common tasks in creating and using data science code. Finally, we will touch on some of the features of the notebook that make it useful in understanding data and sharing results.

IPython può essere usato in due modi, shell e notebook; prendere quell più conveniente caso per caso, intanto vediamoli.

Lanciare la shell di Ipython
This chapter, like most of this book, is not designed to be absorbed passively. I recommend that as you read through it, you follow along and experiment with the tools and syntax we cover: the muscle-memory you build through doing this will be far more useful than the simple act of reading about it. Start by launching the IPython interpreter by typing ipython on the command-line.
C’è anche l’help, sempre di Jake: Help and Documentation in IPython.
Siccome scrivere ogni volta ipython sarebbe troppo lungo, anche perché al solito io lo faccio con opzioni, prima di subito mi sono creato l’alias:

np0

sì, lo so, ho qualche settaggio non a posto –who cares. E anche

np1

e così via 😀

Lanciare il Jupyter Notebook
The Jupyter notebook is a browser-based graphical interface to the IPython shell, and builds on it a rich set of dynamic display capabilities. As well as executing Python/IPython statements, the notebook allows the user to include formatted text, static and dynamic visualizations, mathematical equations, JavaScript widgets, and much more. Furthermore, these documents can be saved in a way that lets other people open them and execute the code on their own systems.

np2

Figo Fine, ma sapete io sono vecchio, solitario, per adesso so che c’è poi chissà… Le previsioni riguardo al futuro… (inizio-cit).

OK, per oggi basta. Anche perché –sapete– c’è sempre il rischio 😉
:mrgreen:

NumPy – inizio, sarà lunga – 0

numpy_logoUn amico prof al Poli, qualche anno più di me, me l’aveva consigliato caldamente quando stavo per partire con la telenovela Octave mi aveva kwasy sgridato: “vai su MatPlotLib!”. Per fortuna che gli esami al Poli li avevo finiti, da tempo 😀
E ora — forse — chissà — probabilmente…

Devo scegliere un testo da seguire, ci sono diversi candidati:

Rougier da per scontato cose; non riesco a far girare gli esempi che ho provato perché mancano moduli e non ho capito quali. Per esempio che differenza c’è tra i vari timeit? Peccato perché sembra bello. Uh! timeit è in tkinter, scoperto leggendo Jake.
Ha una ricca bibliografia, articoli e libri (per lo più non online).

Jake –lo seguo da sempre sui social– sembra ottimo.
Di Jake c’è anche A Whirlwind Tour of Python, da considerare.

Aaron Meurer e Ondřej Čertík (anche lui presente nel paper) sono i principali artefici di Sympy.

Allora, dopo una scorsa, provando a campione alcuni script mi sembra che sia possibile partire seguendo Jake Vanderplas. Sarà una serie di post quasi solo per me, per vedere come fanno i nerds (über) per cercare di superare il mio stato di aspirante n00b 😉
Non è detto che finisca ma ci provo. mettendocela tutta 😀
Intanto sto facendo altro, completamente differente. Ma questo non lo racconto (per adesso) 😉

:mrgreen:

SICP – cap. 1 – procedure ritornate come valori – IX – 58

pop5

Continuo con gli esercizi, da qui; copio qui.

Exercise 1.45.  We saw in section 1.3.3 [qui] that attempting to compute square roots by naively finding a fixed point of y ↦ x/y does not converge, and that this can be fixed by average damping. The same method works for finding cube roots as fixed points of the average-damped y ↦ x/y2. Unfortunately, the process does not work for fourth roots — a single average damp is not enough to make a fixed-point search for y ↦ x/y3 converge. On the other hand, if we average damp twice (i.e., use the average damp of the average damp of y ↦ x/y3) the fixed-point search does converge. Do some experiments to determine how many average damps are required to compute nth roots as a fixed-point search based upon repeated average damping of y ↦ x/yn-1. Use this to implement a simple procedure for computing nth roots using fixed-point, average-damp, and the repeated procedure of exercise 1.43 [qui]. Assume that any arithmetic operations you need are available as primitives.

Questa volta panico davvero! 👿 Non è un semplice esercizio, è una tesi! dai prof, state esagerando 👿 o sono solo io?
OK, ho esagerato [questo lo scrivo dopo la passeggiata disintossicante] ma in sostanza on sono riuscito a trovare una soluzione che mi soddisfi. Meglio vedere i miei nerds di riferimento, chissà…

La pagina di Bill the Lizard spiega chiaramente e giunge a una soluzione esemplare; copio che non si sa mai…

(define (average x y)
  (/ (+ x y) 2))

(define (average-damp f)
  (lambda (x) (average x (f x))))

(define tolerance 0.00001)
(define (fixed-point f first-guess)
  (define (close-enough? v1 v2)
    (< (abs (- v1 v2)) tolerance))
  (define (try guess)
    (let ((next (f guess)))
      (if (close-enough? guess next)
          next
          (try next))))
  (try first-guess))

(define (repeated f n) 
  (lambda (x) (cond ((= n 0) x) 
                    (else 
                     ((compose (repeated f (- n 1)) f) x))))) 

(define (log2 x)
  (/ (log x) (log 2)))

(define (nth-root x n)
  (fixed-point
      ((repeated average-damp (floor (log2 n)))
          (lambda (y) (/ x (expt y (- n 1)))))
      1.0))

s133

Una soluzione simile –non uguale– è quella che si trova in sicp-ex. Ma è senza spiegazione e senza aver visto prima Bill è ostica.

Gli altri? qualcuno manca, altri ripetono soluzioni mooolto smili, copiano?

:mrgreen:

Visto nel Web – 270

Ecco una nuova puntata della telenovela wisto nel Web 😀

cjg9a5zwgaaptcs

Donald Trump’s Twitter Account Is A Security Disaster Waiting To Happen
#:media #:sicurezza, spionaggio, virus
::: BuzzFeed

Untold Benefits of a Software Blog
vero 😀 per i blog seri; il mio è solo un hobby, ma vero anche per lui 😀
::: DEV

Untold Problems of a Software Blog – Bots
#:sicurezza, spionaggio, virus
::: DEV

People Keep Finding Coins in Their MacBooks and Nobody Knows Why
#:ditte
::: Gizmodo

2016 sees Internet Explorer usage collapse, Chrome surge
#:Web, Internet
::: Ars Technica

cvv33mow8aawgfs

Apple Could Finally Sell More Devices Than Microsoft In 2017
#:ditte #:sistemi operativi
::: Slashdot

NWO credit card number seems wrong
#:umorismo
::: f_126_ck

Is The C Programming Language Declining In Popularity?
#:linguaggi di programmazione
::: Slashdot

Python 3.6 is packed with goodness
#:linguaggi di programmazione
::: InfoWorld

We Never Said Ubuntu Phone Is Dead
#:dispositivi mobili
::: dcavedon

co8uv3xwgaalxmn

Creating Fractals with JavaScript
#:linguaggi di programmazione
::: ThePracticalDev

Nim v0.16.0 has just been released. Includes a brand new Nimble version!
#:linguaggi di programmazione

::: nim_lang

A curated list of hacks in IoT space so that researchers can address the
security vulnerabilities (hopefully)
#:artificial intelligence #:sicurezza, spionaggio, virus
::: OSFact

Plotting w/ #Python #Pandas Cheat Sheet!
#:tools, componenti software
::: enthought

1c41d05f-e91a-4999-aa83-94e1f5c2c463

New functional language builds on Haskell, Clojure, ML
Lux
#:lisp(s)
::: StephenPiment

luckily this inane name has an inane story behind it
Ya –chi?
#:ditte
::: johnregehr

List of static analysis tools, linters and code quality checkers for various programming languages
#:tools, componenti software
::: OSFact

.@smalltalkrenais shares his review of several common language ranking methods
#:linguaggi di programmazione
::: TechBeaconCom

Le migliori estensioni per LibreOffice
#:tools, componenti software
::: rewasp1973

sac170103

The End of Yahoo: Marissa Mayer To Resign; Yahoo To Change Its Name To Altaba
#:Web, Internet #:ditte
::: Slashdot

lambdascript: A new pure functional language built on the top of Python 3
è in alpha; poi proverò e relazionerò
#:linguaggi di programmazione #:programmazione funzionale
::: FunctorFact

A Prettier JavaScript Formatter
#:tools, componenti software
::: ThePracticalDev

Open-Source Animation Software Synfig 1.2 Released
#:tools, componenti software
::: dcavedon

Changes in Google Translate
#:Web, Internet #:programming, codice, snippet
::: CompSciFact

grulli

The psychological battle of big refactorings
#:programming, codice, snippet
::: ThePracticalDev

Pentagon Successfully Tests Micro-Drone Swarm
usi non proprio belli dell’intelligenza artificiale: le cavallette promesse dal #Fuffaro 😉
#:artificial intelligence
::: Slashdot

How bad is internet censorship in your country?
#:censura
::: wef

It is 2017 the oaths commence
#:lisp(s)
::: greghendershott

c2bjae8uqaan7sw

Compilers be weird
#:programming, codice, snippet
::: wallingf

Oooh. OCaml is a javascript-trend now. Or something
#:linguaggi di programmazione #:programmazione funzionale
::: yminsky

The lawyers Peter Thiel funded to destroy @Gawker are now suing the indispensable @Techdirt and could bankrupt them
#:censura
::: trevortimm

The Schiaparelli Lesson – Unusual and Faulty Conditions
#:programming, codice, snippet
::: johnregehr

Project Euler: problem 20
MfM rockz! 😀 assay
#:linguaggi di programmazione
::: Extended Reality

c2cqg3fweaawwx2

Opera Neon Turns Your Web Browser Into a Mini Desktop
#:Web, Internet
::: Slashdot ::: dcavedon

Resolutions for 2017: spend some nice hours on #Jogging #Deutch #Erlang #Pony #Nim #LISP #Lua #oCaml #Mesos #Kubernetes #aspnetcore #Togaf
da seguire per vedere cosa fa
#:linguaggi di programmazione
::: arialdomartini

Developing artificial intelligence using .NET
#:programming, codice, snippet
::: ThePracticalDev

Ubuntu’s Convergence Terminal App Is Looking Amazing
#:tools, componenti software
::: dcavedon

Looks like we’re right: the EU Commission’s new #copyright proposal would affect news links shared on social media
#:copyright #:censura
::: OpenMediaOrg

15965031_737432043080999_2105207922920541230_n

Diff So Fancy — The best-lookin’ diffs
#:tools, componenti software
::: ThePracticalDev

Systemd Sucks, Long Live Systemd
#:sistemi operativi
::: Donearm

First post: Unexpected Consequences of Self Driving Cars
#:innovazioni, futuro
::: erikbryn

Così Change.org vende le nostre email
#:sicurezza, spionaggio, virus
::: RadioProzac

Opera Won’t Be Bringing New Browser ‘Neon’ to Linux
#:Web, Internet
::: dcavedon

c2e3enoucaeebs9

The Zen of Missing Out on The Next Great Programming Tool
#:programming, codice, snippet
::: ThePracticalDev

Why I moved from Java to Dart
#:linguaggi di programmazione
::: ThePracticalDev

Fanculo twitter ma che cazzo mi frega dei tweet che potrei essermi perso?
#:social media
::: medeoTL

New laser based on unusual physics phenomenon could improve telecommunications, computing
#:innovazioni, futuro
::: ulaulaman

alla Biblioteca Civica #Torino Centro hanno un lab Linux disponibile per attività (corsi, lezioni, incontri)
#:free open source software
::: madbob

Trump’s Cyber Security Advisor Rudy Giuliani Runs Ancient, Utterly Hackable Website
#:sicurezza, spionaggio, virus
::: Slashdot

froggereal

Precisione arbitraria

archimede

Devo chiarirmi un po’ di cose relative al post sulla primalità di 2017. Come già detto (più volte) temo costantemente l’overflow (chissà perché non l’underflow?) ma ho buoni motivi: una volta l’infinito era subito dopo 3E5 (notazione esponenziale, nèh!, sta per 3*105); poi si è spostato a 2E9 che era più che sufficiente per (quasi) tutti i casi pratici.
I linguaggi seri (o seriosi?) continuano ad avere limiti anche se spostati ben lontano, vedi per esempio qui: Fundamental types.

Altri linguaggi invece hanno un approccio completamente diverso, seguendo la via indicata con il mio maestro e amico Archimede 😀 con il problema dei buoi del Sole.
Si tratta della precisione arbitraria, descritta sempre dalla Wiki, qui: Arbitrary-precision arithmetic.

Ho dato per scontato che sia usata per i linguaggi utilizzati, Calc, Python e Racket.

Per Unix|Linux risale (almeno) a dc; ma dc è ostico, usa la RPN, meglio il suo successore bc. Sotto Unix bc dipendeva da dc, con Linux sono indipendenti.

Un’altra implementazione antica della precisione arbitraria è nel Lisp; chissà qual è nata prima? Propendo per il Lisp:

According to the paper The Evolution of Lisp bignums were first added to MacLisp in 1970 or 1971, because some users doing symbolic math with Macsyma needed it. (link più avanti).

Python fino a poco tempo fa seguiva il C. Poi tutto è cambiato con la versione 3. Confesso che non lo sapevo, ho lanciato il 3.5.2 e ha funzionato: sono stato richiamato 👿
Googlando si trova la risposta, Python integer ranges:

Python has arbitrary precision integers so there is no true fixed maximum. You’re only limited by available memory.

In Python 2, there are two types, int and long. ints use a C type, while longs are arbitrary precision. You can use sys.maxint to find the maximum int. But ints are automatically promoted to long, so you usually don’t need to worry about it: sys.maxint + 1 works fine and returns a long.
sys.maxint does not even exist in Python 3, since int and long were unified into a single arbitrary precision int type.

Ah! ancora diverso da come credevo 😳

Con la versione 2.7 ho

n0

che con la 3.x diventa

n1

Semplice e interessante la definizione di bit_length() :

def my_bit_length(n):
    s = bin(n)
    s = s.lstrip('-0b')
    return len(s)

n3

difatti

n4

Caso particolare

n5

La precisione arbitraria è ovviamente più lenta e può capitare che:

Lisp automatically switches math to use a bignum package when it sees this kind of thing. But there is a limitation. Make your numbers big enough, and you may require more bits to represent it than there are atoms in the known universe. Then your system memory will probably be exhausted.

:mrgreen:

SICP – cap. 1 – procedure ritornate come valori – VIII – 57

nikon-small-world-mullein-flower

Post breve, continuo da qui l’esercizio interrotto.
Non ho ancora capito bene cosa sia successo. Anzi sì: da solo quando si adotta un’idea, giusta o sbagliata, non è facile giudicarla. E se te lo dicono i commenti in un post come quello di Bill ci devi pensare su, vero che sicp-ex racconta tutto ma sapete, cono lento di comprendonio 😦

Alla fine ho visto la luce (limitatamente all’esercizio corrente, temo) 😀
Ho anche googlato, ritrovando un blog vecchio (almeno credo di averne già parlato): Drewiki.
Ne ho trovato un altro, vecchio ma nuovo per me, Nisei Kimura.
Nisei (sapete com’è la storia dei nomi giapponesi, anzi di tutta quella parte del mondo, suppongo che sia il nome, su G+ si presenta così in inglese) sarebbe attivo anche su Twitter ma ho difficoltà linguistiche, cioè non sono capace a leggere 👿

Torno all’esercizio, sempre seguendo sicp-ex:

s132

Nota: ho assegnato un valore grande a dx per evidenziare il risultato della procedura n-fold-smooth.

:mrgreen: