Con Python, tuve que trabajar desde la desesperanza: ML, redes neuronales, secuencias de comandos, fue en eso que fue más conveniente. Pero el tiempo pasa y la ansiedad por la velocidad de su código lo empuja a algo más rápido y confiable.
La tarea de portar el marco de la GUI fue dolorosa, porque mi Unigui universal funcionaba solo desde Python y era universal solo en teorĂa. En Ă©l se desarrollĂł una API extremadamente lacĂłnica, que deberĂa haberse conservado en la versiĂłn Go. Además, la masa de automatismo para generar los datos necesarios no estaba sujeta a portabilidad, ya que Go carece de control de orden de compilaciĂłn, preprocesador, metaprogramaciĂłn, lo que garantiza una experiencia Spartan complicada.
La primera dificultad en la que me metĂ fue la imposibilidad de asignar directamente campos promocionados (anidados) en y solo en el inicializador de estructura. Si la estructura tiene una estructura anidada sin nombre, entonces se puede acceder a sus campos desde la raĂz externa en todas partes, excepto en el inicializador. Por lo que, entre otras cosas, toda la idea de los campos anidados como la sustituciĂłn de la jerarquĂa se ha vuelto dudosa y engorrosa de usar. Requerir que el usuario escriba inicializadores anidados largos con tipos innecesarios serĂa el colmo de la indecencia. Todas las estructuras de la GUI se han vuelto completamente planas, independientes, aunque existe una jerarquĂa clara en Python.
, Go , . , - , , , , , “ API”. , , . , , . . Type_ a Type(…) *Type_. , , Go .
Go Json . nil ( ), nil nil a / [ ] . , — . k, Google, , == nil, = make(0, []Any). , == nil, reflect != nil. reflect.ValueOf(ptr).IsNil() , , true! , ..
hash. . . . . .
, ? , , Any — interface{}. ! , 100% — . “ , !”
MyField int json:"myfield"
, JSON . — - . ? , , — , , . .. !
Dart _ . , Go Dart- , . . . , Google , “” . , , , , ?
, map/filter/.. , RemoveAtIndex, , 1.17 , , , .
? ! fmt.Sprintf. - — , , — “ ”.
.
— . , . , , ML- Go…
/. , , Python-a Go — . — , , , . Python - .
/ — Go. github ( ), . , Visual C++ ~20 , Edit & Continue . , Edit & Continue Go VS Code , , . --. ..
. . Go. , . , , , — .
. , Go , 20% . 70% reflect . . , . .
. ( 8000 ) Python Go.
Go:
package main
import . "github.com/Claus1/unigui-go"
func screenTest(user* User)* Screen_{
table := Table("Videos",0, nil, []string{"Video", "Duration", "Links", "Mine"},
SeqSeq(Seq("opt_sync1_3_0.mp4", "30 seconds", "@Refer to signal1", true),
Seq("opt_sync1_3_0.mp4", "37 seconds", "@Refer to signal8", false)))
cleanButton := Button("Clean table", nil, "")
selector := Select("Select", "All", nil, []string{"All","Based","Group"})
block := Block("X Block", Seq(cleanButton, selector), table)
block.Icon = "api"
return Screen(block)
}
func main(){
//register screens
Register(screenTest, "Main", 0, "insights")
Start()
}
Python:
from unigui import *
name = "Main" #name of screen to show
icon = 'blur_linear' #MD icon of screen to show
order = 0 #order in the program menu
table = Table('Videos', 0, headers = ['Video', 'Duration', 'Links', 'Mine'],rows = [
['opt_sync1_3_0.mp4', '30 seconds', '@Refer to signal1', True],
['opt_sync1_3_0.mp4', '37 seconds', '@Refer to signal8', False]
])
block = Block('X Block',
[
Button('Clean table'),
Select('Select', value='All', options=['All','Based','Group'])
], table, icon = 'api')
blocks = [block] #what to show on the screen
start('Test app')
¿Seguiré usando Go? ¿Dónde voy a bajar del submarino ... y realmente quiero que Crystal, Nim y otros lenguajes simples y avanzados entren en producción y le den a Go un péndulo? Hasta ahora, lamentablemente, no veo una alternativa en el nicho de la producción ligera para el desarrollo de software productivo. ¡Paz!
Enlaces para curiosos:
→ Ir
→ Python