« first day (2184 days earlier)      last day (907 days later) » 
03:00 - 14:0014:00 - 23:00

3:08 AM
@Pikoh @g3rv4 patetico.. use el blog como patito de hule para darme cuenta que no necesitaba un async factory pattern.... Pero igual escribi la entrada...
 
 
3 hours later…
6:07 AM
Buenos días
 
A las güenas :-)
Asco de Viernes :-(
 
6:29 AM
Buenos dias
 
6:56 AM
@Trauma Es terrible, pero al menos hemos sobrevivido a cuatro lunes
La gatita de M apareció anoche :)
 
@PaperBirdMaster ¡ Hombre ! Me alegro :-)
El mio esta mañana, durante su paseo matutino por el rellano de la escalera, se ha encontrado ... ¡¡ Una palomita !!
 
@PaperBirdMaster bien, me alegro!
 
Me ha costado horrores volver a meterlo en el piso :-(
 
@Trauma Y se han ido a tomar unas cañas.
 
@PaperBirdMaster jejeje ... que va. No le ha dado tiempo (el gato a ella) a intimar
su primer instinto es cazarla y comérsela :-/
 
6:59 AM
Hey, buenos días
 
Cuando cazó y se comió un escarabajo, luego estuvo media hora escupiendo por todo el piso xDD
 
@Trauma ¿para qué creías que era lo de ir a tomarse unas cañas?
 
@PaperBirdMaster hablé con el tipo que editaba vídeitos, me dijo que cuando vuelva de un curro que ha salido me pega un toque.
edita*
 
@PaperBirdMaster jejejeje
 
"cuando vuelva de un curro" significa:

A) Trabaja habitualmente de editor y tiene varios trabajos en cola.
B) Trabaja en algo no relacionado con la edición y cuando acabe su jornada laboral te pega un toque.
 
7:01 AM
@PaperBirdMaster Ahm, no le pregunté, no es amigo muy cercano, es más bien un amigo de mi mejor amigo, hemos hablado un par de veces, me dijo que estaba fuera con algo que le había salido.
 
@Aritzbn Ok :)
Gracias por la ayuda btw
 
No es nada hombre. :)
Por cierto, @PaperBirdMaster ¿Has probado Satisfactory? Me comentaste que te gustaba minecraft, terraria y eso, igual te gustaba.
 
@Aritzbn yo estoy con dyson sphere program, buena locura
 
@NicolasOñate aish, ojalá le metan multi al dyson, es buena droga
Ayer estuvimos reorganizando toda la fábrica para optimizar toda la producción, ahora todo lo que tenemos funciona al 100%, estoy satisfecho xD
 
7:21 AM
@Aritzbn No se qué es Satisfactory, pero le estuve dando fuerte a factor.io un tiempo
 
@PaperBirdMaster pues es factorio en 3D, échale un ojo, igual te gusta
 
yo lo tengo pero me pareciero que los objetivos estaban un poco difusos
 
Son tipos de juego a los que les doy fuerte una temporada y después los olvido. A lo único que juego de contínuo es World of Warcraft
 
@NicolasOñate no sé, yo es que me marco objetivos propios constantemente.
@PaperBirdMaster fuf, yo no puedo con el modelo de suscripción, me siento obligado a jugar para rentabilizar el dinero y me consume la vida.
Es como que si no juego solo a eso acabo sintiendo que estoy tirando el dinero.
 
@Aritzbn Ya, como el gimnasio xD
 
7:25 AM
@PaperBirdMaster xd bueno curiosamente con el gimnasio me pasa lo contrario
 
@Aritzbn ¿Con el gimnasio no sientes que el modelo de subscripción te obliga a ir al gimnasio periódicamente para rentabilizar el dinero?
 
yo tengo amigos en el wow y cuando me dicen que tienen que hacer la diaria o cosas asi me parece que el juego te pone deberes
 
@PaperBirdMaster no xd con el gimnasio siento que estoy tirando el dinero por no ir, así que me doy de baja.
 
@Aritzbn Entonces, es lo mismo :)
 
pues sí xd solo que uno me puede llegar a gustar y el otro no mucho
 
8:13 AM
Este tipo de código me pone de los nervios, está gritando "No se C++":
CRdcyManager::~CRdcyManager(void)
{
	m_thrd_alive = FALSE; /* to terminate threads */

	Sleep(1000); /* Let the thread to finish */

	if (m_socket != INVALID_SOCKET)
	{
		closesocket(m_socket);
		m_socket = INVALID_SOCKET;
	}

	if (m_hMutex)
	{
		CloseHandle(m_hMutex);
		m_hMutex = NULL;
	}
}
 
@PaperBirdMaster Si, claro que no sabe C++: ES LEGIBLE!
 
@CandidMoe Todos los lenguajes de programación pueden hacer código ilegible, TODOS. El que hace código ilegible en C++ no es porque esté programando cosas ultratecnológicas, es porque no le da importancia a la legibilidad.
 
@PaperBirdMaster Primera vez que veo un código C++ legible en este chat. Todos los anteriores justifican mi opción Python.
 
Ejemplo:
Joder, no formatea como código
 
@PaperBirdMaster No importa, dejalo asi no más.
 
8:27 AM
    for (std::map<std::string, std::list<std::string>>::iterator begin = map.begin(); begin != map.end(); ++begin)
    {
    	std::cout << begin->first << ": ";
	    for (std::list<std::string>::const_iterator name = begin->second.begin(); name != begin->second.end(); ++name)
		    std::cout << name << ' ';
    	std::cout << '\n';
    }

    	// Vs:

    for (const auto [code, names] : map)
    {
    	std::cout << code << ": ";
    	for (const auto &name : names)
    		std::cout << name << ' ';
@CandidMoe Ponme un ejemplo de código ilegible en C++ y te demostraré que están siendo verbosos de más.
 
@PaperBirdMaster No lo pongo en duda, pero no hablo de programadores, hablo de programas. Si miro los programas publicados, los que la gente escribe, son ilegibles.
 
@CandidMoe son ilegibles porque la gente es <censurado>.
Por culpa de ese tipo de <censurado> gente, C++ tiene una horrible fama.
 
Además, incluso sabiendo C/C++, de la segunda versión que publicas hay sólo dos líneas que entiendo (std::cout). ¿Qué significa const auto? ¿Qué hace [code, names]? ¿Qué hace `for (const auto ...?
Ese es el otro problema con C++: Cada cual usa un 10% del lenguaje, distinto al 10% del resto.
 
8:43 AM
const marca algo como sólo lectura, cuando algo está marcado como const está sujeto a varias restricciones que proporcionan semántica y seguridad al código además de darle pistas el compilador de cuál es el uso deseado de esas cosas para poder aplicar optimizaciones.
auto es un tipo de datos que se deduce estáticamente (equivalente a var de C#), puede deducir el tipo a partir de expresiones , literales o variables.
auto [a, b, ...] es un structured binding que a la derecha espera un tipo con varios campos y a la izquierda espera variables a las que asociar los campos, se usa auto porque cada uno de los tipos del binding puede (y suele) ser diferente.
En el caso de un mapa (map) los elementos de un mapa son pares de clave y valor por lo que esta instrucción for (const auto [key, value] : map) nos dice "recorre el mapa map guardando las claves en la variable de sólo lectura key y los valores en la variable de sólo lectura value".
 
Programadores C++ estudiando el último releadse.
 
No, esos no pueden ser de C++, están circuncidados, seguramente son de Python.
 
@CandidMoe ?
 
@PaperBirdMaster Mucho tiempo dedicado a escrutar complicados textos.
 
@CandidMoe Al que escriba C++ como si fuese un texto arcano indescifrable le espera mi ira. C++ no es complicado, la gente insiste en hacerlo complicado.
En los últimos 10 años se ha hecho el lenguaje menos verboso, más fácil de entender y más fácil de aprender, sin embargo en internet, universidades y entornos profesionales se insiste en programar C++ como si aún fuese 1998.
 
8:54 AM
@PaperBirdMaster Comparto tu amor por el código simple y legible, pero si adoptara C++ como primera alternativa, me vería enfrentado a código complicado, oscuro e ilegible todos los días.
 
@CandidMoe todos los lenguajes de programación tienen código complicado, oscuro e ilegible, no es culpa del lenguaje, es culpa de la gente que lo usa.
 
Como co*o no conocía yo esta maravilla? adhole.org
 
Bueno, todos no. Objective-C tiene código complicado , oscuro e ilegible como única opción, y es culpa del lenguaje, no de los programadores.
@Pikoh ¿Es SFW?
 
xDDD
no lo parece
 
@PaperBirdMaster claro
 
8:57 AM
@Pikoh ¿Qué es?
 
@PaperBirdMaster es un pihole online. Maravilloso
 
@PaperBirdMaster pi-hole as a service
 
basicamente, un dns que filtra la publicidad, el tracking,etc...
 
@Pikoh No se qué es un agujero de π
@Pikoh Oh ¿y basta con ponerla en tu configuración de red?
 
@PaperBirdMaster correcto
 
8:58 AM
Configuras tu router para que use esas DNS y todo el tráfico desde Internet estará filtrado para bloquear ads, y cosas molestas.
 
Yo acabo de probarlo en el movil y parece que va bien
 
Very interesanting.
 
En casa tengo pi-hole para la red interna, pero para fuera de casa esto es maravilloso
 
Funciona con Youtube?
 
@MauricioContreras pues no creo...al menos, pihole no vale para youtube
yo para youtube uso Vanced en el movil
 
9:00 AM
@PaperBirdMaster Un lenguaje con un "especificación" de 1.000 páginas que aún asi deja muchas cosas indefinidas, es caldo de cultivo para todo tipo de males.
@Pikoh Puedes ver YT en el browser ...
 
Los problemas de especificación que comentas caen en dos sacos:

A) La filosofía no-pagues-por-lo-que-no-usas.
B) Retrocompatibilidad con C.

Gran parte de la comunidad C++ está intentando eliminar B.
Por otro lado, C++ no tiene tantas cosas indefinidas, tiene (en orden de más común a menos común):

A) Comportamiento indefinido.
B) Cosas dependientes de implementación.
C) Comportamiento no especificado.
Los casos de A son los más comunes y aún así, no son tantos.
Y la mayoría de A están en zonas muy nicho.
 
Cuando programo en Python no tengo ninguno de esos problemas.
 
@CandidMoe Es que no son problemas xD y además es una comparación injusta tanto para Python como para C++. Ni se espera lo mismo de ambos lenguajes ni son el mismo tipo de lenguaje ni siguen el mismo paradigma.
Por ejemplo. ¿Qué hace Python cuando declaras una variable sin valor?
:59421314 O sea, Python (a priori) ¿no permite variables sin inicializar?
 
@PaperBirdMaster No puedes declarar una variable sin valor.
No declaras, asignas, como a = 1
Si puede pasar que uses una variable no inicializada. Eso genera excepción.
 
9:16 AM
@CandidMoe Ok. Eso entra en conflicto con la filosofía C++ de no-pagues-por-lo-que-no-usas. Asignar valor a una variable tiene un coste computacional, que aunque sea negligible es un coste al fin y al cabo. Así que C++ te da la opción de no inicializar variables en cuyo caso su valor es indeterminado y usar su valor puede desembocar en comportamiento indefinido.
En cambio Python no está pensado para exprimir al máximo el sistema y ser lo más ligero posible (de ser así, no se diseñaría como interpretado). Decir que Python no tiene problemas de indefinición en variables es no entender el concepto: No es un problema, es una decisión de diseño.
Es como si alguien dice "C tiene problemas de concurrencia de datos, no como Basic que carece de ellos", pues falso e injusto para ambos lenguajes, Basic ni siquiera está diseñado para rodar código concurrente así que no es que no tenga esos problemas es que no está diseñado para ello.
Toda la conversación viene de:
    // Esto hago:

    CRdcyManager::~CRdcyManager(void)
    {
    	m_thrd_alive = FALSE; /* to terminate threads */

    	Sleep(1000); /* Let the thread to finish */

    	if (m_socket != INVALID_SOCKET)
    	{
    		closesocket(m_socket);
    		m_socket = INVALID_SOCKET;
    	}

    	if (m_hMutex)
    	{
    		CloseHandle(m_hMutex);
    		m_hMutex = NULL;
    	}
    }

    // Esto necesito:

    CRdcyManager::~CRdcyManager(void)
    {
    	m_thrd_alive = FALSE; /* to terminate threads */

    	Sleep(1000); /* Let the thread to finish */
 
@PaperBirdMaster Trabajo con microprocesadores y uso tanto MicroPython y C++. No hay nada en que C++ aventaje a MicroPython en términos de rendimiento.
 
@CandidMoe "MicroPython is a software implementation of a programming language largely compatible with Python 3, written in C, that is optimized to run on a microcontroller".
 
@PaperBirdMaster ¿Who cares? Yo no escribo en C, escribo en Python.
El interprete podría estar escrito en assembler ... seria todavía más rápido.
 
9:34 AM
Para empezar, no he dicho que Python no tenga buen rendimiento ni que sea un mal lenguaje ni que lo odie ni nada feo del mismo (Python ≠ Objective-C). Lo que sí he dicho es que comparar lenguajes tan diferentes diciendo que uno es mejor que el otro por temas de diseño es injusto para ambos lenguajes.
En tu empresa o en tus requerimientos decidisteis Python: Ok. Podríais haber decidido otro lenguaje y también sería correcto. La herramienta adecuada para una tarea es la que haga el trabajo y cumpla los requerimientos y la gente la use con comodidad.
 
@CandidMoe dudo que un lenguaje interpretado no tenga peor rendimiento que C++. Otra cosa es que la diferencia no sea significativa, lo que habría que ver
 
@PaperBirdMaster Me exprese mal. No es que Python sea mejor que C++, es que C++ es defectuoso de por si,
 
No voy a ponerme en plan "Noooooooooo aaaaaaaaargh Python nooooooooooo, usaaaaaaaaa C++ mendrugoooooooooo" porque además de no ser constructivo, no es cierto que C++ sea obligatorio en nada.
@CandidMoe <angry C++ user noises>
Discrepo de forma enérgica e iracunda.
@Pikoh No ha puesto Python como ejemplo, puso MicroPython.
 
@PaperBirdMaster Es cosa de googler "why c++ sucks"
 
@PaperBirdMaster micropython sigue siendo interpretado
 
9:39 AM
Que ni siquiera es Python, es un lenguaje "mayormente compatible con Python" y no con un Python cualquiera, si no con una versión concreta.
 
@PaperBirdMaster lo de version concreta es porque hubo cambios significativos entre la version 2 y 3 de python simplemente
 
@CandidMoe Y te puedo rebatir todos esos why, porque provienen del desconocimiento. Haters gona hate.
 
@CandidMoe Segun linus torvalds, C++ is really a terrible language!
_C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C._
XD
 
@CandidMoe Básicamente todos esos C++ sucks se pueden resumir con el meme del tipo que se pone palos en las ruedas.
 
@PaperBirdMaster De nuevo: empece a programa C en 1988. Con C++ empece en 1991. He programado profesionalmente aplicaciones de sistemas en ambos lenguajes. Sigo programando hasta hoy (Arduinos). Tengo mis propias opiniones sobre C++.
 
9:43 AM
@CandidMoe Pero no me has usado como argumento tu experiencia con C++, has usado como argumento que googlee "why c++ sucks". Que te he intentado rebatir con lógica, pero te lo puedo rebatir como un PC diciendo "googlea why c++ is awesome".
 
@PaperBirdMaster La lista de problemas de C++ es demasiado larga para postearla aqui, y otros las han detalla con más elegancia y paciencia que yo.
 
@CandidMoe Veamos esa lista.
 
Para mi todo empezo el dia que me tope con esto: int funcion(int) = 0;
 
- the whole C++ exception handling thing is fundamentally broken. It's
_especially_ broken for kernels.
- any compiler or language that likes to hide things like memory
allocations behind your back just isn't a good choice for a kernel.
 
@CandidMoe Eso no compila, ¿tal vez querías decir struct S { virtual int funcion(int) = 0; };?
@Pikoh C++ no oculta el alojado de memoria a nadie ¿no se estará refiriendo a C# o Java?
 
9:49 AM
@CandidMoe int (*function)(int) = 0;
 
@Trauma Esa sintaxis puede ser C o C++.
 
Aunque eso compila en C también
 
@PaperBirdMaster se refiere a C++. Pero no conozco lo suficiente el lenguaje para saber si es o no cierto
 
@PaperBirdMaster eso :-)
 
@Pikoh Pues no es cierto.
 
 
@PaperBirdMaster No, estaba en la definición de una clase.
 
@Pikoh No digo que no sea cierto que lo ha dicho. Digo que no es cierto lo que dice.
@CandidMoe Pues justo lo que he dicho.
 
@PaperBirdMaster ya, ya te entendí. Solo te pasaba la fuente para que lo vieras
 
@Pikoh Ok.
 
Aunque estos mensajes son antiguos. Me suena que luego linus se reconcilió un poco con c++
 
9:52 AM
@Pikoh Posiblemente se refiera a C++98. Ahí si habia cosas ocultas, en asignaciones y constructores. Antes de la sintaxis move( )
 
@Trauma ese mensaje es de 2004
 
@Pikoh lo dicho, antes de move( ), que pertenece a C++11 (2011)
 
@PaperBirdMaster Claro, que C++ es oscuro.
 
@CandidMoe "C++?? A Critique of C 1992". He dejado de leer en el 1992.
 
9:55 AM
@PaperBirdMaster Muy conveniente.
 
@CandidMoe Por supuesto, porque es absurdo criticar el lenguaje de 2021 con argumentos de 1992. ¿Te gustaría que juzgase tus decisiones de adulto como si fueses adolescente?
 
Yo diría que con el tiempo ha ido empeorando. Estuve mirando todas las posibles interpretaciones de a = b y me dio mareo.
 
Hombre, no se puede a dia de hoy criticar un lenguaje basandose en lo que era hace 30 años. Me pasa a mi lo mismo con javascript: empezo siendo un lenguaje infecto, y hoy en dia es algo que se puede considerar medianamente serio
 
@CandidMoe Con el tiempo ha mejorado, y mucho. Eso no implica que no haya ganado complejidad. Pero complejo no implica peor.
 
@PaperBirdMaster Voy a terminar esto aqui. Cada cual tiene los antecedentes para juzgar. En última instancia, no importa. Deje C++ en el pasado.
 
9:57 AM
@CandidMoe Ok McCain.
No voy a avivar el debate de nuevo, pero supongo que estás en una situación parecida a la que estoy yo con Objective-C, si viene alguien a decirme que Objective-C no es un horror y me intenta convencer de lo contrario le mandaría a pastar.
 
@PaperBirdMaster Le di una mirada a Objective-C hace poco y me parecio un buen diseño.
 
@CandidMoe No miraste lo suficiente xD
Cuando empiezas a ahondar sale toda la mierda.
 
@PaperBirdMaster ¿Para qué sufrir? Cambiate a un lenguaje más decente.
 
@PaperBirdMaster Yo me lo tomé como un lenguaje interpretado ... pero compilado :-)
Osea, tiene todos los defectos de un interpretado + un proceso de compilación = ejecuta mas rápido que un interpretado 100%
 
Te diré que tiene herencia y composición de objetos, y se la pasa por el forro. Imagina que tienes un objeto A con un método a y un objeto B con un método b. Puedes crear un puntero a A que apunte a B sin que Objective-C pestañee, acto seguido puedes llamar al método c de otro objeto y el compilador te muestra una ALARMA diciendo "Oye, puede que eso que quieres hacer no sea posible". Una ALARMA cuando eso es un error como una catedral.
@CandidMoe No se, has sido tú quien ha dicho que le echaste un vistazo. Hazte esa pregunta a ti mismo.
 
10:07 AM
vente a C# XD
 
@PaperBirdMaster Estoy feliz con Python. Gracias.
 
Todo es bonito en C#. No como python, que es feisimo
4
lenguaje controlado por tabulaciones...a quien se le ocurre
 
@Pikoh verdades como puños.
 
@CandidMoe Te creo (presente de indicativo de creer). Pero no tienes que darme las gracias por algo que has hecho tú... de la misma manera que no tienes que preguntarme sobre una decisión que tú tomaste.
@Pikoh C# es un lenguaje que empecé odiando a finales de los 90 pero que en los últimos años ha mejorado mucho.
 
@Pikoh Yo también lo encontraba raro, y fue una razón para evitar Python por mucho tiempo. La ventaja es que todos los programas se ven del mismo estilo y eso hace grata la lectura.
 
10:10 AM
@PaperBirdMaster si, ha evolucionado mucho la verdad
@CandidMoe a mi me cuesta horrores leer un programa en python lo siento
 
@Pikoh ¿Incluso los mios? penita, penita.
 
@CandidMoe no he visto ninguno tuyo ;)
 
@Pikoh Y no hace falta, todos los lenguajes de programación se pueden usar mal XD Moe seguramente escribe bien porque ama el lenguaje, alguien que odie Python escribirá ponzoña.
 
@PaperBirdMaster Escribo bien en todos los lenguajes.
 
@CandidMoe Te creo (presente de indicativo de creer), no he dicho lo contrario.
 
10:14 AM
@PaperBirdMaster eso es verdad. Es el programador el que hace que un codigo sea bueno o malo, se vea bien o mal. Otra cosa es que algunos lenguajes ayudan a esto mas que otros
 
Este código es parte de un decodificador de teclado, escrito hace un par de semanas:
void loop() {
  int fila;
  int col;
  int status = HIGH;

  //
  //  Los botones estan HIGH hasta que son presionados;
  //  entonces quedan en LOW.
  //
  for (col = 0; col < pines && status == HIGH; col++) {
    digitalWrite(pin_out + col, LOW);
    for (fila = 0; fila < pines && status == HIGH; fila++) {
      status = digitalRead(pin_in + fila);
    }
    digitalWrite(pin_out + col, HIGH);
  }

  if (status == LOW && (millis() - last_key_down) > 100) {
    fila--;
    col--;
    //  Se presionó el botón en (fila, columna)
 
Pero eso no es python
Y además, no te perdono que uses la llave de apertura en la misma linea, lo siento ;)
y ya que estamos, un if sin llaves...me provoca escalofrios
 
Y este es una clase Python para leer un boton:
class Button:
    objetivo = 0b11000000
    corte = 0b011111111

    def __init__(self, pin, callback):
        self.pin = pin
        self.pin_in = machine.Pin(pin, machine.Pin.IN)
        self.callback = callback
        uasyncio.create_task(self.polling(5))

    async def polling(self, interval_ms):

        while True:
            state = 0

            while state != Button.objetivo:
                await uasyncio.sleep_ms(interval_ms)
                btn = 0 if self.pin_in.value() else 1
                state = (state << 1 & Button.corte) | btn
 
a todo esto..por que en python hay que usar self pa todo? no lo entiendo
 
@Pikoh Es el problema cuando tienes dos opciones para hacer algo ...
 
10:18 AM
no se, pero en cualquier codigo python ves self50 veces
 
@Pikoh self hace referencia al objeto mismo. Es como this en otros lenguajes. Yo veo está sintaxis como un hack, para implementar los métodos en forma barata.
 
@CandidMoe si, entiendo que es self. Pero para empezar, en otros lenguajes puede omitirse en ciertos casos. Y, lo que realmente me molesta..por que hay que pasarlo como parametro en todas las funciones?
 
Sin el self el interprete no tiene como saber si te refieres a una variable suelta cualquiera o a un atributo del objeto. Hack
 
@CandidMoe hack=chapuza?
 
@Pikoh Un hack es una solución a la diabla. Lo apropiado sería declarar formalmente los atributos de una clase/objeto. Así el interprete no necesitaria el self como guia.
 
10:21 AM
no hay una forma mejor de solucionar esto que tener que añadir self en todos los metodos como primer parametro?
 
@Pikoh Tendrías que indicar cuales son los campos/atributos propios de la clase en su declaración, y en Python nada se declara.
Perl implementó el mismo esquema cuando introdujo "clases".
 
@CandidMoe Pensé que Python usaba el concepto de scope al ser tan estricto con la indentación. O_o
@CandidMoe Ah vale, ya lo pillo.
 
Lo que más me jode de Python es que nada se declara, asi que no sabes si la variable "X" en el método "Y" recibe una lista, un diccionario o un string. O puede que reciba cualquier cosa y la transforme internamente. Más de una vez me pillo los dedos pasando el tipo incorrecto.
 
@CandidMoe entiendo. Pero no entiendo por que XD
 
@CandidMoe ¿Es tipado fuerte o débil?
 
10:28 AM
La variables en Python no tienen tipo, pueden ser cualquier cosa en cualquier momento.
 
@PaperBirdMaster creo que es tipado fuerte, pero dinamica
una cosa un poco rara
 
@Pikoh Tan raro como que es mútuamente excluyente xD a no ser que lo esté entendiendo mal.
¿Se puede declarar una variable entera y luego asignarle una cadena de texto?
 
@PaperBirdMaster si. Pero no te permite mezclar tipos
 
En Python las variables no se declaran, simplemente se usan. De que tipo sean depende exclusivamente de su contenido. En Python "a = b" siempre funciona.
 
@CandidMoe Si no se declaran ¿Cómo distingues a = b (declaración) de a = b (asignación)?
 
10:31 AM
es tipado "fuerte" porque si se controla el tipo a la hora de operar. Por ejemplo si a es una cadena y b es un entero, no puedes hacer a+ b
 
No hay declaraciones, sólo asignaciones.
a = 1
print(a)
a = "hola"
print(a)
a = [1,2,3]
print(a)
 
@Pikoh ¿Pero puedes hacer a = b?
 
produce
1
hola
[1, 2, 3]

Process finished with exit code 0
 
@CandidMoe Entonces no es tipado fuerte.
 
@PaperBirdMaster si,esa es la parte dinamica
 
10:31 AM
@Pikoh Entonces no es tipado fuerte.
 
@PaperBirdMaster Claramente.
 
puedes hacer a=b, pero no a+b
According to this wiki Python article Python is both dynamically and strongly typed (provides a good explanation too).
Aqui tienes lo que dice la wiki: wiki.python.org/moin/…
 
a = 1
print(a + 2)
a = "hola"
print(a + ", chao")
a = [1,2,3]
print(a + [5, 6])
3
hola, chao
[1, 2, 3, 5, 6]

Process finished with exit code 0
 
Python is strongly typed as the interpreter keeps track of all variables types. It's also very dynamic as it rarely uses what it knows to limit variable usage. In Python, it's the program's responsibility to use built-in functions like isinstance() and issubclass() to test variable types and correct usage. Python tries to stay out of your way while giving you all you need to implement strong type checking.
 
Python tiene "métodos mágicos" para sus clases. Un método mágico es " _ _ add _ _", que se llama cuando escribes "a + b".
Vendria siendo como operator+ en C++
 
10:35 AM
Es tipado débil porque una variable no tiene por qué quedarse con el tipo con el que nace. Que después compruebe los tipos antes de operar es rtti, lo cuál, no tiene relación con el tipado fuerte o débil.
 
@PaperBirdMaster segun ellos, que la variable tenga que permanecer siempre con el mismo tipo no es tipado fuerte, sino tipado estatico
 
En Python, si tu dices objeto.metodo(), lo único que importa es que el objeto tenga el metodo. De que clase sea el objeto no importa.
 
@CandidMoe hala, anarquia!
XD
 
@Pikoh Es otro hack. Cosas que se ponen en el lenguaje porque son baratas de implementar.
 
@Pikoh Que una variable se quede con el mismo tipo, es literalmente, tipado estático. Y el tipado estático es tipado fuerte.
@CandidMoe Exactamente igual que C++, Java, C# y todos los oop (menos Objective-C)
 
10:39 AM
@PaperBirdMaster hay muchas definiciones de tipado fuerte. No tiene que ser tipado estatico=tipado fuerte
 
@Pikoh Joder, pues yo sólo conozco esa ¿de dónde sacas las otras definiciones?
 
In 1974, Liskov and S. Zilles defined a strongly-typed language as one in which "whenever an object is passed from a calling function to a called function, its type must be compatible with the type declared in the called function."
Python cumpliria esto
 
@Pikoh Deje de leer donde dice 1974 :)))
 
@CandidMoe jajajaja
encima que defiendo la naturaleza de python como lenguaje fuertemente tipado
 
@Pikoh Una rosa por otro nombre sigue siendo una rosa
 
10:41 AM
Esto dice la wikipedia por ejemplo:
Smalltalk, Perl, Ruby, Python, and Self are all "strongly typed" in the sense that typing errors are prevented at runtime and they do little implicit type conversion, but these languages make no use of static type checking: the compiler does not check or enforce type constraint rules. The term duck typing is now used to describe the dynamic typing paradigm used by the languages in this group.
In a statically typed language, the type of variables must be known (and usually declared) at the point at which it is used. Attempting to use it will be an error. In a dynamically typed language, objects still have a type, but it is determined at runtime.
 
Acabo de caer en el clásico error de decir "Oye, puedes echarme una mano? esto no me va", enseñarlo y que funcione.
:(
 
@Pikoh Pero esa definición ni siquiera toca que un objeto pueda cambiar de tipo o no... que al fin y al cabo es de lo que va el "strongly typed" O_o
 
May 29 '19 at 14:33, by Nicolas Oñate
Soy gilipollas
 
@Aritzbn Es un antiguo hechizo que aún funciona
 
@CandidMoe 🤡 así quedé
 
10:44 AM
@PaperBirdMaster void* p = (void *) &A;
 
@CandidMoe Pero esa definición te dice "Un lenguae estrictamente-rosa es uno en que "siempre que una planta se pase de una función a otra, el tipo de planta debe ser compatible con el de la función llamada". No entra a valorar los nombres de las rosas.
 
acabo de tener la situación mas surrealista de mi vida en el trabajo, una nueva compi que entro el lunes, la han echado hoy porque no ha hecho ni el curso de prevencion que se tardan unas horas y mandar a mi jefe a la mierda, se ha plantado en el sitio diciendo que no se movia y ha tenido que venir la policia
 
@NicolasOñate Vaya con el proceso de selección.
 
@CandidMoe ¿Qué me estás intentando decir con eso?
 
@CandidMoe si mi jefe estaba flipando, que dice que en la entrevista era otra persona
 
10:46 AM
p es una variable que puede apuntar a cualquier tipo de objeto.
@NicolasOñate Pero duro una semana ... ¿qué hizo en el intertanto?
 
@CandidMoe No, p es una variable que sólo puede apuntar a punteros a void.
 
@PaperBirdMaster No existen los objetos void. La variable tiene que apuntar a algo que no es void
 
@CandidMoe No existen los objetos void porque void no es instanciable. Pero p no es un objeto void ni apunta a un objeto void. La variable p es un puntero a void y sólo puede contener punteros a void (antes lo dije mal).
 
@CandidMoe navegar por el one drive de la empresa mirando todos los documentos
 
@PaperBirdMaster Un puntero existe para decir \*p. Si p es void\*, ¿a que apunta \*p?
 
11:02 AM
Un puntero void no es usable. El compilador te garantiza un tamaño lo bastante grande como para poder contener cualquier otro tipo de puntero. Pero se ha de castear al tipo concreto de puntero antes de usarlo
 
@NicolasOñate ¿Y qué tal se veía en el trato diario?
 
@NicolasOñate XD
 
tengo un programa en c++ que cuando intento insertar la informacion en la base de datos crashea, no entiendo demasiado de punteros, he leido que puede ser por los punteros pero creo que todo esta correcto
jejeje
0
Q: Process returned -1073741819 (0xC0000005)

Tigre 437tengo un programa en c++ que cuando intento insertar la informacion en la base de datos crashea, no entiendo demasiado de punteros, he leido que puede ser por los punteros pero creo que todo esta correcto, os paso codigo: Ademas si podeis decirme si tengo bien la estructura del INSERT os lo agrad...

He leido que puede ser por los punteros. ¡ La ignorancia da la felicidad ! XDD
 
si no sabes cual es el problema, culpa a los punteros
 
@Pikoh Un 99.99% de las veces, acertarás XDDD
 
11:10 AM
correcto
 
:-D
 
11:21 AM
@CandidMoe No entiendo la pregunta ¿A qué te refieres con "*p. Si p es void*, ¿a que apunta *p?" (sobre todo los \*)
 
@PaperBirdMaster Ya perdi el hilo. Dejemoslo hasta aqui.
@Trauma Y el código se ve bastante decente.
 
@CandidMoe No lo he mirado. Me entró la risa con el primer párrafo xDD
 
Teoria: Si aprendes Assembler antes que C, nunca tendrás problemas con los punteros.
 
Es buena teoría xD
 
Porque en Assembler siempre estás trabajando con direcciones en forma explicita.
Entonces, cuando llegas a aprender C, ya tienes los conceptos elementales requeridos.
 
11:29 AM
@CandidMoe El código es horroroso, de hecho cualquier compilador debería rechazarlo pues el main no cumple el estándar.
 
@PaperBirdMaster Si lo llamas "horroroso", no se que que adjetivo puedas usar para otras atrocidades que se ven por acá.
Te desafio a contestar la pregunta escribiendo correctamente el código, para comparar.
 
@CandidMoe Uff, cuanto más miro ese código más horroroso me parece, la primera función tiene un parámetro llamado notUsed que como su nombre indica no se usa dentro de la función ¿para qué pasarlo entonces? y lo peor es que cuando llama a la función ¡le pasa un parámetro! pues si no es usado ¡pasa un NULL! haciendo esa llamada da la sensación que yesUsed.
@CandidMoe Pocas respuestas mías has visto si dices eso xD
 
@PaperBirdMaster Sólo sigo Python y Arduino.
 
@CandidMoe la preguntabas y no respondia
 
@CandidMoe En varias preguntas mi respuesta es "Esto no es C++, lo has hecho mal, se hace así".
 
11:34 AM
@NicolasOñate ¿Personalidad múltiple? Porque si es así de ordinario, ni modo de pasar la entrevista.
@PaperBirdMaster OK. Las voy a mirar.
 
Aquí una:
2
A: Creación de pares ordenados en c++

PaperBirdMasterHas etiquetado tu pregunta como C++, así que debes cambiar todo tu código para que tu programa sea considerado escrito en ese lenguaje, ahora mismo está completamente escrito en C: Las cabeceras <stdio.h> y <stdlib.h> son de C, no de C++, si realmente necesitas usarlas (que no las necesitas) deb...

Aquí otra:
0
A: Problema a la hora de reemplazar palabras dentro de una string en C

PaperBirdMasterSelecciona todo tu código y bórralo. Sólo dos líneas de todo el código que presentas es c++. Las cabeceras <stdlib.h>, <stdio.h>, <conio.h> y <string.h> son de C y no deben ser usadas en C++, lee este hilo para saber más del tema. En C++ las cadenas se gestionan con el objeto std::string, no con...

Otra:
2
A: ¿Hay alguna manera de crear arreglos dinámicos cuyos elementos sean de distinta clase en c++ similares a los de python?

PaperBirdMaster ¿Hay alguna manera de crear arreglos dinámicos cuyos elementos sean de distinta clase en C++? No… y si, pero… Puedes tener una colección de punteros a clases que dispongan de una base común: #define P void f() { std::cout << __PRETTY_FUNCTION__ << '\n'; } struct Base{ virtual void f() =...

 
@CandidMoe xD
 
@PaperBirdMaster Mirando tu código reconozco que para ti C y C++ son dos lenguajes diferentes. Haz tomado el lenguaje y lo has pulido en algo más avanzado y elegante.
C y C++: dos lenguajes diferentes que comparten un mismo compilador.
 
@CandidMoe Son efectivamente dos lenguajes diferentes, tienen un paradigma diferente y una ABI distinta.
 
11:50 AM
@PaperBirdMaster Claro que los mensajes de error del compilador son un alto precio a pagar.
 
@CandidMoe Como Python y MicroPython xD
 
@PaperBirdMaster La única diferencia entre Python y MicroPython es que MicroPython no tiene f-strings.
 
@CandidMoe f*ck strings?
XD
 
Micropython tampoco tiene type hints. Igual no los uso en el PC, pues el IDE no los procesa muy bien.
@Pikoh Un f-string, como print(f"Valor={cuenta + 1}") es un string que contiene expresiones Python encerradas entre {}. Cuando Python encuentra un string con una "f" por delante, busca y reemplaza las expresiones que encuentra dentro.
 
@CandidMoe si, es igual que en c# $
 
11:58 AM
@Pikoh Claro, también en Perl y otros lenguajes. Muy útil para imprimir cosas.
 
12:25 PM
@CandidMoe segun me he enterado, en la entrevista fue otra persona
 
12:35 PM
moderadores
-1
Q: TicketBAI - Ahorro de tiempo y dinero

Toro SSTicketBAI Consola libreriatbai@gmail.com Hola a todos. Me gustaría presentarles la aplicación TicketBAI Consola. La misma tiene como funcionalidades:   -> Firmar XML   -> Alta del TicketBAI   -> Anulación del TicketBAI Para facilitar el desarrollo de la integración del TicketBAI, tenemos la aplicaci

 
@NicolasOñate Da para un guión de película: entrevistan al candidato correcto, pero mandan la aceptación a un candidato no considerado. Debe haber una película con esa trama.
 
@CandidMoe lo de hoy si que da para peli
porque he obviado bastantes cosas
tenemos una oficina pequeña, cuando mi jefe quiere decirte algo privado, te pide que bajes con el, pues ha solicitado que baje la chica y ha subido ella sin mi jefe, ha encendido el portatil como si nada, mi jefe ha subido y ha comentado que no tenia intencion de despedirla pero que por dejarle plantado abajo lo va a hacer, ella ha dicho literalmente: disculpa no me molestes que estoy trabajando y mi jefe ha cortado internet para que no siguiese navegando por nuestros documentos
y vamos el show, la chica mintiendo a los policias y armando la de dios
 
Ser jefe es un problema. Hay que lidiar con cada ejemplar. Prefiero los computadores.
@NicolasOñate y todo eso en público.
@NicolasOñate Esta historia entra perfecto en este sitio: thedailywtf.com
 
12:56 PM
me muero!!!! "programming by incantation and ritual"
jajajajajajaja
 
@NicolasOñate ¿Cuántos empleados tiene la empresa?
 
@PaperBirdMaster sin ella 5
 
@NicolasOñate Ah pues os habéis librado. Si hubiese sido >=50 la empresa esta obligada a tener en plantilla a un comisario de género que, sin duda, se habría puesto de su parte porque la perspectiva de género lo exige.
@NicolasOñate Ah, me equivoqué. Es para el año que viene. planigualdadbaleares.es/noticias/…
 
1:29 PM
Por si alguien le interesa ayudarme con una respuesta...
0
Q: Como Justificar en bootstrap 4. Varios elementos sobre un background-image?

Nicolás E. GimenezDebo justificar varios elementos sobre una imagen de fondo con bootstrap para que me queden los elementos de manera descente. Tengo que incluir 2 botones con imagenes en el centro y 3 bottones con imagenes abajo a la izquierda. para hacer una landig page de un videojuego. ahora estan así: el cod...

Respondí esto basado en CSS, pero hay algo que me incomoda, y aun no lo resuelvo (tampoco le puedo dedicar demasiado ahora mismo)
El tamaño del background... la imagen parece ser a 4K y no queda ""perfecta"" en la respuesta que hice
 
1:52 PM
Comisario de Género, China, circa 1965.
(Guardia Rojo de la Revolución Cultural)
 
@padaleiana ojo en las traducciones.. en muchos casos, esta aclarado que variante del string es...
fijate este por ejemplo...
es la version para 1 solo.. y hay otra version para muchos...
 
03:00 - 14:0014:00 - 23:00

« first day (2184 days earlier)      last day (907 days later) »