On 2/10/2012 12:43 PM, BGB wrote:
On 2/10/2012 9:51 AM, Lew wrote:
BGB wrote:
if one is using C, then it is either "write some code to do it", or
suffer with a 3rd party [sic] library dependency (one might validly
choose to
write the code themselves in this case).
"Suffer"? The XML parsers for C are well-established, very reliable,
and no
cause for suffering. Using a pejorative is not the same as
establishing a
point.
There is nothing wrong with the third-party libraries, and the
choice to
roll your own for C is rarely valid. You seem to suffer from NIH
syndrome.
they introduce porting hassles:
does one bundle "libxml" with their app on Windows;
do they use MSXML and then deal with having to switch over to "libxml"
when building on Linux?
LIBXML2 works fine on Windows, so you can use it on both platforms.
yeah, it is an option.
however, it is not a standard library on Windows (in certain cases, one
may need to provide for it, or expect anyone who wants to build from
source to provide for it, ...).
C is not standard on Windows either.
You need to get some things.
probably, but it is a question of how many things have to be worried
about as a part of getting it built (for someone wanting to rebuild from
source). if a program depends on a big pile of 3rd party libraries, it
may be harder to get rebuilt than if it doesn't.
it is arguably bad enough requiring that a particular C compiler be
installed (such as MSVC / Windows SDK), and that the program has to be
built in a certain way.
expecting the person to go download a bunch of libraries, get them
built, and put them all in the library and include paths, well, this is
adding a bit more to the cost.
this particular cost is a bit lower on Linux though, since 3rd party
libraries are more commonly available and are handled more gracefully
(nearly everything gets installed to "/usr/lib" and "/usr/include" and
similar).
alternatively, one could be like:
this app needs to be built in Cygwin.
the tradeoff though is that Cygwin has its own annoyances (needing to
have their DLL with compiled binaries, and the tendency for it to always
have a console window pop up for the app if it wasn't launched from a
console).
MinGW is a little nicer than Cygwin regarding the above, however it
doesn't come by default with a large pile of 3rd party libraries (so, it
has the same basic issue here as MSVC).
it is not that I haven't used any 3rd party libraries though, as a few
have been used, but essentially copied into the project. a few past
libraries were used, but later dropped since I had re-implemented their
functionality in smaller forms.
this avoids needing them as external dependencies, since then they are
built along with the application (then they are internal dependencies).
yeah, even within the same program, the matter of "what is allowed to
use and depend on what" can become its own issue (if one doesn't pay
attention to these internal dependencies, they may come around and bite).
Because what you learn the most from and what is most cost efficient for
the company may very well be two different things.
well, it is possible.
often it ends up with a cycle where something is implemented once (or
maybe a few times), and very often if something similar is needed later,
code is reused via "copy/paste/edit" magic.
in my case though, admittedly I am not actually employed as a
programmer, but am more of a college student + independent game
developer (mostly working on a 3D FPS style game). like, one has to
"face the impossible" and so on (and, with luck, getting something on
the market and getting enough money to live on, and trying to make newer
and better stuff, ...).
admittedly, a person who was notable influence for me was John Carmack,
who was the lead programmer for id Software, and was well known for the
Doom and Quake series games. I learned a fair amount from his code
(since he tends to release it all under the GPL).
others influences include Linus Torvalds (who created Linux) and Notch
(Marcus Persson, most well known for creating Minecraft). the Linux
kernel was a notable influence on me regarding things like program
architecture and similar.
in my case this also means dealing with with the all art, sound, music,
.... as well, so one tries to gain skills both as a programmer and as an
artist. I consider myself to be much more of a programmer than an artist
though (I started out programming, and the art can't do much without the
code).
there is still a lot of areas for learning and experimentation though.
or such...