1
00:00:04,800 --> 00:00:08,130
Bueno y llegamos a la segunda parte de las rutinas.

2
00:00:08,160 --> 00:00:14,850
Ahora vamos a ver el tema de channels que es muy interesante muy interesante hace que nuestras rutinas

3
00:00:14,880 --> 00:00:21,880
este paralelismo que estamos teniendo entre ejecución de funciones tome sentido.

4
00:00:22,070 --> 00:00:29,280
Los Channel son unos canales precisamente que permiten que una garrotín envía información hacia otra

5
00:00:29,280 --> 00:00:35,900
función hacia Main o hacia otra garrotín para que nos permite enviar información.

6
00:00:36,000 --> 00:00:45,070
Precisamente para que cada ejecución paralela que se esté desarrollando en el procesador pueda dialogar

7
00:00:45,070 --> 00:00:52,510
con otra enviando información si no lo que vamos a tener son islas que no nos van a servir porque nosotros

8
00:00:52,510 --> 00:00:59,590
vamos a necesitar información que se esté desarrollando y creando en una de las rutinas y sobre todo

9
00:00:59,590 --> 00:01:01,540
para poder tomar el control.

10
00:01:01,940 --> 00:01:09,460
Recuerden el ejercicio anterior donde la ejecución del programa terminaba de manera abrupta no importaba

11
00:01:09,460 --> 00:01:18,920
si nuestra rutina terminaba o no. Y eso nos provocaba un descontrol porque no podíamos tomar el control

12
00:01:19,160 --> 00:01:21,160
de la ejecución de nuestro programa.

13
00:01:21,200 --> 00:01:28,250
Vamos a ver nuestro Eger 15 vamos a ir a crearlo todos estos ejercicios yo los voy a dejar para que

14
00:01:28,250 --> 00:01:31,150
los puedan descargar y ya los tengan.

15
00:01:31,460 --> 00:01:34,780
Por si ahora no los están copiando no se preocupen.

16
00:01:34,850 --> 00:01:42,950
Al finalizar la primera sección del curso este primer gran capítulo del curso lo van a poder descargar

17
00:01:43,870 --> 00:01:50,030
por qué digo esto porque seguramente este curso va a crecer y se le van a agregar más secciones mucho

18
00:01:50,030 --> 00:01:53,920
más de carácter intermedio y avanzado.

19
00:01:54,020 --> 00:01:59,960
Así que no se preocupen si ahora les parece que el curso les faltan algunos temas muy importante que

20
00:01:59,960 --> 00:02:06,710
ustedes aprendan lo básico y lo intermedio que es lo que estamos viendo de lo que es programación y

21
00:02:06,710 --> 00:02:09,740
obtengan su diploma rápidamente.

22
00:02:09,950 --> 00:02:17,400
Vamos a crear nuestro Eger quinze muy bien nuestra carpeta y vamos a crear el Main.

23
00:02:17,590 --> 00:02:19,060
Punto.

24
00:02:19,100 --> 00:02:21,230
Vamos a copiar lo habitual.

25
00:02:21,230 --> 00:02:28,370
Bueno muy bien y aquí he traído dos paquetes el FMI y el Thain que es con lo que vamos a trabajar ahora

26
00:02:28,790 --> 00:02:37,640
y vamos a saber cómo crear un canal un canal en definitiva es un espacio de memoria de diálogo en el

27
00:02:37,640 --> 00:02:45,920
que van a dialogar distintas rutinas y cuando se aloje un valor en ese espacio de memoria la rutina

28
00:02:45,920 --> 00:02:54,590
que está pidiendo un valor a cambio va a actuar en consecuencia ese espacio de memoria es importante

29
00:02:54,590 --> 00:02:55,760
entenderlo.

30
00:02:55,760 --> 00:03:01,390
Ese espacio de memoria tiene que ser de un tipo de dato de un string un entero.

31
00:03:01,400 --> 00:03:07,580
En definitiva nuestro canal lo que va a transportar es una variable es un tipo de dato entonces para

32
00:03:07,580 --> 00:03:15,740
crear un canal vamos a poner Canal 1 vamos a usar el MEIC como lo hemos usado para crear tantas cosas

33
00:03:15,740 --> 00:03:23,330
tantos objetos y estructuras y vamos a decir que lo que vamos a crear es de tipo chán de tipo Channel

34
00:03:23,480 --> 00:03:30,920
canal ahora muy bien con esto solo no alcanza lo que tenemos que decirles bueno es ese canal ese espacio

35
00:03:30,920 --> 00:03:37,250
en memoria donde van a dialogar de un en un sentido y en el otro tiene que ser de un tipo de dato en

36
00:03:37,250 --> 00:03:46,640
este caso lo que vamos a hacer es crear un tipo de dato que pertenece al paquete Time que es Time duration

37
00:03:46,970 --> 00:03:54,560
muy bien este tipo de dato lo que va a hacer es calcular lo vamos a usar para grabar el cálculo de una

38
00:03:54,560 --> 00:04:02,510
diferencia entre distintos horas para saber cuanto cuantos segundos o milisegundos demoró la ejecución

39
00:04:02,780 --> 00:04:10,070
de una rutina para eso lo vamos a usar muy bien ahora vamos a hacer el llamado a nuestra Routin estamos

40
00:04:10,070 --> 00:04:19,540
en Main ya hemos creado nuestro canal vamos a hacer un llamado a bucle vamos a hacer un bucle y lo que

41
00:04:19,550 --> 00:04:26,810
vamos a pasarle de parametro es nuestro canal le estamos pasando de parametro del canal porque le estamos

42
00:04:26,810 --> 00:04:34,550
diciendo ejecuta lo que halla en la rutina bucle pero toma en cuenta que te estoy pasando un canal para

43
00:04:34,550 --> 00:04:44,120
dialogar con otros con otras rutinas muy bien debajo de esto vamos a colocar un simple FME llegué hasta

44
00:04:44,120 --> 00:04:48,780
aquí ahora vamos a ver por qué coloco esto.

45
00:04:48,830 --> 00:05:00,560
Bueno muy bien vamos a ahora a crear nuestra función bucle nuestra función bucle que recibe Canal Uno

46
00:05:01,660 --> 00:05:08,840
que es de tipo Chan yo aquí lo llamo Canal Uno lo podría llamar simplemente canal porque en realidad

47
00:05:08,840 --> 00:05:12,200
aquí le doy el nombre que quiero usar dentro de bucle.

48
00:05:12,260 --> 00:05:18,040
Voy a respetar el mismo nombre pero podría tener el nombre que ustedes quieran le estoy diciendo de

49
00:05:18,080 --> 00:05:27,320
qué tipo de dato es Canal Uno es un Channel y además también tengo que recordarle qué tipo de Chanel

50
00:05:28,170 --> 00:05:34,460
si aquí yo colocarã que es de tipo Integer String me daría un error porque lo que le estoy enviando

51
00:05:34,730 --> 00:05:41,780
es un canal de tipo Thain duration y tiene que recibir un tipo de duration tan duration.

52
00:05:41,780 --> 00:05:48,430
Ahora ya tengo la comunicación entre mi main y mi Buckler que es lo que vamos a hacer ahora.

53
00:05:48,440 --> 00:05:57,110
Ahora vamos a crear una varilla elinicio que es de tipo time now que lo que va a hacer es grabar la

54
00:05:57,110 --> 00:06:05,490
hora minuto segundo a milisegundos del momento en que entré a la rutina y vamos a hacer un favor que

55
00:06:05,510 --> 00:06:14,750
vamos a inicializar una variable y en cero y vamos a iterar mientras y tenga todos estos ceros o sea

56
00:06:14,750 --> 00:06:18,170
vamos a crear un bucle enorme.

57
00:06:18,460 --> 00:06:18,970
Por qué.

58
00:06:18,980 --> 00:06:26,150
Porque necesitamos mostrar que mientras este bucle está procesando en memoria yo voy a ir dialogando

59
00:06:26,570 --> 00:06:36,410
y voy a ir mostrando mensajes en pantalla para que vean ustedes el paralelismo cómo se está produciendo

60
00:06:36,790 --> 00:06:43,640
dos ejecuciones al mismo tiempo que voy a meter dentro de mí for absolutamente nada.

61
00:06:43,640 --> 00:06:53,060
No voy a hacer nada simplemente Quiteria y que vaya grabando en la variable con el valor del bucle.

62
00:06:53,160 --> 00:07:04,020
Ahora voy a crear una nueva variable que va a ser de tipo time now precisamente para capturar la hora

63
00:07:04,020 --> 00:07:10,870
de inicio y la hora de final y lo que voy a hacer es a Canal Uno.

64
00:07:11,190 --> 00:07:17,280
Ahora vamos a explicar esta simbología que estoy usando.

65
00:07:17,280 --> 00:07:25,530
Voy a grabar en Canal Uno en ese espacio en memoria que yo he reservado precisamente la diferencia entre

66
00:07:26,490 --> 00:07:35,380
final e inicio aquí me faltó lo vi muy bien sub sub es la función.

67
00:07:35,380 --> 00:07:37,080
Voy a dejar el Mago para que lo vean.

68
00:07:37,090 --> 00:07:41,920
Es la función que me retorna la duración y la duración.

69
00:07:41,920 --> 00:07:49,330
Es un tipo de dato fíjense que por eso hemos tenido que usar un tipo de dato Thain punto duration porque

70
00:07:49,330 --> 00:07:58,810
es un tipo de dato y ese tipo de dato se obtiene usando la función subHD que tiene que ver con el paquete

71
00:07:58,810 --> 00:07:59,670
Time.

72
00:07:59,680 --> 00:08:07,930
Aquí nosotros hemos creado un objeto de tipo they've y aquí lo mismo y lo que va a hacer esta función

73
00:08:08,380 --> 00:08:15,490
dentro de final voy a ejecutar la función SOV y lo va a comparar con el inicio y me va a devolver minutos

74
00:08:15,490 --> 00:08:20,450
segundo horas lo que sea la duración correcta de la ejecución.

75
00:08:20,500 --> 00:08:21,510
Qué logró con esto.

76
00:08:21,520 --> 00:08:32,260
Con esto logró que yo entro en un bucle muy pesado muy pesado y cuando termina el bucle me va a grabar

77
00:08:32,260 --> 00:08:34,700
en un canal.

78
00:08:35,050 --> 00:08:45,070
El valor ahora así todo cuando ejecutemos esto si yo no estoy desde otro lado pidiendo información en

79
00:08:45,070 --> 00:08:48,960
el canal si no estoy pidiendo información del canal.

80
00:08:49,000 --> 00:08:52,830
La ejecución del programa termina y ahí no ha pasado nada.

81
00:08:52,870 --> 00:08:53,350
Por qué.

82
00:08:53,350 --> 00:09:00,670
Porque simplemente yo he grabado en un espacio en memoria un valor pero para que esto sea realmente

83
00:09:00,670 --> 00:09:10,300
como un aguay de lo que tengo que hacer es decirle al sistema a mi programa cuidado esperemos a que

84
00:09:10,420 --> 00:09:14,550
el bucle me devuelva un valor en el Canal Uno.

85
00:09:14,740 --> 00:09:20,530
Eso va a detener la ejecución del programa hasta que se logre ese valor.

86
00:09:20,530 --> 00:09:27,130
Es como esto es un diálogo cuando yo le digo al sistema que va a haber alguien que va a estar a la espera

87
00:09:27,130 --> 00:09:29,590
de un valor en esta posición de memoria.

88
00:09:29,590 --> 00:09:33,760
El programa se detiene hasta que esta rutina ha terminado.

89
00:09:34,120 --> 00:09:35,530
Cómo se maneja eso.

90
00:09:35,530 --> 00:09:40,310
Nosotros hemos visto que aquí le asignamos un valor al Canal Uno.

91
00:09:40,330 --> 00:09:42,010
Esta es la manera.

92
00:09:42,100 --> 00:09:50,980
Esta es la manera con un menor signo de y con un guion menor guión lo que estoy haciendo es asignarle

93
00:09:51,100 --> 00:09:55,000
al Canal Uno el valor resultante de esta función.

94
00:09:55,360 --> 00:10:02,550
Ahora cómo es la sintaxis para decir que estoy escuchando el canal uno bueno.

95
00:10:02,740 --> 00:10:08,920
Aquí vemos que el Canal Uno está a la izquierda y lo que le mueve al canal está a la derecha para decir

96
00:10:08,920 --> 00:10:15,110
que estoy escuchando el Canal Uno se invierten los roles se invierten las posiciones.

97
00:10:15,190 --> 00:10:22,990
Entonces aquí lo que voy a hacer es por ejemplo una variable llamada mcg y le voy a decir que va a ser

98
00:10:22,990 --> 00:10:27,560
el resultado de escuchar Canal Uno.

99
00:10:28,080 --> 00:10:35,230
Fíjense ahora Canal Uno está del lado derecho entonces lo que estoy esperando aquí es que Canal Uno

100
00:10:35,230 --> 00:10:41,920
tenga un valor y se graben en mcg hasta que esto no ocurre.

101
00:10:41,920 --> 00:10:46,890
El programa no continúa esto es el famoso Aguaytía.

102
00:10:47,230 --> 00:10:53,900
Esto está esperando es una promesa que hasta que no se cumplió no sigo con el sistema.

103
00:10:54,220 --> 00:11:02,130
Aquí estoy deteniendo la ejecución y una vez que yo ya recibí un valor en Canal Uno voy a ser un FFT

104
00:11:04,500 --> 00:11:13,750
y voy a mostrar por pantalla el resultado estos se van a dar cuenta cuando ahora lo ejecutemos vamos

105
00:11:13,750 --> 00:11:23,550
a ir a nuestro Eger 15 Eger 15 voy a hacer un corral de Main punto.

106
00:11:23,830 --> 00:11:26,210
Qué es lo que nos va a aparecer primero.

107
00:11:26,290 --> 00:11:29,680
Muy simple el mensaje llegue hasta aquí.

108
00:11:29,680 --> 00:11:36,280
Fíjense que yo envié a ejecutar el bucle y el bucle todavía lo estamos esperando porque es un bucle

109
00:11:36,280 --> 00:11:44,170
muy pesados tiene que iterar cientos de millones de veces o mil millones de veces entonces mientras

110
00:11:44,170 --> 00:11:46,490
está esperando la ejecución del bucle.

111
00:11:46,720 --> 00:11:53,880
Yo como es programación asíncrona el sistema continuó pero no terminó la ejecución.

112
00:11:53,920 --> 00:11:56,260
Aquí no me ha mostrado nada en el McG.

113
00:11:56,410 --> 00:11:56,860
Por qué.

114
00:11:56,860 --> 00:12:05,830
Por qué ahora el sistema está detenido aquí esperando que esto termine vamos a ver va a demorar un poquito

115
00:12:05,960 --> 00:12:14,490
le he puesto muchos ceros seguramente demore 60 segundos o más así que voy a pasar un poquito el video.

116
00:12:14,560 --> 00:12:19,180
Bueno ahí terminaba ha demorado un minuto 24 segundos.

117
00:12:19,180 --> 00:12:20,640
Esta es la respuesta.

118
00:12:20,650 --> 00:12:25,790
Este es el formato que nos devuelve el Talentum punto duration.

119
00:12:26,140 --> 00:12:36,160
Hay que ver el minuto segundos y hasta toda esta cantidad enorme de segundos de milisegundos centésimas

120
00:12:36,160 --> 00:12:38,340
de segundo y demás.

121
00:12:38,340 --> 00:12:45,820
Bueno esto es la comunicación entre channels esto es algo maravilloso nos ha hecho la vida mucho más

122
00:12:45,820 --> 00:12:47,290
fácil Bogut con esto.

123
00:12:47,500 --> 00:12:54,460
Fíjense la simplicidad que tiene no es comparable con ningún lenguaje que ustedes conozcan JavaScript

124
00:12:54,820 --> 00:13:01,840
ha hecho un gran trabajo pero lo ha complicado demasiado y con GOW tenemos la vida mucho más resuelta

125
00:13:01,840 --> 00:13:09,120
y mucho más sencilla así que nos vemos en el próximo capítulo y vamos viendo mucho más del lenguaje.
