You are here

Ingegneria del Software

Intelligenza Artificiale - Una profonda analisi di Roberto Quaglia

fonte: https://luogocomune.net/30-scienza-e-tecnologia/6253-la-falsa-singolarit%C3%A0-tecnocratica-contro-la-vera-singolarit%C3%A0-tecnologica

La falsa singolarità tecnocratica contro la vera singolarità tecnologica

Articolo tratto dal II volume di Visione TV, intitolato “Il moderno prometeo artificiale

di Roberto Quaglia, 5 Giugno 2023

Quando si profila una tempesta mai vista all'orizzonte, hai voglia a chiuderti in casa e nasconderti sotto le coperte: la tempesta arriverà comunque perché la natura ha deciso così. Abbiamo messo in moto quel vortice di algoritmi che chiamiamo intelligenza artificiale e il turbine ora sta rapidamente montando alle dimensioni di uragano, ed è una tempesta che ci travolgerà inevitabilmente perché ormai così è nella natura delle cose. Buona fortuna a tutti!

Bene, dopo questa umile premessa, in effetti una promessa, proviamo ad affrontare uno degli argomenti più ostici di questo tempo ossia la creazione da parte nostra di una intelligenza artificiale in grado di risolvere tutti i nostri problemi, oppure - chi lo sa - di distruggerci e magari anche estinguerci.

Purtroppo, in gran parte delle discussioni a riguardo si dicono un sacco di scemenze, frutto del fatto che nessuno sa di che cosa si stia parlando. Probabilmente, nemmeno io lo so bene. E ad ascoltare gli stessi progettisti di queste intelligenze artificiali scopriamo con sconcerto che neppure loro lo sanno con esattezza. Ma il problema vero non consiste tanto in ciò che non sappiamo, quanto piuttosto in ciò che non sappiamo di non sapere. È riguardo a questo che ovunque si esagera.

A beneficio degli ultimi arrivati sull'argomento, facciamo quindi un breve riassunto delle puntate precedenti. Già nel 1950 Church e Turing formularono l'ipotesi che una macchina calcolatrice relativamente semplice sarebbe in grado di emulare un cervello umano, a patto di disporre di tempo e memoria infiniti. Ovviamente, questi non sono infiniti, per lo meno dalle nostre parti, quindi, è ovvio che dobbiamo scordarci la semplicità.

Callbacks disponibili in Codename One

In riferimento al corso introduttivo sulla programmazione multipiattaforma con Codename One da me precedente pubblicato, per promemoria personale e per utilità altrui stilo qui una lista dei callback generici disponibili, utilizzabili con espressioni lambda.

SuccessCallback<T>
FailureCallback<T>
OnComplete<T>
AsyncResult<V> (implements both SuccessCallback and FailureCallback)
LazyValue<T> (accepts multiple Object arguments and returns T)
Runnable
RunnableWithResult<T>
RunnableWithResultSync<T>

Codename One Freelancer (Francesco Galgani)

I'm a Full Stack Java Cross-Platform Codename One Developer (iOS, Android, Web-App).

CodenameOne FreelancerYou can download here my resume - See my email here - My page on Fiveer: https://www.fiverr.com/jsfan3/crossplatform-codename-one-app-for-ios-android-webapp

My main skills are:

  • Java (referring to Codename One and Spring Boot APIs)
  • Codename One (client side)
  • Spring Boot (server side)
  • GNU/Linux (both locally and remotely on VPS)

My main previous jobs were:

  • Cross-Platform Mobile App developer, specialized in Codename One, from 2017 to 2020, employed by a small startup
  • Web Developer employed by the International Telematic University Uninettuno, from 2011 to 2018, as creator, developer and administrator of the Students Community.

I'll:

  • discuss the app requirements with you;
  • create an Android app and an iOS app;
  • create a Web-App (Javascript), as extra service;
  • the Basic package includes client-only code, the Standard and Premium package also server-side code (if required);
  • create a custom app from scratch or convert an existing responsive web-site to app;
  • be available in office-hours, weekdays, Italy timezone;
  • allow you to test the app during the development;
  • fix code bugs even after the app is finished (if any bug will be discovered);
  • publish the app backend server on a Ubuntu Server VPS as extra service;
  • send the app to the stores as extra service and with your Google Play account and Apple Developer account; however, after the submission, the stores require time to publish the app that don't depend by me.

I won't:

  • work on unclear, not discussed or too broad requirements;
  • assume any responsibility if the app will be rejected by the stores; however, I'll try to help you in that case;
  • pay your VPS cost, your Google Play account cost, your Apple Developer account cost or any third-party service cost.

Requirements:

Please give me a list of the requirements (as LibreOffice file or Word file). You can attach UI mockups. Each requirement must be as precise as possible. For example: "The tap on the Button xxx will do...", "I want that the app will be available in the languages: ...", "My target device are smartphones only", "I want that the user interface of the first screen is ...", "Native fonts are fine", "I want this img, this text and these buttons", etc.

Programming languages and source codes:

I use mainly Java for the client (the mobile app) and for the backend server.
The client is developed using "Codename One", the server using "Spring Boot".

As extra service, I can give you the source code both of the client and the server, they are Netbeans projects. If you need Android Studio and/or Apple Xcode sources, I can give you also them, but consider that they are the result of the transcompilation of the Codename One project.

More info:

See my page on Fiverr: https://www.fiverr.com/jsfan3/crossplatform-codename-one-app-for-ios-android-webapp
We can also agree a custom offer if you need.

Francesco Galgani,
April 12, 2020

Components disponibili in Codename One

In riferimento al corso introduttivo sulla programmazione multipiattaforma con Codename One da me precedente pubblicato, per promemoria personale e per utilità altrui stilo qui una lista dei Component disponibili per creare le interfacce grafiche.

Il motivo per cui ritengo utile scrivere questa lista è che, nella Developer Guide di Codename One, sez. "The Components of Codename One", non tutti i Component vengono trattati. Aggiornerò questa lista se mi accorgerò di essermi dimenticato qualcosa o se nuovi Component saranno aggiunti alle API.

    Generics
        Component, see also ComponentSelector and Lead Component
        Container, see also Layouts and Safe Areas
        InterFormContainer
        Form, see also "Toolbar", "Right Side Menu" and "Search Mode"
        PeerComponent
        InstantUI
        UIFragment
        CodeRAD
    Containers
        Accordion
        ComponentGroup
        InfiniteContainer
        SwipeableContainer
        SplitPane
        Tabs
        Table
    Labels and Images
        Label
        SpanLabel
        RichTextView (revisited)
        ImageMapContainer
        ImageViewer
        ScaleImageLabel
        FloatingHint
    Buttons
        Button
        SpanButton
        MultiButton
        SpanMultiButton
        ScaleImageButton
        FloatingActionButton (see also FAB as a badge)
        ShareButton
    Toggles
        CheckBox
        RadioButton + ButtonGroup
        OnOffSwitch
        Switch (OnOffSwitch replacement)
    Toggle Lists
        ButtonList
        SwitchList
        CheckBoxList
        RadioButtonList
    Selection
        ComboBox
        Picker
    Text Fields
        TextField
        TextArea
        ClearableTextField
        AutocompleteTextField, and "AutocompleteTextField with images"
        see also: Validator, UIBinding, Lightweight Text Selection
    InputComponent & TextModeLayout
        TextComponent
        TextComponentPassword
        AutoCompleteTextComponent
        PickerComponent
    Media
        MediaPlayer, see also code examples
        AudioRecorderComponent
    Maps
        MapComponent
        MapContainer (Native Maps), see also "Map Component Positioning Revisited"
    Dialogs/Prompts
        InteractionDialog, see also "Picking a Dialog Type"
        Dialog, see also "Popup Dialog"
        Sheet, see also "New Sheet Positioning"
        ToastBar
        Progress + ConnectionRequest, see also "Alternative way to show upload percentage"
    Progress
        InfiniteProgress
        Slider
        SliderBridge + Slider + ConnectionRequest
        CircleProgress
        LoadingTextAnimation
    Advanced
        BrowserComponent
        SignatureComponent
        Calendar, see also Calendar CN1Lib
        Tree
        FileTree
        RSSReader
    Charts 
        ChartComponent
        BarChart
        BubbleChart
        CombinedXYChart
        CubicLineChart
        DialChart
        DoughnutChart
        LineChart
        PieChart
        RadarChart
        RangeBarChart
        RoundChart
        ScatterChart
        TimeChart

Francesco Galgani,
ultimo aggiornamento 18 maggio 2020

Elenco di risorse (perlopiù gratuite) per sviluppatori

In riferimento al corso introduttivo sulla programmazione multipiattaforma con Codename One da me precedente pubblicato, segnalo un elenco di risorse per noi sviluppatori divise per categorie:

https://github.com/ripienaar/free-for-dev

Ricordo che tutto ciò che è utilizzabile tramite un'interfaccia REST è utilizzabile con Codename One.

Francesco Galgani,
6 marzo 2020

Nel 2020 Java 8 è la versione di Java più utilizzata ed è al terzo posto tra i linguaggi di programmazione

In riferimento al corso introduttivo sulla programmazione multipiattaforma con Codename One da me precedente pubblicato, qualcuno potrebbe rimanere perplesso sulla mia scelta di Java 8 sia lato client che lato server.

Orbene, secondo JVM Ecosystem Report 2020, attualmente Java 8 è la versione di Java più utilizzata in assoluto (64%), a seguire Java 11 (25%). Le altre versioni di Java sono quasi inutilizzate. Tra l'altro, Java 8 continua a ricevere aggiornamenti. In ambito aziendale Java 8 è considerato una scelta ben collaudata e quindi affidabile.

Non solo: attualmente Java è tra i primi tre linguaggi di programmazione più utilizzati in assoluto, come riportato da The RedMonk Programming Language Rankings: January 2020.

Java 8 continua a confermarsi, quindi, un'ottima scelta.

Francesco Galgani,
6 marzo 2020

È possibile il reverse engineering di un'app fatta con Codename One per risalire al codice sorgente?

> INDICE DEL CORSO

Avvertenza: questa pagina non rientra nel modulo introduttivo del corso. E' rivolta a chi ha già un po' di esperienza con Codename One.

Argomenti:


È possibile il reverse engineering di un'app fatta con Codename One per risalire al codice sorgente?

Risposta breve: no, in generale la protezione del codice offerta da Codename One è robusta (nel proseguo di questo articolo analizzo le app Android, iOS e Javascript fatte con Codename One), ma ciò non preclude comunque ad un attaccante di studiarsi quel che riesce a decompilare e di provare a modificarlo. Crackers e hackers sono molto appassionati nella loro "professione" e sanno già molto più di quanto si possa insegnare loro: sono capaci di starsene per ore e giorni davanti a un computer finché non riescono a impadronirsi di un sistema. Non sarebbe la prima volta che un ragazzo o una ragazza adolescenti riescano a entrare in sistemi iper-protetti. Neanche i big dell'informatica sono riusciti a prevenire importanti fughe di dati riservati.

Risposta lunga: guardando più in dettaglio la questione, con specifico riferimento alle app fatte con Codename One, posso osservare che:

Negli incasinamenti di codice… trovare una direzione

> INDICE DEL CORSO

Avvertenza: questa pagina non rientra nel modulo introduttivo del corso. E' rivolta a chi ha già un po' di esperienza con Codename One.

How to write good codeDurante le nostre attività di coding, è normale dover modificare il codice scritto da noi (anche a distanza di tempo) o da altri per aggiungere, togliere o modificare funzionalità, correggere bug, tentare migliorie. Il problema è che spesso è difficile capire da che parte iniziare e come proseguire, specialmente su progetti complessi fatti da centinaia di classi e da una moltitudine di metodi interagenti tra di loro. Provo qui a riunire alcune mie riflessioni e indicazioni, riferite alle app multipiattaforma fatte con Codename One, con l’auspicio che almeno uno dei punti sotto indicati possa tornare utile a qualcuno.

In futuro potrei ritoccare questa lista o aggiungere suggerimenti che qualcuno dei miei lettori vorrà condividere. Per il momento non inserisco esempi di codice, questa lista è una sorta di brainstorming personale che regalo ai miei lettori.

Sviluppare app multipiattaforma - Indice del corso introduttivo

Questo è un corso introduttivo molto discorsivo, per chi parte da zero, con esercizi finali, principalmente focalizzato su Codename One.
E' un corso in divenire, nel quale raccolgo articoli scritti in momenti diversi. Probabilmente pubblicherò altri articoli.

Presentazione di questo corso (pubblicata sul blog di Codename One):
"Preliminary course for mobile cross-platform development with Java and Codename One"

Presentazione dell'autore:
"Le mie attività di sviluppatore e di didattica del software".

Modulo Introduttivo

Approfondimenti

Riflessioni varie

Notizie

Sviluppare app multipiattaforma - Le basi: l’algoritmo e il codice (quarta parte)

> INDICE DEL CORSO
< Articolo precedente: Sviluppare app multipiattaforma - Le basi: l’algoritmo e il codice (terza parte)

Creazione di un'app con Codename OneNel precedente articolo, abbiamo visto quel che occorre, a livello di hardware, software, servizi cloud, manuali, ecc., per iniziare lo sviluppo di app multipiattaforma con Codename One + Java.

Qui do per scontato che tu abbia un'installazione di Netbeans + Oracle Java 8 + Codename One plugin, come da precedenti indicazioni. Riprendo il problema già visto nella seconda parte, quello del calcolo dello spazio percorso da un'automobile, per trasformarlo in un'app molto semplice, per Android e iPhone, qui mostrata nella foto.

Argomenti:


Idee di base della programmazione ad oggetti e il nostro problema dell'automobile

Ci tengo a sottolineare il carattere introduttivo di quanto segue, rimandando alle già citate guide per gli opportuni approfondimenti.

Pages

Subscribe to Ingegneria del Software