Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: @synthesize en 23 Mayo 2010, 00:33 am



Título: Librería
Publicado por: @synthesize en 23 Mayo 2010, 00:33 am
ATS.H

ATS 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:
Código
  1.        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.


Título: Re: Librería
Publicado por: leogtz en 23 Mayo 2010, 01:29 am
¿Funciones de qué tipo?


Título: Re: Librería
Publicado por: @synthesize en 23 Mayo 2010, 01:48 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..


Título: Re: Librería
Publicado por: nicolas_cof en 24 Mayo 2010, 04:22 am
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

Código:
void
cleanstdin()
{
    int ch;

    while ( ( ch = fgetc( stdin ) ) != EOF && ch != '\n' );
}

Salu10.



Título: Re: Librería
Publicado por: Littlehorse en 24 Mayo 2010, 04:41 am
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!


Título: Re: Librería
Publicado por: nicolas_cof en 24 Mayo 2010, 04:47 am
Cita de: Littlehorse
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.

 ;D Perdon me entusiasme!!!

Bueno de mas esta decir que me apunto para el proyecto...

Salu10.


Título: Re: Librería
Publicado por: @synthesize 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. 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.


Título: Re: Librería
Publicado por: Eternal Idol en 24 Mayo 2010, 21:47 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?


Título: Re: Librería
Publicado por: @synthesize en 24 Mayo 2010, 21:50 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.


Título: Re: Librería
Publicado por: 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.


Título: Re: Librería
Publicado por: @synthesize en 24 Mayo 2010, 22:14 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 ^^


Título: Re: Librería
Publicado por: Foxy Rider en 24 Mayo 2010, 23:45 pm
Yo más que SourceForge diría github o gitorious ...

Saludos.


Título: Re: Librería
Publicado por: Gallu 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 ?


Título: Re: Librería
Publicado por: eagle17 en 26 Mayo 2010, 12:33 pm
A mí también me gustaría aportar mi granito de arena, si puede ser!

Salu2  ;D


Título: Re: Librería
Publicado por: @synthesize en 26 Mayo 2010, 19:46 pm
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


Título: Re: Librería
Publicado por: @synthesize en 28 Mayo 2010, 22:57 pm
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?


Título: Re: Librería
Publicado por: Horricreu en 28 Mayo 2010, 23:03 pm
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


Título: Re: Librería
Publicado por: Foxy Rider 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]()

Código
  1. inline double atsPow2d(double base, double exp)
  2. {
  3.    return pow(base,exp); // aca iria un codigo que haga algo mas interesante que wrappear pow()
  4. }
  5.  
(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


Título: Re: Librería
Publicado por: @synthesize en 29 Mayo 2010, 01:42 am
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]()

Código
  1. inline double atsPow2d(double base, double exp)
  2. {
  3.    return pow(base,exp); // aca iria un codigo que haga algo mas interesante que wrappear pow()
  4. }
  5.  
(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...


Título: Re: Librería
Publicado por: 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!


Título: Re: Librería
Publicado por: @synthesize en 29 Mayo 2010, 06:58 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!


Título: Re: Librería
Publicado por: nicolas_cof en 29 Mayo 2010, 07:42 am
La verdad esta buena la idea de definir las funciones de la manera que plantea vertex@Symphony

Código:
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

Código:
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.


Título: Re: Librería
Publicado por: @synthesize en 5 Junio 2010, 06:39 am
Ya he añadido la primera discursión sobre una función... ^^


Título: Re: Librería
Publicado por: cbug en 27 Junio 2010, 04:26 am
¿Qué pasó con el proyecto?


Título: Re: Librería
Publicado por: nicolas_cof en 27 Junio 2010, 04:35 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.


Título: Re: Librería
Publicado por: @synthesize en 27 Junio 2010, 05:12 am
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  ;)