last day (16 days later) » 

8:12 PM
Ya están todos? xd
 
Bien, si te sigo C no es POO
 
si !!!
 
Lo de C es un ejemplo que no sorprende a nadie, pero vamos a ver otros ejemplos que harán abrir su mente y por qué odio el término "POO" xd
Antes de alguien definiera la POO, ya existían lenguajes basados en el concepto "objeto" , un ejemplo es SmallTalk
 
Smalltalk es un lenguaje reflexivo de programación, orientado a objetos y con tipado dinámico. Por sus características, Smalltalk puede ser considerado también como un entorno de objetos, donde incluso el propio sistema es un objeto. Metafóricamente, se puede considerar que un Smalltalk es un mundo virtual donde viven objetos que se comunican entre sí, mediante el envío de mensajes. Un sistema Smalltalk está compuesto por: Una Máquina virtual (Virtual machine) Un archivo llamado "Imagen", que contiene a todos los objetos del sistema Un lenguaje de programación (también conocido como Smalltalk)…
 
Smalltalk está orientado a objetos, pero no es POO
eso es porque POO es más que sólo manejar el concepto "objeto"
 
8:15 PM
Pero dice "Orientado a objetos"
va
 
C está basado en objetos
xd
bien a lo que voy es que la POO define más cosas que sólo el concepto de "objeto"
JavaScript por ejemplo, tiene objetos, no obstante Javascript no es POO
 
O.O
 
Muchos que inician la POO y también los que ya llevan tiempo en ella, creen que la POO es la única forma de manejar objetos, pero no es cierto.
La POO define varios conceptos no relacionados con el término "objeto", es decir, dan un ambiente de cómo se debe trabajar con el término, una implementación particular.
La POO establece los siguientes conceptos {
1. Objeto
2. Clase
 
Si
Un objeto es una instancia de una clase por lo que tengo entendido
 
sí.
ahora hagamos una pausa aquí.
cuando yo voy a decir "orientado a objetos", no me voy a referir a "POO"
vale?
La Poo es un modelo de programación orientado a objetos basados en clases
C#, Java, C++, son lenguajes orientados a objetos pero basados en clases
 
8:21 PM
oka
 
Javascript, TypeScript, y en general Ecmascript son lenguajes orientados a objetos basados en prototipos
 
Claro
 
@EduenSarceño acotando javascript es multiparadigma
 
Pensé siempre que eran todos lo mismo ...
 
No son lo mismo, y es por eso que muchos lenguajes tienen sus haters
porque cada uno tiene una manera filosofica distinta de manejar objetos
 
8:23 PM
JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos,[3]​ basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas[4]​ aunque existe una forma de JavaScript del lado del servidor(Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio…
JavaScript
Información general
Paradigma Multiparadigma, programación funcional,1​ programación basada en prototipos, imperativo, interpretado (scripting)
 
x-rw "multi-paradigma" es otro término erroneo
hay tantos términos en la programación que no definen nada.
de hecho, la programación solo tiene dos paradigmas, imperativo y declarativo
 
Que significan cada uno ?
no se nada sobre eso
 
imperativo como su nombre indica, da ordenes
Escribir "hola mundo"
retornar 0
 
@EduenSarceño programacion funcional es otro paradigma
 
nooooo
la programación funcional es un modelo.
la programación funcional establece que la unidad lógica mínima se llama "función"
y es mas, solo indica su nombre xd
C es un lenguaje funcional
por qué?, por que defines funciones
Basic es un lenguaje procedimental
 
8:26 PM
@EduenSarceño yo decia porque se requiere un mayo nivel de abstraccion(no existen estados)
 
no hay diferencia alguna entre la programación funcional y la programación procedimental
sí existen estados
vamos por partes xd
Les digo, existen varias conceptos erroneos y que se translapan
la programación funcional es otro concepto igual que la POO
la programación funcional debería ser cualquier lenguaje que maneje el concepto "función" pero vamos a ver que no es el caso, sucede lo mismo que con la POO
 
@EduenSarceño un ejemplo de programacion declarativa ? Cual seria ? que lenguaje ?
 
La programación declarativa no ordena, simplemente da un contexto y el sistema de tiempo ejecución es el encargado de resolverlo
 
Ahi busque SQL, Haskell, claro claro lo "contrario" de imperativa basicamente...
 
un ejemplo de programación declarativa sería SQL
sí pero vamos a explicar por qué son declarativos
SQL es declarativo porque sólo indicas qué datos quieres extraer, y qué quieres hacer con ellos
jamás indicas dónde se localizan, ni te preocupas de su representación interna
otros lenguajes declarativos son aquellos basados matemáticamente
digo basados matemáticamente porque no quiero solapar el concepto "funcional"
 
8:31 PM
Claro claro, entiendo
 
los lenguajes basados matemáticamente definen como unidad lógica el término "funcion"
 
perfecto
 
por qué estos lenguajes son declarativos? porque ellos describen un elemento a través de un descriptor
por ejemplo
x^2 + 1 = 1
la anterior fórmula es un descriptor, porque describe un elemento a partir de unas condiciones dadas
 
va va entendido
 
yo digo aquí "x" es cualquier elemento que cumpla "x^2 + 1 = 1"
yo basicamente puedo seguir trabajando con "x" sin saber su valor preciso
y el que se encarga de resolver el descriptor es el propio sistema
en este caso haskell es un lenguaje de este tipo.
 
8:34 PM
claro claro
 
Retornando a la POO.
 
si, jajaja nos fuimos por las ramas
 
La POO define los dos términos "objeto" y "clase"
vamos a defenir cada uno
La decripción que da la POO es la siguiente "Objeto = instancia de una clase@
dice mucho eso verdad? x
xd
 
no dice nada la verdad jajajajajaj
 
Y sí, yo soy hater de la la programación orientada a objetos por que es un asco dando definiciones
vamos a redefinir el término "objeto"
 
8:37 PM
instancia de clase se me hace a estado de clase
o nada que ver ? xD
 
Yo voy a definir "objeto" de la siguiente forma
Objeto es una memoria segmentada estrategicamente de tamaño variable
 
puf
que definicion
nada que ver con instancia de clase...
resumiendo, una variable ?
 
sí y no
 
una variable con tamaño variable ?
 
se refiere al tamaño en memoria
dos objetos pueden ocupar dista magnitud en memoria
distinta*
vamos a ver por qué "instancia de una clase" xd
 
8:41 PM
claro claro
te sigo
 
básicamente un objeto es un arreglo de bytes con valores particulares
el objeto va estrechamente relacionado a su definición.
Llamamos a la definición del objeto "Clase"
La definición del objeto, indica como se segmenta el arreglo, a cada segmentación se le denomina "propiedad"
muchos lenguajes establecen como objeto aquél que tenga definición
por eso el "instancia de una clase"
por qué hacer esta distinción dirás tú?
porque hay "tipos" básicos que no son divisibles
Los tipos básicos son aquellas unidades que el lenguaje trata como indivisibles, y no los considera objetos por que no existe definición de sus propiedades (ya que no se segmentan, no tienen propiedades)
Por ejemplo en C y Java, existen los tipos indivisibles "int"
en Java no podemos segmentar a un valor "int" sin utilizar operaciones matemáticas directamente
en C no obstante, sí podemos hacerlo, pero tendríamos que definir un objeto
union {
char byte1;
char byte2;
char byte3;
char byte4;
}
ah espera xd
union {
struct bytes {
char byte1;
char byte2;
char byte3;
char byte4;
};
int valor
}
básicamente en C, dividimos lógicamente los 4bytes del tipo int.
es decir a pesar que el tipo es un int (4bytes), nosotros vamos a darle otro valor semántico.
 
Me estaba preparando un cafe, claro claro entiendo bien el punto
va
 
vale
hasta ahora ya definimos "objeto" y "clase"
pero la POO pone mas restricciones a estos términos
Una Clase para la poo es aquella que define la segmentación de un objeto, a estas segmentaciones se les llama "propiedades", y aparte, también definen qué se puede hacer con dichas propiedades, a estas unidades lógicas las llama "métodos"
La POO también establece que las propiedades deben tener una particularidad íntrinsica llamada "visibilidad", una propiedad puede ser de visibilidad "publica, privada o protegida"
Lo mismo sucede con los métodos de la Clase, también pueden ser publicos, privados o protegidos.
 
9:00 PM
Si, public ,private, protected
 
Todas las implementaciones actuales de los lenguajes POO no manejan la visibilidad en código
 
como ?
 
El interprete no sabe qué método es publico, privado o protegido
todas las comprobaciones de visibilidad se hacen en tiempo de compilación
 
claro
sisi, el usuario no ve la visibilidad de de las implementaciones ?
 
el usuario sí las ve, de hecho el compilador mostrará errores de usar métodos que no debe
al usar*
por ejemplo un usuario puede estar accediendo a una propiedad privada de un objeto, el compilador lanzará un error y no producirá código alguno.
 
9:03 PM
claro, sisi entiendo
 
ahora vamos a ver las definiciones de cada visibilidad
La visibilidad publica no tiene restricción alguna respecto a quién puede o no utilizar el método/propiedad
La visibilidad protegida sí tiene restricción, establece qué sólo la clase original y las que deriven de ésta tendrán acceso a la propiedad/método
La visibilidad privada establece que sólo la clase original que tendrá acceso a la propiedad/método
 
este chat es oro
 
claro va, si algunas de esas definiciones las tenia claras, excepto la protegida no sabia bien como era
 
Sí, de hecho la protegida en código no existe xd
la visibilidad privada sí existe, sencillamente no se expone la segmentanción de éste xd
 
jajajaja yo pense que era con codigo la protegida :v
 
9:09 PM
hahaha no
de hecho en C++ puedes acceder a métodos protegidos
pero debes editar el binario
o bien, desactivar la comprobación de visibilidad en la fase de compilación (ningún compilador actual lo permite)
 
@EduenSarceño que bueno que aclaras ese punto
 
Lo digo porque todos creen que la POO es segura
Pero no es cierto
Aunque el modelo defina visbilidades aparentemente seguras, no existen mecanismos actuales para lidear con ella en tiempo de ejecución, y de dar soporte a ello tendría una gran pérdida de rendimiento.
El modelo es abstracto nunca habla de implementación, pero yo considero que es más sencillo hablar de implementación a abstracción porque es más intuitivo
 
claro, va.
 
Bien la POO también creó otros conceptos
El concepto "interfaz" y el concepto de "trait" (este es nuevo)
 
trait wtf ! xd
 
9:15 PM
@EduenSarceño nueva palabra
 
Los trait literalmente es un nuevo concepto y muchos lenguajes aún no lo soportan.
El origen si no estoy mal viene de Rust
aunque Php desde la versión 7 ya lo implementa
Java he visto propuestas para implementarlo en la versión 10
C# no es mi mundo, no soy muy fan de .NET
Ahhhh, me faltó un punto hahahaha
no podemos hablar de interfaces sin hablar de métodos y clases abstractas
 
Desde su versión 5.4.0, PHP implementa una metodología de reutilización de código llamada Traits.
 
ups
error mío
entonces el origen es de php
pero no creo, estoy seguro que viene de otro lenguaje
 
y ASM es rutinario.
Pero yo creo que funcional es cuando compila. No creo que es porque se puedan declarar funciones.
 
Es que hay dos tipos de programación funcional
El que define sólo el nombre de la únida lógica
y el otro funcional declarativo
aunque ellos tratan funcional-declarativo como funcional y he ahí el brainfuck
 
9:23 PM
claro claro
estan locos los que defininen las cosas de programacion
 
es lo mismo que el famoso "Linux"
vs "GNU/Linux"
todo mundo usa "Linux" pero debe ser "GNU/Linux", y ambos son cosas totalmente distintas.
 
¿Paradigma es lo mismo que patrones de diseño?
 
@ArtEze no lo son
 
Como concepto sí.
 
@EduenSarceño explicate
 
9:27 PM
"paradigma" = forma de pensar
un patrón de diseño es una forma de pensar respecto a la comunicación particular de las unidades logicas
La programación funcional es la forma de pensar en que toda unidad lógica es una "función"
La programación estructurada es la forma de pensar que el flujo de un programa puede ser expresado en estructras llamadas "estructuras de control"
Cada paradigma puede hablar de conceptos disjuntos
por eso que dicen "Este lenguaje es multiparadigma" por supuesto que lo son xd
 
@EduenSarceño aplica con todos
 
La mayoría de lenguajes utilizan estructuras de control
por tanto son estructurados
de hecho el 99.9% de los lenguajes orientados a objetos, son estructurados
Si bien son paradigmas yo no los considero paradigmas de programación
qué es un paradigma y qué no, es filosófico, así que ustedes dirán.
(al menos hablando de paradigmas de programación)
 
o.O asi estoy xd
 
@EduenSarceño si se manejara como patron de diseño desde que empiezas, te ahorrarias unos cuantos dolores de cabeza como novato
 
Correcto
 
9:34 PM
POO si mete muchos conceptos que encuanto empiezas a tocar el teclado, ya no los necesitas
más bien, quedan inutilizados
 
A mí me tomó 7 meses aprender POO
 
en que lenguajes programas ?
 
A mí 2 en entenderlo, 8 en aplicarlos
 
Puedo programar en casi todos xd
osea, no conozco mucho sus syntaxis pero es cuestión de tener un diccionario en mano
una excepción de MASM
MASM es un asco en serio
 
@byte96 Deberás acostumbrarte a lo que hablan.
 
9:37 PM
Me considero experto sólo en 3 lenguajes
y con experto es porque los uso habitualmente
Java, Php, y C
 
@EduenSarceño me lo dieron a fuerzas en la carrera, ni los mismos maestros lo llegaban a entender
 
Es que se pasan hahaha
lo cierto es que le den fama a su nombre
"Macro assembler" lo que no nos dicen es que literalmente todo son macros
nunca vas a ver un "call" y un "ret". Sólo "invoke" y "exit"
 
Cuando me metí con la programación de lleno, fue con el mundo de .Net. Vivo de C#. Me obligaron a aprender con java. Pero contigo hay un notable contraste de como manejar los lenguajes.
@EduenSarceño no tiene de otra
 
Yo aprendí de Javascript
yo antes de ir a la universidad ya había aprendido javascript porque me gustaba postear en un foro, y hacer atrosidades
 
@EduenSarceño antes de la universidad no tenia mucha idea de los lenguajes. Todo lo fui aprendiendo sobre la marcha
 
9:42 PM
por ejemplo, en los foros tenías que pagar con tu reputación ciertos aspectos para modificar tu perfil, yo aprendí métodos de XSS e inyeccion de código porque me costaa mucho hacer puntos xd
Cuando llegué a la universidad fue un cambio brusco, me preguntaron si sabía un lenguaje de programación y les dije que javascript "Javascript ni cuenta como lenguaje" dijeron mis profesores
 
@EduenSarceño nos tocó la epoca de la transicción de JS
 
yo lo que agradezco fue haber empezado en javascript y no haberme estancado en que "POO" es la única forma de manejar objetos
 
@ArtEze sisi tenia algo de idea pero no tan en profundida
 
Yo enseño javascript en mi universidad, y creanme que es complicado explicarlo con estudiantes ya avanzados en POO
"Profe cómo hago herencia", "Cómo simulo visibilidad" , "Como simulo X"
 
@EduenSarceño lo que quiero aprender son las promesas y las llamadas async
@EduenSarceño en la universidad sales sin programar, son muy pocos que entienden verdaderamente
 
9:46 PM
¿No cuenta como lenguaje?
 
Yo no sé mucho de async te voy a ser honestos, son nuevas agregaciones que no entiendo el por qué
 
@AaronRomero luego te puedo hacer unas consultas de C# ?
 
@ArtEze es lo que se pensaba antes
@byte96 por su puesto
 
ninguna implementación actual de javascript es multihilo
 
@EduenSarceño lo eh usado muy poco, pero los use porque la forma como lo estoy usuando actualmente no era la adecudada
 
9:47 PM
Es de alto nivel, quizás es por eso.
 
hablar de términos asíncronos y síncronos en un etorno monohilo es como hablar de de goles en el baloncesto
 
@ArtEze bajo o alto nivel, no deja de ser lenguaje
 
@AaronRomero si gustas los investigo, yo no he tenido necesidad de aprenderlos por el momento, pero siempre me llamaron la atención xd
 
@AaronRomero mira me dieron un ejercicio en la capacitacion de C# que estoy realizando que consta de un Archivo de texto llamado Clientes.txt y tengo que obtener resultados de ese archivo. El formato que posee el archivo es el siguiente:
ID_CLIENTE CLIENTE MERCADO
1198 COMBUSTIBLES TAFI GNC
1285 FGF TRAPANI P
1112 EJESA P

Con un tabulador de por medio, como puedo "individualizar" los datos de esas cadenas para poder ir compararndolos ?
me explico ?
 
la mayoría de lenguajes ofrecen en la clase String el método "split" o equivalente
simplemente carga todo el archivo en memoria
 
9:50 PM
@EduenSarceño este es el caso
ahí esta tu solución
 
Se podría implementar manualmente xd
pero tendríamos que hablar de bytes, buffer y sectores de discos
 
si te fijas, en txt tus datos siguen el mismo formato
 
@EduenSarceño si, utilice Split
 
id espacio nombre espacio mercado
 
split('\n')
para separar por filas
 
9:51 PM
primero omite el primer renglon
y los demas son tus datos
 
split('|') para separar columnas
 
sisi, arranco del i=1
 
ah, eran tabs cierto?
 
Ahhh claro buen punto ese @EduenSarceño no sabia eso
 
split('\t')
luego indexas
 
9:51 PM
osea tendria que separarlo por columnas
´\t claro
 
Una vez quise ripear un CD de audio y no pude.
 
soy un idiota xd
 
cargalos a alguna lista o arreglo
 
igual que C
 
es lo mismo
de hecho solo cambia la sintaxis
 
9:52 PM
sisi pero yo ponia
string delimitador = " ";
los 7 espacios por el tabulador
 
@byte96 solo renoce uno
 
:V
 
En C es:

typedef struct {
....
} Clase

Clase_foo(&c, ..);

Luego

Clase obj = {}
Clase_foo(&obj);
 
por lo menos de tevio tomar
[456]["      algo"]["      otroalgo"]
 
En C#
Class Clase {
...
foo(...);
}

Clase obj = new Clase();
obj.foo(..);
 
9:54 PM
lineas[i].Split(delimitador);
No se puede convertir de string a char en delimitador
 
has un new string
o de hecho en lugar de declarar el delimitar como char, hazlo directamente como string
lines[i].split('delimitar') cambialo por lineas[i].split("delimitador");
 
ahi esta
ToCharArray puse
 
ahh querías separar el string en chars? xd
 
me da igual :V
osea
 
el solo busca manipular el archivo :v
 
9:56 PM
quiero separar esos datos
pq necesito sacar minimo, maximo, promedio de los archivos
 
hahahah pues como tu sientas más vistoso
 
como puedo ver si se me separaron ?
 
lo más rápido es ir manejando strings
 
pq el formato me sigue apareciendo igual
for(i=1;i<5; i++)
{
lineas[i].Split(delimitador.ToCharArray());

Console.WriteLine(lineas[i]);

}
 
el delimitador no lo vuelvas arreglo de caracteres
split por defecto trabaja cadenas de texto
podrías delimitar por palabras
espera voy a ver la sintaxis y la api de c#
NO debes usar for
 
9:58 PM
ahi borre y puse como me has dicho '\t')
 
no sabes la cantidad de líneas de tu archivo hasta tiempo de ejecución
deber ir un while sí o sí
 
@EduenSarceño correcto
a menos que soempre tengas 3 registros en tu txt
 
10:31 PM
ya terminaron?
 
@gbianchi ojalá y no
 
11:11 PM
ah, ovlidé que aquí estabamos haha
byte96 terminaste tu ejercicio?
 
@EduenSarceño el tambien lo olvidó :v
 
hahahaha
yo me quedé programando algo en c# para él pero no sé que más quería hacer aparte de separar los datos
 
11:38 PM
disculpa, me fui sin avisar
tuve que ir a hacer unas cosillas
@EduenSarceño si va un while, hasta el ultimo registro != null o algo asi tengo que poner
estoy haciendo la cena, si desaparezco ya saben porque xD
 
@byte96 ese será tu bandera de salida del while
 
me voy a cenar
nos vemos en 1 hora
 

  last day (16 days later) »