¿Cuál es la razón para usar nombres de llamadas de sistema de descalificación como time
y en creat
lugar de getCurrentTimeSecs
y createFile
o, tal vez más adecuado en Unix get_current_time_secs
y create_file
? Lo que me lleva al siguiente punto: ¿por qué alguien debería querer algo como cfsetospeed
sin el caso de camello o al menos pone de relieve para que sea legible? Por supuesto, las llamadas tendrían más caracteres, pero todos sabemos que la legibilidad del código es más importante, ¿verdad?
history
posix
system-calls
Benjoyo
fuente
fuente
ls -la | grep
mirar gustaría:listAllHiddenAndNormalFiles() | globallySearchARegularExpressionAndPrint()
.Respuestas:
Se debe a las limitaciones técnicas de la época. El estándar POSIX se creó en la década de 1980 y se refería a UNIX, que nació en la década de 1970. Varios compiladores de C en ese momento se limitaban a identificadores que tenían 6 u 8 caracteres de largo, por lo que se estableció el estándar para la longitud de la variable y la función nombres
Preguntas relacionadas:
fuente
get_current_date()
yget_current_time()
algunas de estas primeras cadenas de herramientas no podían distinguirlo. La razón fue que estos sistemas estaban trabajando en pequeñas huellas de unos pocos kilobytes.creat()
. Una vez se le preguntó a Ken Thompson qué haría de manera diferente si estuviera rediseñando el sistema UNIX. Su respuesta: "Deletrearía creat con una e".dr01 tiene razón, pero también hay otra razón: usabilidad. En el pasado, no tenías algo tan cómodo como un teclado para escribir. Si tuvo suerte, tenía algo parecido a una máquina de escribir de la vieja escuela. Si no tuvo suerte, tuvo que lidiar con sistemas que requerían trabajo físico real para operar (como en, se requería mucha fuerza para presionar la "tecla"), o perforaba agujeros manualmente en una tarjeta.
Esto significaba que incluso dentro del límite de 6-8 caracteres, trataste de mantener tus comandos lo más cortos posible. Es por eso que tienes en
ls
lugar delist
, y encreat
lugar decreate
. El código de esa época está lleno de variables comoa
,x
yi
, por supuesto,x2
y amigos. Mecanografiar fue mucho trabajo: hoy en día, te esfuerzas menos por escribirlistIndex
de lo que solías ser por "mecanografiar"i
, y ya ni siquiera es más lento (especialmente con tecnologías adicionales como la finalización automática).La verdadera pregunta es: ¿por qué persisten tantos modismos de Unix a pesar de que ya no son deseables?
fuente
time
agetCurrentTimeSecs
, o algo por el estilo, sólo voy a la mejora detenerlo. Incluso con mi teclado cómodo y hardware reciente, estos nombres siguen siendo extremadamente convenientes y simples (la simplicidad es uno de los fundamentos de UNIX). Realmente no siento la necesidad de llevar ese tipo de nombres de estilo Java / C # al lenguaje C, y mucho menos en un kernel de Linux. En mi opinión, desde la perspectiva de un desarrollador de kernel, o un desarrollador de UNIX en general, estos modismos no son nada indeseables .unRootlyLongNamed.Packaged.nonsensicalFunction
es feo para mí, y prefiero estar seguro de lo que hace haciendoman 2 time
que adivinar lo que parece hacer.get_X
oremove_file_from_cache
(¿podría proponerlormfc
?) No son deseables para los desarrolladores del kernel, hágalo públicamente; me encantaría ver su reacción.Además de las otras respuestas, me gustaría señalar que Unix se desarrolló como una reacción a Multics, CTSS y otros sistemas operativos contemporáneos, que fueron significativamente más detallados sobre sus convenciones de nomenclatura. Puede tener una idea de estos sistemas operativos en http://www.multicians.org/devdoc.html . Por ejemplo, http://www.multicians.org/mspm-bx-1-00.html da
change_name
como el comando para renombrar un archivo; comparar Unixmv
.Además, la razón principal por la que persisten los nombres de sistema muy cortos es la compatibilidad con versiones anteriores. Notarás que las API más nuevas tienden a ser más explícitas; por ejemplo,
gettimeofday
y enclock_gettime
lugar de solotime
.(Incluso hoy, usar en
whateverIndex
lugar dei
un índice de bucle es un error de revisión automática de código en mi libro ;-)fuente
i
está bien para un índice cuando, por ejemplo, está iterando una matriz. ¿Coordenadas? ¿Usarx
yy
. Atravesar un ordinal? Sea descriptivo.)Dennis Ritchie se impuso una restricción con C de que no se basaría en ninguna función de enlace que no fuera requerida por Fortran. De ahí el límite de 6 caracteres en los nombres externos.
fuente