Re: C coding

Jon Paris <[email protected]>
Newsgroups gmane.comp.lang.as400.c
Message-ID <[email protected]>
And I thought RPGers were easily offended - good grief Erik - don't take it all so seriously.

I do not personally think that C is a good language for business applications which was the point of my remark. But mostly I was coming from the perspective of Bjarne Stroustrup's comment that "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off".


On 2014-02-13, at 6:37 PM, Erik Olsson <[email protected]> wrote:

> If someone thinks of C as mainly a vehichle to help you shooting yourself
> in the foot then you should probably go into some business. That is just
> ignorant and moronic. The language at number 1 for feb 2014 in the TIOBE
> index, really? Remind me, where is RPG IV again? I guess the leaders of
> North Korea think they are the centre of the universe too.
> 
> A word on portability. Well, on a 1-100 scale where 1 is most portable and
> 100 the least I guess RPG IV is around 100 whereas ANSI C is well in the
> top 10. And the ILE C version is not particularly portable. Just looking at
> the runtime reference for 6.1, it does not differentiate between C99 and
> C89 (snprintf for instance), it's all categorised as ANSI. How is that for
> portability? z/OS - another lovely IBM OS - for instance clearly let's the
> developer choose the C level (apart from the ISO date flag on strftime that
> is always available, guess that's a bug).
> 
> 
> 
> 
> 
> 
> On 13 February 2014 19:55, Marc Hunter <marc-G5HfMHItY0AlJZD/[email protected]> wrote:
> 
>> ouch.
>> 
>> Something you could try is defining the string parm in the RPG procedure
>> definition as follows:
>> 
>> D Parm * value options(*STRING)
>> 
>> Then in the C/C++ code you can do this:
>> 
>> extern "C" int DoSomething(char * szParm)
>> {
>> string myStringParm = szParm;
>> 
>> // move on into OOP world here...
>> 
>> It keeps the RPG relatively simple, and the char *'s are converted to
>> strings as early as possible. A few extra copies of the data, but in
>> most cases the simplicity is worth it (imo).
>> 
>> Marc
>> 
>> 
>> On 2/13/2014 9:43 AM, Tim Bronski wrote:
>>> Yes, but the statement was the attempt to create a c++ string from a
>>> parameter passed from....an RPG program!
>>> 
>>> On 2/13/2014 6:36 PM, Marc Hunter wrote:
>>>> While I empathize, and certainly C++ also allows you to shoot yourself
>>>> in the foot, the code shown is philosophically (imo) a mix of C and C++
>>>> in that it uses char *s. Assuming both variables are strings then I
>>>> would code it as follows and avoid dipping into 'dangerous' char *
>>>> territory.
>>>> 
>>>> partName.insert(0, userName.substr(start, len));
>>>> 
>>>> (If I'm understanding the objective correctly)
>>>> 
>>>> Marc
>>>> 
>>>> On 2/13/2014 9:02 AM, Tim Bronski wrote:
>>>>> On 2/13/2014 5:23 PM, Jon Paris wrote:
>>>>>> I would have said that C was brilliant if your aim was to shoot
>> yourself in the foot and C++ does a better job of protecting you.
>>>>> Hi Jon, I would have let that slide but I've just finished tracking
>> down
>>>>> a bug where c++ was using a different overloaded string function than
>>>>> the one intended. Here's what the statement should have been:
>>>>> partName.insert(0, &userName[start],  len);
>>>>> but instead it was
>>>>> partName.insert(0, userName[start],  len);
>>>>> 
>>>>> This compiles fine but the result was heinous...the c compiler would
>>>>> have caught that one.
>> 
>> --
>> This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L)
>> mailing list
>> To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
>> To subscribe, unsubscribe, or change list options,
>> visit: http://lists.midrange.com/mailman/listinfo/c400-l
>> or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
>> Before posting, please take a moment to review the archives
>> at http://archive.midrange.com/c400-l.
>> 
>> 
> -- 
> This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
> To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/c400-l
> or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/c400-l.
> 

Jon Paris

www.partner400.com
www.SystemiDeveloper.com




-- 
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.