🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7375

Re: Consejos para aprender a programar???

#7375
From: Pascal Bourguignon
Date: Tue, 04 Mar 2003 12:19
83 lines
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-mail
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>

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