9

As a Java developer, I use Streams almost every day.

Up until now, I've just called them streams but with a Spanish accent, i.e. /estrims/.

El problema estaba en que el primer estrim estaba lanzando un segundo estrim sin pasarle los valores de los zredlocal.

I'm sure I'm not the only Spanish dev to season my day-to-day Spanish with some technical English terms here and there -- actually, I've yet to find anybody who calls streams anything other than /estrims/ :)

Today, however, I tried to replace it with a Spanish term instead, and I felt a bit puzzled. Corrientes? Ugh, that doesn't sound right. Secuencias? Too generic. Flujos? Hmm... Not convincing enough.

Hey, I know! I'll check Oracle's own Spanish version of their documentation on Streams:

Procesamiento de datos con streams de Java SE 8 - Parte 1

Uso de operaciones de streams para expresar consultas de procesamiento de datos complejas

(...) Los diseñadores de la interfaz API de Java han incorporado en su actualización una nueva abstracción denominada Stream, que permite procesar datos de modo declarativo. Más aún, los streams permiten aprovechar las arquitecturas de núcleos múltiples sin necesidad de programar líneas de código multiproceso. Suena bien, ¿no? Eso es lo que exploraremos en esta serie de artículos.

Antes de ahondar en lo que se puede hacer con streams, veamos un ejemplo para tener una idea del nuevo estilo de programación que posibilitan los streams de Java SE 8.

Bummer. Turns out even they didn't know what to call them in Spanish either!

So... What would you call a Java stream in Spanish?

  • Si propongo concatenación de funciones probablemente demuestre que no entiendo una jota del concepto, pero es en lo primero en que pensé al mirar ejemplos. En todo caso, parece que "Stream" es un nombre de fantasía que lamentablemente se solapa sobre el otro stream tradicional de la programación, simplemente "flujo". – Rodrigo May 17 '18 at 14:27
  • 1
    We call them "flujos" where I work, but we're referring to streaming video rather than Java's streams. – Aaron F May 17 '18 at 15:50
  • Oh, are Java's streams a form of "Fluent interface" / "Interfaz fluida" (cf. Wikipedia)? If they are then maybe that term would work? – Aaron F May 17 '18 at 16:01
  • @AaronF Curiously enough, I don't have a problem with e.g. "flujo de datos", but this morning when I tried to say "hay que inicializar las variables locales dentro del flujo" (instead of "dentro del estrim") it just didn't sound right. Maybe because Java already has the much older concept of InputStream / OutputStream which are proper data streams and already called "flujo de entrada" / "flujo de salida" by many, but you can't really do anything inside them -- there's not really an inside. Maybe I just have a cognitive dissonance problem xD – walen May 17 '18 at 16:04
  • 3
    @walen maybe you're suffering from "semantic satiation" (where a word starts to look wrong or weird when you fixate on it for a while) :-D And, thinking about it some more, I think I've heard some people here at work use estrim as well as flujo, but maybe they're referring to something else..I'll have to ask them. (As a native English speaker working full-time in Spanish, I learn something new every day! Some things I've had to unlearn - eg. "correo electronico", no-one actually says that.) – Aaron F May 17 '18 at 16:20
8

Since Oracle themselves use "stream" in their documentation, I assume we could use it as a loanword with no further problem. That is what I usually do in my job.

Anyway, if we are committed to finding a proper translation, I like flujo; I think "un flujo de datos" is an easy to understand concept for a Spanish speaker (programmer or not), which should be the main purpose when using the term.

In case you don't find it very convincing, as you said, you might prefer to use transmisor. WordReference translates "stream" as a verb to 'transmitir' when talking about data. I personally like flujo better than transmisor.

  • 'Flujo' might fit, indeed. Maybe I just need a little bit of warm-up using it before I find myself comfortable doing so. – walen May 17 '18 at 8:51
  • Entiendo que por sus otras acepciones, quizá al principio 'flujo' sea incómodo de usar en un entorno profesional. Pero yo lo veo especialmente útil para usarlo con gente no experta en ellos, como a la hora de enseñar a estudiantes de informática. Me parece bastante visual. – pgg66 May 17 '18 at 10:02
5

"Flujo" o "corriente" deberían de ser los conceptos correctos.

El concepto de stream se basa en que se trata de un tipo de dato que recibe información desde una fuente para poder ser manipulada.

Y este concepto encaja en varios métodos usados junto al stream, como streamRead que yo lo traduciría como "lectura de flujo": en este tipo de lectura, en lugar de enviarte el texto entero, te envía el texto en pedazos, iniciando el "flujo" desde el inicio de un texto.

3

Corriente

Flujo is "flow". If I were reading a technical text and met with flujo or flujo de datos, I'd have no idea what it would be talking about; it's too generic. Simply passing an argument to a function counts as flujo de datos.

I've always thought of a stream in any programming language as being an analogy with a water stream. It's passing a big mass of some fluid thing (e.g. water, a network connection, a file) in undefined, variable sized chunks at a time. I think corriente fits better.

When I'm in a spot where I want to stay strictly in Spanish, I prefer to choose the best translation of the loanword as-is, striving to keep the original analogy, instead of thinking of something new for the concept.

  • Good answer! Nice to have you around, welcome to Spanish Language! – fedorqui May 17 '18 at 18:50
  • Great answer! However I disagree that flujo de datos gives no clue to its meaning in computer programming. In fact, Computer Science 101 introduces control de flujo right after defining "algorithm" as a step by step recipe for transforming data. The association is immediate "what is this "flowing stuff" that is being "controlled in on it's flow in order to be transformed? Why it's data! Naturally, a Data Flow and a Control Flow define the algorithm. Add math to write it down formally. The next step in the allegory is of course a cascade control flow that begets Top-down Programming – hlecuanda May 18 '18 at 3:20
  • 1
    @hlecuanda I didn't mean it was meaningless as if it couldn't be applied to programming. I meant it's meaningless in that it can be applied to too many things. If you tell me the method you use to get from city A to city B is "traveling", while it must be technically true, how is that meaningful? It would be more informative to say "driving" or "flying". Same thing, data flow does not only work with streams, it also works with the flow of data from one function to another via an argument or a return value or an assignment to a variable in a shared scope, basically anything. – JoL May 18 '18 at 6:39
  • Oh I see, what you mean is that flujo de datos while technically accurate, lacks the precision to correctly describe java streams. That being the case I agree with you. It's a classical case of accuracy vs precision. Accuracy gets you in the ballpark, precision throws a strike, speaking in baseball terms. – hlecuanda May 18 '18 at 6:58
2

Además de la respuesta de "flujo" ya dada en otras dos respuestas (que en particular me gusta porque, al conectar a un flujo de datos, muchas veces se hace por medio de canales y puertas, así manteniendo una firme y coherente conexión con la terminología tanto informática como no informática; y cuando hay que hacer un pequeño buffer, allí la palabra "reserva", también con uso hidrólogo y fluvial, serviría muy bien), otras posibilidades según el contexto podrían ser:

  • corriente
    Ya mencionado por Mike, apenas hay diferencia en significado con "flujo", siendo muy sustituible en contextos no informáticos por esa otra.

  • fuente
    Desafortunadamente, es una palabra muy general, aunque podría valer para ciertas cosas (como tal vez un Supply en Perl6).

  • canal
    También de terminología fluvial, es lo que contiene los datos, por lo que valdría siempre que no sea preciso distinguir los datos de su vía (lo normal es que cada canal lleve una sola serie de datos, por lo que sin tener los flujos fundidos (muxed) serían efectivamente sinónimos). Por ende podríamos también utilizar palabras como zanja, caz o conducto.

  • transmisión / transmisor
    Como fuente, también tiene connotaciones diferentes a pesar de describir también la acción (es decir, la transmisión la veo más como el conjunto total de los datos, y no las partes de los mismos en tránsito). Además, a mí no me cuela hablar de una transmisión dentro de un mismo ordenador (tendría que ser algo remoto), pero sí existen streams dentro de un solo sistema. En la forma '-or', incluso suena como si hablara del sistema del que provienen los datos.

  • Joder, acabo de leer más sobre Streams en Java y veo que no tienen nada que ver con los streams tradicionales. A ver si edito esta respuesta más. – user0721090601 May 17 '18 at 16:27
  • ¿Como no son como streams tradicionales? Si te refieres a como los de C para leer archivos, la analogía sigue ahí, es solo que Java hizo que streams funcionara con más cosas aparte de archivos. Se trata de trabajar con un cuerpo grande de datos un pedazo a la vez, sin tener que cargar el cuerpo entero. – JoL May 17 '18 at 18:28
  • @guifa No te preocupes. En java nada es lo que parece. De hecho no es un lenguaje de programación. Es una mistica lengua alienígena usada en su planeta de origen para discutir sobre política, pues insultos y meledicencias pasan por la mente de quién lo hablé sin necesidad de expresarlas y causar sentimientos heridos. Casualmente es trivial para dichos alienígenas implementar la máquina virtual que lo interpreta en la arquitectura x86. Todo lo demás es mercadotecnia de Oracle convenciendo a la industria de dicho lenguaje es aplicable para cualquier tipo de aplicacion. Y aquí estamos – hlecuanda May 18 '18 at 3:30
  • @JoL Creo que estás confundiendo los streams de Java de tipo InputStream y OutputStream y la monad Stream que tiene poco (si tiene algo) que ver con los otros. Efectivamente se trata de una colección de elementos que se puede evaluar de forma perezosa al mandarle varias operaciones que además pueden ser realizadas de forma paralela. La idea es que puedo, por ejemplo, hacer un listado de palabras, y crear de él un Stream al que aplico un filtro por las palabras que empiecen con vocal y una operación por las palabras en mayúscula … – user0721090601 May 18 '18 at 18:55
  • …y luego si pido el quinto elemento, en teoría aunque tendrá que hacer el filtro para saber cuál es el quinto elemento, no tendrá que poner todas las palabras en mayúscula, solo el quinto. Con un bucle for tradicional, habría que poner todas las palabras en mayúscula primero. Como ves, es muy diferente de los Input/OutputStream. – user0721090601 May 18 '18 at 18:58
1

Pues mira, te voy a dar una propuesta basada en otro lenguaje de programación: C#. Los streams de Java permiten al programador hacer con las colecciones más o menos lo mismo que la API de Linq permite hacer en C# con los objetos que implementen la interfaz IEnumerable. Así que aquí va la propuesta:

enumeración

Del lat. enumeratio, -ōnis.
  1. f. Acción y efecto de enumerar.
  2. f. Expresión sucesiva de las partes de que consta un todo, de las especies que comprende un género, etc.
  3. f. Cómputo o cuenta numeral de las cosas.

Así, un stream sería un enumerador, que no hay que confundir con un iterador.

  • 2
    Uf, qué va. Las enumeraciones en Java son un concepto totalmente distinto de los streams (pero equivalente al que describe Wikipedia para la mayoría de los lenguajes). La idea de enfocarlo desde otro lenguaje es buena, pero en este caso no sirve, lo siento. – walen May 17 '18 at 8:47
  • @walen bueno, por intentarlo que no quede. :-) – Charlie May 17 '18 at 8:52
  • Sí estoy con walen, enumerador me parece algo bien distinto (obviamente gran parte del problema es que tantos términos informáticos representan cosas casi idénticos salvo un pequeño pormenor aquí u otro detalle allí y por ello es difícil siempre encontrar un equivalente que mantenga todas aquellas diferencias mínimas. E incluso entre idiomas de programación esas palabras pueden tener significados muy particulares a aquellos idiomas. – user0721090601 May 17 '18 at 15:42
1

Dado que los Stream de Java son cosas bien diferentes de los streams tradicionales, yo propondría una palabra bastante diferente.

La idea con los Stream de Java es que puedes tomar una colección de datos, aplicarle algunas operaciones que no se ejecutan de forma inmediata, y acabar con una nueva colección de datos que, al acceder uno de sus elementos, se calcula solo entonces.

Lo bueno de aquello es poder procesar cada elemento paralelamente, así aprovechandose de varios hilos. Empiezas con una lista, y al convertirla en un stream, sigue funcionando básicamente como una lista, hasta que al final la conviertes en algo (que igual puede ser un List). Así, en términos técnicos, tal vez lo podríamos llamar una representación perezosa de una lista con procesamiento paralelo.

Si queremos mantener una jerga fluvial, propondría catarata, porque permite el procesamiento de grandes cantidades de datos, filtrando, aplicando operaciones, etc.

Tal vez sería adecuado llamarlo un curador, porque curia la lista de que son oriundos los datos de acuerdo con algunas ciertas indicaciones. No creo que se utilice en otros contextos, aunque curador como tal tiene varios significados (por formarse tanto de curar como curiar).

Y para emplear jerga de fabricación, podríamos llamarlo un ensamblador, porque también funciona como una línea de ensamble: cada elemento se procesa individualmente, de acuerdo con algunos pasos. No obstante, eso podría entrar en conflicto con el lenguaje ensamblador, que es otra cosa muy distinta.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.