Article View: es.comp.os.linux.programacion
Article #7375Re: Consejos para aprender a programar???
From: Pascal Bourguignon
Date: Tue, 04 Mar 2003 12:19
Date: Tue, 04 Mar 2003 12:19
83 lines
4885 bytes
4885 bytes
Zephryn Xirdal <zephrynxirdal@telefonica.net> writes:
> IRI wrote:
>
> >> De hecho, escuche varios de proyectos donde vovieron al C despues del
> >> C++. Por ejemplo, el sistema operativo EROS empez� con C++, pero
> >> ahora se ha reescrito en C.
> >
> > YA!!...... pero porque????
> >
> > Salu2!!
> Estoy haciendo en estos momentos un proyecto embebido "grande" (por lo menos
> para mi), que va a tener unas 30.000 l�neas de c�digo...
> Empec� en C, pas� a C++ y he vuelto a C.
>
> �Por qu�?
>
> Pues por varias razones: tras modelizar partes del asunto mediante clases,
> jerarqu�as, etc, me di cuenta de que el c�digo ocupaba bastante (un 30%
> m�s), ten�a que usar m�s memoria (para mantener ciertas variables internas
> a la clase), todas las llamadas a funci�n (m�todos) usaban un par�metro
> extra (el objeto "this", cosa que ya sab�a), el compilador me generaba una
> cantidad de c�digo oculto asombrosa (y no usaba nada virtual), me ocupaba
> en tablas internas y dem�s casi toda la RAM disponible (8K) y me dejaba
> poco para m�... (Todo esto, por supuesto en modo EC++).
>
> Y cuando descubr� que en el compilador de C pod�a definir elementos "static
> const" sin sobrecarga de nada, y que me permit�a "inlines" a mi antojo, me
> decid� a pasar de nuevo al C.
>
> El mayor problema del C est�ndar (imho), es que muchos "n�meros m�gicos"
> deben de ir mediante defines, con el consiguiente problema de inseguridad
> de comprobaci�n de tipos, y si quieres una funci�n inline (para ocultar
> variables globales) hab�as de hacerlas mediante defines.
Ahora puedes usar enum y const variables y eliminar quasi todas las
macros.
Por ejemplo en /usr/include/sysexists.h debria ser:
enum {
EX_OK = 0,
EX__BASE = 64,
EX_USAGE = EX__BASE,
EX_DATAERR, /* data format error */
EX_NOINPUT, /* cannot open input */
EX_NOUSER, /* addressee unknown */
EX_NOHOST, /* host name unknown */
EX_UNAVAILABLE, /* service unavailable */
EX_SOFTWARE, /* internal software error */
EX_OSERR, /* system error (e.g., can't fork) */
EX_OSFILE, /* critical OS file missing */
EX_CANTCREAT, /* can't create (user) output file */
EX_IOERR, /* input/output error */
EX_TEMPFAIL, /* temp failure; user is invited to retry */
EX_PROTOCOL, /* remote error in protocol */
EX_NOPERM, /* permission denied */
EX_CONFIG, /* configuration error */
EX__MAX = EX_CONFIG /* maximum listed value */
};
y en math.h, debria ser:
const double M_E = 2.7182818284590452354 ; /*e*/
const double M_LOG2E = 1.4426950408889634074 ; /*log_2e*/
const double M_LOG10E = 0.43429448190325182765 ; /*log_10e*/
const double M_LN2 = 0.69314718055994530942 ; /*log_e2*/
const double M_LN10 = 2.30258509299404568402 ; /*log_e10*/
const double M_PI = 3.14159265358979323846 ; /*pi*/
const double M_PI_2 = 1.57079632679489661923 ; /*pi/2*/
const double M_PI_4 = 0.78539816339744830962 ; /*pi/4*/
const double M_1_PI = 0.31830988618379067154 ; /*1/pi*/
const double M_2_PI = 0.63661977236758134308 ; /*2/pi*/
const double M_2_SQRTPI = 1.12837916709551257390 ; /*2/sqrt(pi)*/
const double M_SQRT2 = 1.41421356237309504880 ; /*sqrt(2)*/
const double M_SQRT1_2 = 0.70710678118654752440 ; /*1/sqrt(2)*/
--
__Pascal_Bourguignon__ http://www.informatimago.com/
----------------------------------------------------------------------
There is a fault in reality. Do not adjust your minds. -- Salman Rushdie
Technical Details
Message-ID:
<87k7ff729e.fsf@thalassa.informatimago.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!213.220.35.225!not-for-mailReferences:
<oprk2383sc0o9sze@news.entelchile.net> <877kbofb9m.fsf@thalassa.informatimago.com> <3E5BC27C.AD066A70@terra.es> <87ptpfdkdf.fsf@thalassa.informatimago.com> <3e5d224e_2@nova.entelchile.net> <b3l91g$1nglkj$1@ID-173561.news.dfncis.de>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,37f54a849f40e52d X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-03-04 04:19:28 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!213.220.35.225!not-for-mail From: Pascal Bourguignon <pjb@informatimago.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: Consejos para aprender a programar??? Date: 04 Mar 2003 13:19:25 +0100 Organization: informatimago.com Lines: 83 Sender: pascal@thalassa.informatimago.com Message-ID: <87k7ff729e.fsf@thalassa.informatimago.com> References: <oprk2383sc0o9sze@news.entelchile.net> <877kbofb9m.fsf@thalassa.informatimago.com> <3E5BC27C.AD066A70@terra.es> <87ptpfdkdf.fsf@thalassa.informatimago.com> <3e5d224e_2@nova.entelchile.net> <b3l91g$1nglkj$1@ID-173561.news.dfncis.de> NNTP-Posting-Host: 213.220.35.225 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1046780367 61809165 213.220.35.225 (16 [41911]) User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50