ATS.HATS es un proyecto de librería para el lenguaje de programación C. ATS significa "Alternative to Standard" (Alternativa al estándar) y tiene como propósito recoger algunas funciones útiles y sencillas, pero pesadas a la hora de ser escritas.
Colaboradores:
- Creador: GNU_López (Sergio López)
- Colaborador: nicolas_cof
- Colaborador: Didacso
- Colaborador: eagle17
- ...
Discursiones sobre Funciones y procedimientos:atsInNum() http://foro.elhacker.net/programacion_cc/atsinnum-t295749.0.html (http://foro.elhacker.net/programacion_cc/atsinnum-t295749.0.html)
/**********************************************/
Si quieres colaborar, envíame un MP y te añadiré a la lista.
¿Qué va a ser ats?Mi idea es crear un archivo de cabecera libre para el lenguaje de programación C, que ofrezca varias funciones nuevas, y la sustitución de algunas estándar para poder darlas un mayor uso. Cualquier persona puede colaborar, tanto aportando ideas, como aportando código, corrigiendo fallos, escribiendo archivos de ayuda, etc.
¿Qué funciones podré usar?(Esta explicación va a variar dependiendo del desarrollo de la cabecera) Lo ideal es ofrecer una lista de funciones matemáticas, y de entrada y salida de datos.
Página en SourceForge:http://atshead.sourceforge.net/ (http://atshead.sourceforge.net/)
Prototipo:
http://sourceforge.net/projects/atshead/files/prototype.c/download (http://sourceforge.net/projects/atshead/files/prototype.c/download)
Especificaciones de Diseño: (Escribiendo...)
En este documento es especifica la forma en la que se debe escribir funciones
para la cabecera ats. Esto es necesario para que no se mezclen todos los estilos
de programación de todos los colaboradores que escriban código; De esta forma,
se mantendrá un orden interno en cuanto a la estructura.
1. Comentarios* Se debe especificar en cada prototipo de función, con un comentario, la utilidad
de la misma. En caso de ser una función muy grande/usada dentro de la cabecera,
el comentario debe especificar también la forma de usar los parámetros, el trabajo
interno, y los valores de retorno.
* Es aconsejable también comentar en las variables muy usadas o importante, explicado
para que las usamos.
* Es conveniente también que los comentarios estén en inglés, pues es el idioma mas usado
en la programación, aunque, no estaría de mas que estuviera tanto en Castellano como en Inglés,
siendo aśi de fácil lectura para un grupo mas grande de usuarios.
2. Identificadores* Es conveniente usar identificadores que no puedan ser usados por otras librerías, por
ello es recomendable seguir este modelo:
- Ejemplo de prototipo de función:
int ats_pedir_enteros(int a, int b)
Nótese el uso de 'ats_' al principio, y que el nombre de la función describe también el
funcionamiento de la misma.
3. Funciones* Todas las funciones usadas deben ser estándar, así como tienen optimizadas para ser usadas
en la mayor cantidad de compiladores/sistemas. Es necesario no usar funciones como system
o fflush.
4. Diseño
* La cabecera tendrá la siguiente forma:
Inicio
|
|_ Cabeceras estándar (
#include...)
|_ Definidos (
#define...)
|
|
|_ Preámbulo
|
|
|_ Prototipos de función
|_ Comentarios de funciones importantes
|
|
|_ Funciones
|
|
|_ Referencia para programadores (Explicación sencilla sobre el uso de ats)
|
|_ EOF
5. Algunos consejos* Es conveniente no usar, bajo ningún concepto, bucles infinitos o descontrolados,
así como intentar optimizar el código al máximo,de tal forma que intentemos ahorrar
código y mejorar la funcionalidad. Así mismo, es importante intentar no usar recursividad,
identificadores de variables repetidos, o funciones con semejante funcionamiento.
Escrito y corregido por: Sergio L, Nicolás.
Proyecto
Preámbulo de la cabecera:
Citar
/*
* ATS.h
* Alternative to Standard Head
*
* ats es una cabecera libre (Bajo licencia GPLv3)
* la cual provee varias funciones. La idea
* principal, es que estas funciones sean matemáticas
* y de entrada/salida, bajo plataformas
* GNU/Linux.
*
* Se puede seguir su desarrollo en elhacker.net
* y en sourceforge.net.
*
* Creada inicialmente por: Sergio López
*
* sergiolopezsanz@hotmail.es
*
* http://atshead.sourceforge.net/
*
* 24 de Mayo, 2010
*
*/
El contenido del post puede variar, acorde al desarrollo de la cabecera ATS. Los archivos de ATS están bajo licencia pública GPLv3.
¿Funciones de qué tipo?
Cita de: Leo Gutiérrez. en 23 Mayo 2010, 01:29 AM
¿Funciones de qué tipo?
últimamente estoy necesitando muchas de estilo entrada de datos(Sobretodo funciones con cadenas :-\ ) Y pensé en hacerme una buena librería para no tener que reescribir código tantas veces. Es solo un ejemplo, supongo que lo bueno sería ver que cosas suele querer la gente, e intentar adaptarlo..
Mmmmmm parece interesante la idea GNU López
Yo dejo mi primer aporte! Lo que si mas o menos tendrias que tirar los paremetros de las funciones y el objetivo de cada una de las que piensas incluir en dicha libreria para que las podamos programar :P
void
cleanstdin()
{
int ch;
while ( ( ch = fgetc( stdin ) ) != EOF && ch != '\n' );
}
Salu10.
Primero y principal hay que aclarar varias cosas:
Lo primero es quienes van a participar, de lo contrario cualquiera va a llegar y a poner un código sin siquiera tal vez conocer los requisitos para poner un código. Seria un desorden.
Por otro lado, respecto de los requisitos, lo ideal es que cada usuario que codifique su función haga como mínimo una documentación de como se utiliza, sus parámetros y su valor de retorno.
Otra cosa importante es que las funciones estén testeadas y elaboradas. Control de parámetros por ejemplo, valores de retorno útiles y demás. Nada de funciones void copiarcad y un for, por si va a ser así la verdad no tiene ningún sentido.
Como bien dijo Nico, hay que dejar en claro cual es el objetivo general de las funciones, para asi cada uno puede ir viendo que hacer y que no.
No se si tendré tiempo de codificar algo, tal vez el fin de semana. Igualmente pasare cada tanto para revisar los códigos. ;D
Saludos!
Cita de: LittlehorsePrimero y principal hay que aclarar varias cosas:
Lo primero es quienes van a participar, de lo contrario cualquiera va a llegar y a poner un código sin siquiera tal vez conocer los requisitos para poner un código. Seria un desorden.
Por otro lado, respecto de los requisitos, lo ideal es que cada usuario que codifique su función haga como mínimo una documentación de como se utiliza, sus parámetros y su valor de retorno.
Otra cosa importante es que las funciones estén testeadas y elaboradas. Control de parámetros por ejemplo, valores de retorno útiles y demás. Nada de funciones void copiarcad y un for, por si va a ser así la verdad no tiene ningún sentido.
;D Perdon me entusiasme!!!
Bueno de mas esta decir que me apunto para el proyecto...
Salu10.
Bueno, estuve pensado y he llegado a las siguientes conclusiones: Llevar un post en el foro con el source de la librería, llevar adjuntada la documentación de la misma, y las especificaciones de funciones y retornos. A la par, una lista de colaboradores y unas 'normas' para quien quiera aportar o corregir source. Como bien habéis dicho, todo debe estar testeado, y, a ser posible, que las funciones usen cabeceras estándar para poder ser mas portables.
En cuanto al contenido, me gustaría que fuera un sustituto de algunas funciones ya existentes (Matemáticas sobretodo) y algunas funciones de entrada/salida de datos. Claro, esta es mi idea, creo que lo mejor es que fuera de propósito general.
¿Qué os parece? Si os animáis, vamos creando el post con los primeros colaboradores, y vamos trabajando en las normas y tal.
Cita de: GNU López en 24 Mayo 2010, 20:37 PM
Bueno, estuve pensado y he llegado a las siguientes conclusiones: Llevar un post en el foro con el source de la librería, llevar adjuntada la documentación de la misma, y las especificaciones de funciones y retornos. A la par, una lista de colaboradores y unas 'normas' para quien quiera aportar o corregir source.
¿No esta creado expresamente para esto SourceForge?
Cita de: Eternal Idol en 24 Mayo 2010, 21:47 PM
Cita de: GNU López en 24 Mayo 2010, 20:37 PM
Bueno, estuve pensado y he llegado a las siguientes conclusiones: Llevar un post en el foro con el source de la librería, llevar adjuntada la documentación de la misma, y las especificaciones de funciones y retornos. A la par, una lista de colaboradores y unas 'normas' para quien quiera aportar o corregir source.
¿No esta creado expresamente para esto SourceForge?
No he leído las condiciones, pero me imagino que si XD Pero supongo que la gracia es hacerlo directamente desde el foro. Aún así, SF es muy buena idea.
Lo primero es modificar el post inicial con la lista de colaboradores, los requerimientos para las funciones y los objetivos. Elabora un post explicando mas o menos de que va el tema así la gente se va sumando, si no queda todo en el aire.
Los que se quieran ir sumando hacen un post aqui o envían un pm a GNU.
Cuando todo eso este terminado, pasamos a sourceforge o a cualquier otra. Es mucho mas ordenado así, ya que cuando el hilo se haga muy largo va a ser muy molesto de seguir.
Cita de: Littlehorse en 24 Mayo 2010, 22:01 PM
Lo primero es modificar el post inicial con la lista de colaboradores, los requerimientos para las funciones y los objetivos. Elabora un post explicando mas o menos de que va el tema así la gente se va sumando, si no queda todo en el aire.
Los que se quieran ir sumando hacen un post aqui o envían un pm a GNU.
Cuando todo eso este terminado, pasamos a sourceforge o a cualquier otra. Es mucho mas ordenado así, ya que cuando el hilo se haga muy largo va a ser muy molesto de seguir.
Ya he empezado ^^
Yo más que SourceForge diría github o gitorious ...
Saludos.
Pienso que sería buena idea incluir la implementación de TAD's (árboles , pilas , colas) que les parece ?
A mí también me gustaría aportar mi granito de arena, si puede ser!
Salu2 ;D
Cita de: Didacso en 26 Mayo 2010, 09:17 AM
Pienso que sería buena idea incluir la implementación de TAD's (árboles , pilas , colas) que les parece ?
Siempre que sea necesario, es mejor organizar bien los datos :P
Tengo una primera idea... Siempre estoy escribiendo funciones para recoger números, entre x y n... Mi idea es una función, int, a la cual se la pasa como parámetro el inicio y límite, para que la función recoja n número entre esos 2 valores.
Pseudo;
int ats_readNum(int min, int max);
inicio funcion()
declaro num;
limpiar buffer;
mientras (num>min && num<max)
limpiar buffer;
pedir num;
fin mientras;
devolver num;
fin funcion
Os gusta?
Muy bonito pero, ¿por qué hacéis esto, si con un par de for(), no en este ejemplo, o lo que sea lo tenéis?
Es que así, uno no aprende C/C++.
Saludos :P
Espero no quedar muy criticón, es con buena intención, lo prometo ! (?)
Primero, la convención de nombres no me agrada, no es estético un guión parado en medio de la función, creo que el esquema de nombres debería similar al de OpenGL (del cual varias librerías tomaron el esquemas de nombre, como OpenCL, OpenAL, CUDA, Runtime de Cg, etc ...) ...
[prefijo][Comando][Muy Opcional : número de parámetros y tipos de datos]()
inline double atsPow2d(double base, double exp)
{
return pow(base,exp); // aca iria un codigo que haga algo mas interesante que wrappear pow()
}
(si creativísimo el ejemplo, hay sueño, es lo que hay xD)
siendo [ats] el prefijo, [Pow] el comando, [2] la cantidad de parámetros y [d] el tipo de dato ....
como dije, el tipo de dato y cantidad de parámetros es opcional,muy ... dependiendo de lo que implementen ...
también una mini convención de como hacer las funciones, que formato visual deben tener ... (si el coding style es GNU, ISO, etc ...)
y como dividirían los encabezados (dentro de una carpeta, subcarpetas, un .h ... ) ... son varias cuestiones ...
aunque , ahora que lo pienso ... no veo claro lo que quieren hacer y en el sourceforge todavía no hay una sola línea de código ... (y de acuerdo al primer post original y un segundo post + pseudocode... me da la sensación de que esto es un eufemismo para que terceros programen, espero equivocarme)
Saludos.
P.S : vuelvo a pokear el asunto de git
Cita de: vertex@Symphony en 28 Mayo 2010, 23:54 PM
Espero no quedar muy criticón, es con buena intención, lo prometo ! (?)
Primero, la convención de nombres no me agrada, no es estético un guión parado en medio de la función, creo que el esquema de nombres debería similar al de OpenGL (del cual varias librerías tomaron el esquemas de nombre, como OpenCL, OpenAL, CUDA, Runtime de Cg, etc ...) ...
[prefijo][Comando][Muy Opcional : número de parámetros y tipos de datos]()
inline double atsPow2d(double base, double exp)
{
return pow(base,exp); // aca iria un codigo que haga algo mas interesante que wrappear pow()
}
(si creativísimo el ejemplo, hay sueño, es lo que hay xD)
siendo [ats] el prefijo, [Pow] el comando, [2] la cantidad de parámetros y [d] el tipo de dato ....
como dije, el tipo de dato y cantidad de parámetros es opcional,muy ... dependiendo de lo que implementen ...
también una mini convención de como hacer las funciones, que formato visual deben tener ... (si el coding style es GNU, ISO, etc ...)
y como dividirían los encabezados (dentro de una carpeta, subcarpetas, un .h ... ) ... son varias cuestiones ...
aunque , ahora que lo pienso ... no veo claro lo que quieren hacer y en el sourceforge todavía no hay una sola línea de código ... (y de acuerdo al primer post original y un segundo post + pseudocode... me da la sensación de que esto es un eufemismo para que terceros programen, espero equivocarme)
Saludos.
P.S : vuelvo a pokear el asunto de git
El 'formato visual' ya lo hemos intentado definir, al igual que la organización. Lo del estilo OpenGL me ha gustado bastante, voy a estudiar como implementarlo! ;D
EN SF no hay líneas escritas porque todavía no hay código escrito, y no es para que terceros programen, el objetivo es que cada uno que quiera colaborar, colabore con sus ideas y conocimientos...
¡Buenas!
A mi, si se me dice que es lo que tengo que codificar, y que reglas de estilo tengo que seguir, me apunto. No es cuestion de ponerse a teclear y producir en serie un monton de clones de una misma funcion...
¡Saludos!
Cita de: do-while en 29 Mayo 2010, 06:38 AM
¡Buenas!
A mi, si se me dice que es lo que tengo que codificar, y que reglas de estilo tengo que seguir, me apunto. No es cuestion de ponerse a teclear y producir en serie un monton de clones de una misma funcion...
¡Saludos!
Lee el post inicial, estamos definiendo reglas, diseños, tal y cual, para organizarlo todo lo mejor posible!
La verdad esta buena la idea de definir las funciones de la manera que plantea vertex@Symphony
atsNombreFuncion()
Lo que no me convence mucho es la idea de poner la cantidad de parametros y el tipo, ya que seria feo y confuso de ver...
Me lo imagino en una funcion que toma 3 parametros donde el tipo del primero es un char*, el segundo un char* y el tercero un int
atsNombreFuncion3icpcp()
WTF :huh:
Otro tema a tener en cuenta, es de que cada idea de alguna funcion que tenga un colaborador o un usuario que quiere aportar al proyecto, le mande un mp o un mail a GNU López (http://foro.elhacker.net/profiles/webserch-u373469.html) para que el las vaya colocando en el post inicial.
Ya que como bien decia Littlehorse el hilo se termina haciendo muy largo y va a ser muy molesto de seguir.
Otra cosa que estaria buena, seria implementar un sistema de votos para las ideas que se vayan proponiendo.
Salu10.
Ya he añadido la primera discursión sobre una función... ^^
¿Qué pasó con el proyecto?
Cita de: cbug en 27 Junio 2010, 04:26 AM
¿Qué pasó con el proyecto?
Yo por mi parte ultimamente no tengo mucho tiempo, pero apenas se me pase un poco esta etapa de finales :P, tratare de aportar algunas ideas...
Igual aca el director de la orquesta es
Daemon Freedom...
Salu10.
Creo que esta es época de exá,enes y estúdios para todos. Yo ya estoy con el trabajo de fin de curso. Espero que pronto podamos empezar a escribir ;)