edición general
82 meneos
1519 clics
La eterna batalla entre tabulador y espacio a la hora de programar. Y qué papel tuvo el precio de los discos en la misma

La eterna batalla entre tabulador y espacio a la hora de programar. Y qué papel tuvo el precio de los discos en la misma

Uno de los debates más antiguos y enconados en la industria del desarrollo de software es la cuestión de cómo sangrar el código: ¿es mejor usar tabulaciones o espacios? A primera vista, podría parecer una cuestión trivial, pero este dilema ha generado múltiples discusiones acaloradas entre programadores a lo largo de las décadas. La historia de la disputa 'tabulaciones vs. espacios' se remonta a los inicios de la programación, cuando el almacenamiento era un recurso muy limitado y caro (muy caro).

| etiquetas: programación , sangrado , tabulador , espacio
#4 La única forma confiable, repetible y transportable de garantizar que la sangría permanezca consistente en todos los entornos de visualización es sangrar su código usando solo espacios.
#5

Y luego usas fuentes proporcionales y te pones a depurar Python o YAML. :roll:
#14 Bueno, puedes clavar clavos utilizando una llave inglesa, pero utilizando un martillo te será más sencillo.
#5 Yo siempre programo con tabuladores, pero los que programáis con espacios ¿el editor ayuda de alguna manera para navegar por los espacios convirtiendo de tab a espacios o poniendo el cursor en la sangría más lógica? ¿o le dáis a la barra espaciadora y a los cursores hasta que os aburrís?
#19 El editor convierte cada tabulacion en la cantidad de espacios que tengas definida, generalmente en el linter.
#19 Sí, los editores convierten las tabulaciones a espacios. Yo siempre tabulo, pero es convertido a espacios.

Pero en serio, alguien usa el espacio para sangrar? Siempre he usado la tabulación, y la IDE se encarga de gestionarlo como sea. Así, no te preocupas. Y de que sea un estándar. Pero, lo normal es sangrar con la tabulación.
#25 lo que dices me parece la forma correcta, yo tambien lo hago asi y me produce desazon ver a gente usando espacios.

Por cierto abro otro melon:
1 TAB deberian ser dos espacios. Cuatro es una locura. 
#51 Cuántas veces me he pasado en un code review marcando todos los espacios de más como "whitespaces".
#51 Es la gracia de usar tabulador y no espacios. Luego cada uno configura el número de espacios por tabulador a su gusto.

Los que tabulan con espacios también imponen la sangría.
#71 Siempre que no sea Python, Scala o YAML, puedes ir a tu gusto. En algunos casos hay que usar simplemente normas para todos. En YAML tienes a veces bloques que definen configuración que va empotrada en otros archivos ( como ocurre a veces en Helm ) y tienes el sangrado de YAML + el sangardo del archivo de configuración, lo que hace imposible hacer las cosas al gusto de cada uno.
#19 ¿Programas con bloc de notas o nano?

Porque básicamente el resto de editores ya hacen eso que comentas por defecto desde hace más de una década (desde vim y Emacs hasta vscode y jetbrains, pasando por sublime, notepad++ y neovim).
#26 con Vim generalmente, pero las veces que he tenido que ir por un archivo con espacios no se me ha hecho cómoda la navegación por las columnas.
Convertir tabs a espacios no es problema, pero luego ir directo a la columna como si fueras de tab en tab no sé si hay que configurarlo o cómo lo hace la gente. Generalmente los editores por defecto no veo que tengan esa opción
#41 Tienes razón, vim y Emacs por defecto no lo hacen, pero vim a la que le metes alguna extensión para que tenga más funciones de IDE ya sí. Y veo muy hardcore programar con vim sin extensiones (o con vim directamente, que para eso está neovim).
#41 juraría que neovim lo hace de serie sin necesidades de extensiones cc #54
#5 ¿porqué narices quieres transportar tu código a otro sitio y que se vea exactamente igual? Precisamente es lo más horrible de usar tabulaciones, que si tú quieres 4 huecos y yo solo dos no nos vamos a poner de acuerdo, salvo que usemos el tabulador y cada uno lo configure a su gusto.

El código ha de estar correctamente identado para que sea fácil leer, y ya ni eso, que (salvo en Python y otras aberraciones) el IDE te identa automáticamente.

Salid del siglo XIX, hombre ya.
#34 Efectivamente, en Python es lo que dice PEP 8:

peps.python.org/pep-0008/#tabs-or-spaces
#34 Trabajo con un equipo que se empeña en poner saltos de linea en la linea 80, como se hacía en la época de los terminales. Y todos ellos usando pantallas 4k!!!
#5 Cierto. Pero yo le doy al tab porque me gusta ver el mundo arder.

De todas fornas cualquier IDE moderno yo creo que le puedes configurar que te reemplace el tab por espacios automáticamente. Lo mejor de los dos mundos.
#5 y con tabulaciones cada uno pone el espacio visual que le sea más útil.
Qué ventaja es que visualmente se vea igual en todos los entornos? Ninguna.
Go es con tabulaciones y va perfecto, y se ve muy bien, cada uno como quiere en su entorno.
#5 perdona, pero es EXACTAMENTE al revés

Te ahorras tiempo, espacio en disco, y encima cada usuario verá el código a su gusto personal.

Si a mi me gusta indentar a 5 espacios y a mi compañero a 3 espacios, qué hacemos? No tocamos nunca el código que haya escrito el otro?
Hay tontalabas por ahí que indentan a 1 espacio!!!!!!! Cómo puedes entender un código un poco complejo así??????


Por favor.....
#5 pues tienes razón, pero luego te vas dejando espacios que depende de como no parecen descoordinados, y luego todo baila
A dia de hoy, no hay ninguna eterna batalla. No uses tabulaciones, usa espacios.
Punto
#3 el video termina diciendo: "una tabulacion te ahorra 8 espacios"
A buen entendedor pocas palabras bastan :roll:
#17 El video termina bajando las escaleras de 8 en 8...
#57 o quizas es de 4 en 4... depende de la configuracion de las escaleras :roll:
Por eso es mejor usar espacios
#3 hace mucho que no me reía tanto...


Por favor! Todo el mundo lo sabe! El tabulador es la forma natural de indentar!
#3 Yo también prefiero Vim a Emacs. :-P
#2 ¿Por qué?
#4 y por donde ?
#4 Porque al dejar de ser caro el almacenamiento, el espacio da una flexibilidad que no da el tabulador. Hay quien prefiere indentaciones de dos caracteres, normalmente son de cuatro, etc.

Y porque los entornos de desarrollo modernos formatean automáticamente el código con un comando. El formato tiene un estándar, y hay que dedicarle el tiempo justo y evitar el bikeshedding.
#8 Hay quien prefiere indentaciones de dos caracteres, normalmente son de cuatro, etc.

Precisamente para eso parecería mejor usar el tabulador. Así tú después en tu entorno regulas si quieres que el tabulado corresponda con lo que ocupan dos caracteres o cuatro, y el resto de personas, lo que prefieran.
#8 El espacio da portabilidad, pero no flexibilidad: si pones dos espacios en vez de cuatro u ocho, pues tienes eso, y tienes que hacer reemplazos algo delicados para pasar de un ancho a otro.
El tabulador da flexibilidad: vas a propiedades y le dices "ahora quiero que el tabulador mida 4", y listo.
#4

Porque es casi todo YAML y no las acepta . xD
#2 Y la semana que viene hablaremos del Gobierno de la notación húngara :troll: .

La de discusiones inútiles que se tienen por un simple "es lo que siempre se ha hecho y no vamos a cambiar ahora", sin pensar que ni siquiera se sabe por qué se hacía, y por qué mantener eso puede ser un problema a la hora de integrarse con sistemas sin tanta obsolescencia.

Vamos, que al final es lo de siempre. Cuatro entienden algo del por qué, y la mayoría sigue la linde como buen Lemming.
#6 El porqué de usar TAB en el pasado, era para salvar algunos bytes, y evitar problemas de almacenamiento.
A dia de hoy no existe ese problema.

Es como la estupidez de limitar el largo de linea a 80 caracteres... que tenia mucho sentido en el pasado, puesto que los monitores no podian mostrar mas de 80 caracteres por linea, pero a fecha de hoy ya no existe tal limitacion.
#9 Donde trabajo aún tengo discusiones sobre si 120 se queda corto...

O en apps móviles donde al principio el instalable tenía lo mínimo porque el app completa no cabía en las stores. O el mismo YouTube que al principio no permitía subir vídeos de horas de duración.

O incluso un ejemplo de SSOO que me chutaron en la carrera. Cuando hay que cargar en caché una página de RAM tenía sentido hacer un algoritmo para elegir la que había que sacrificar en su lugar. Hasta que la caché progresó, se pudo cargar más páginas al mismo tiempo, y elegir a boleo empezó a dar el mismo rendimiento que calcular la elección. Ejemplos de limitaciones que se quedan obsoletas los hay a porrillo.
#9

puesto que los monitores no podian mostrar mas de 80 caracteres por linea

En realidad es muy anterior ... de las tarjetas perforadas que eran de 80 caracteres.

Monitores ... ¡menuda modernez! xD xD
#2 Quiero caña. ¡Hala! Ya puedes empezar a pegarte con #13 . :troll:
#2 se usa tabulador porque simplemente se puede ajustar la separación de este carácter en editores de texto, cosa que no se puede hacer con espacios. Cuando pongas parte del código en documentos en Word, se agradece poder ajustar el ancho del tabulador.
#18 ¡¡¡¿¿¿Por qué iba a querer hacer eso???!!!
#46 porque igual a ti te gusta tabular con 4 espacios y a mi con 6.
#2 A día de hoy no hay ninguna batalla. Usa lo que te salga de los cojones y, si es un proyecto compartido, deja que la herramienta para formatear definida en el repo haga su trabajo.
#2 Yo prefiero usar el carácter ASCII que es un cuadrado blanco indistinguible del espacio. :troll:
#28 ¿El 255?
#2 Si programas en Python usa espacios porque te lo exigen los linters. Pero si no, tabulador (almacenado en el archivo como barra t) mucho mejor que espacios.
Punto.
#31 almacenado en el archivo como barra t

En realidad se almacena (mayoritariamente) como 00001001 :troll:
#35 Correcto, tocapelotillas xD
Yo solo quería dejar claro que sin almacenar como espacios.
#2 a día de hoy las herramientas se encargan de formatear el código correctamente.
#2 por que lo diga un triste espacista!

los tabuladores haremos lo que nos dé la gana, que obviamente, es lo mejor!


Guerra tipográaaaaficaaa!!!!!!!
#2 #37 Sólo hay una cosa peor que los sincebollistas: los tabulistas.
#62 yo soy sincebollista y tabulista, así que ya me dirás


Guerra tipográficaaaaaaaaaaa!!!!!!!!!!
#66 ¡Muere!  media
El asunto del espacio ya es irrelevante. Pero el tabulador es mejor porque te aseguras de que quede claro y homogéneo el nivel de indentación de cada línea. Y esto no solo es aplicable con el código, también cuando escribes en Word y quieres indentar un párrafo, no metes 10 espacios. Pulsas el tabulador, que para eso existe.
Y lo que no es programar. Cualquiera que trabaje con yaml sabe de ese horror
#1 yaml, ese formato que me recuerda a currar con Cobol
Nivel cutre máximo: que te pasen un currículum con "Word nivel avanzado", le das a mostrar caracteres ocultos, y ves todo salpicado de espacios para intentar llevar las cosas al sitio.
#50 por eso los profesionales nunca mandamos un Word, imprimimos, escaneamos y mandamos el bmp
Uso espacios, pero solo uno. No me gusta despilfarrar bytes ni ancho de línea.
#16 A ti lo que te gusta es hacer el mal y sembrar el caos. Deberían retirarte el carnet de programador.

Edit: y a #20 también.
Es algo sobre lo que me rendí hace muchos años ya.
Aunque sea de subnormales, el espacio es el standard.
Pq un subnormal un día lo dijo y todos los lerdini le siguieron la bola.

Lo normal es que el ide ya te cambie el tabulador solo por los espacios.
Yo ya pongo espacios desde hace añisimos y si se te da por poner un tabulador no puedes subir el commit pq el prepush te manda a cagar.
Desde que programo tengo configurado que la tabulación se substituyan por 4 espacios, es lo más cómodo con diferencia
#27 Eso si trabajas solo.

Si trabajas conmigo y yo quiero 6 espacios, el código conjunto es una mierda.

Con tabuladores, cero problemas.
Usando espacios, tu TOC te lo agradecerá. El tabulador es para la gente mentalmente estable.
Madre mía, todavía estamos así...
Que indente el IDE. Me la refanfinfla lo que ponga, siempre lo hace bien.
Tabulaciones de 8 espacios? Qué se ha fumado el del artículo? 2 espacios y va que chuta.
Yo uso tabulaciones y que el editor me las convierta a espacios.
Tabulador siempre!
Yo solo he venido a ver como se pega la gente. Cojo palomitas.
yo lo que me de copilot y san seacabo.
Lo verdaderamente independiente de cualquier plataforma son los espacios: los tabuladores, el infierno, cada cual pone los espacios que le da la gana.
Usar espacios es ser un unos totalitarios de la indentación.
comentarios cerrados

menéame