How Many of You Program?

Page 2 - Seeking answers? Join the Tom's Hardware community: where nearly two million members share solutions and discuss the latest tech.
This site is full of hardware geniuses, but I am totally curious how many of you program. I've been programming for a few years myself and am highly skilled especially in web design. Do you have any programming experience?

I hope this topic fits, I thought it'd be interesting to see how many hardware people know programming.
 

anti-duck

Honorable


C# can be really powerful but the syntax is relatively easy when you get the hang of it, it's not hard and definitely the easiest iteration of C, I didn't find it much more difficult than JavaScript. The really good thing about C# is that it is very similar to Java, so once you know one, you basically know both.
 

randomizer

Champion
Moderator
In the case of both Java and C# the language syntax is only a small part of what you need to learn. Each language is typically used in conjunction with an enormous standard library of classes and modules that allow you to get things done, rather than just write code. Of course you'll rarely use more than a small subset of the standard libraries for any given project, so you'll be spending lots of time reading documentation for the bits you use less frequently.
 

galerecon

Distinguished
May 29, 2015
88
1
18,645


I totally agree with this. I had to make an iPhone application in swift for my previous job and I was fairly new to the whole iPhone/Xcode/Swift topics. I spent a great deal of time (probably at least a month if not more) reading the Swift documentation and the general structure of the language as well as the libraries that are offered that would satisfy my needs, especially since the syntax is a big different from what I'm used to. One feature can be implemented in multiple ways and different imported libraries, so it is important to do the research and find the best method to accommodate your requirements.
 


Yes isn't that what the .net framework is? Complex code that is already there for you in simpler form?
 

Math Geek

Titan
Ambassador


exactly where i am as well. every now and then i pick up some kind of tutorial on some language or another and remember why i never got into programing. did the basic and such back in the day and can still program the heck out of the ti-8* series calculators but just never got my mind in the right place to learn any language. i do wish i could do it but alas i think it is just not meant to be for me.

having tried many different ways over the years, is there any kind of beginner course for a useful language that would be suggested i try? i've done video's, books with video follow alongs, just plain books.......

in the end i think some of it is that i just never had the need to write my own program. anything i wanted to do i could find already existed. maybe that's my prob, no real motivation to learn it. i learned everything else about pc's because i wanted to know or cause i broke my pc and needed to fix it. then i built my own so got that knowledge of parts and such.


just never really NEEDED to know how to write a program for myself outside of some useful stuff i made for my calc back in college.
 

randomizer

Champion
Moderator


Yes, but my point was that you still need to learn the framework too. Sure, you might not need to know how to write your own library for reading/writing files, but you need to be familiar with the classes in the System.IO namespace.
 

yatoniea

Reputable
Dec 27, 2014
8
0
4,510
I myself have been programming for a couple of years. My first exposure was as a Kid messing around with already made Runescape Private servers and eventually picking up Java so that I could maybe try and make my own stuff which I eventually started to do. I'm currently messing around in web development and developing windows apps with C# as well as meddling around with the XNA framework for games. I'm also currently doing a BSc in Computing Science 1st year.
 
If Tom's was to open a sub-Forum on the subject, who would be happy to come onboard and contribute the expertise?

What sub-sections should be included and could be properly supported? You probably already know Tom's has a good repputation to maintain and anything new it takes on has to work properly and from the get-go.

These are semi-hypothetical questions at this stage because a case would need to be made to the management team but I for one am keen to see this happen.

I wouldn't be able to contribute much because age is taking things I learnt some years back away from me but I know the expertise is out there - but where?
 
I would contribute. I think one section could be web design, another section could be C and its variants, another could be mobile application development, etc. Deciding on the specific categories would be quite difficult actually, because there are so many languages that grouping them without excluding any can get difficult. Web design for sure though could be one.
 

Joe Porter

Honorable
Aug 12, 2013
510
0
11,060


As someone with extremely limited knowledge on the subject I think it would be great to have a sub forum here where we could get advice. I have knowledge in CSS and HTML and don't really know where to go from here, would be brilliant to be able to get advice from some people with genuine experience in the matter and perhaps advice to help us newbies along the way.
 

galerecon

Distinguished
May 29, 2015
88
1
18,645


I would contribute as well because I find a lot of this stuff interesting and Computer Science is what I do...But like someone mentioned before, I probably won't participate in homework problems.
 

itmoba

Reputable
Aug 14, 2015
768
0
5,360

  • ■ Assembly (M68K, x86)
    ■ Bash
    ■ C
    ■ C++
    ■ C#
    ■ Csh/Tcsh
    ■ Haskell
    ■ HTML (hate programming with this "language" because it's dull!!!)
    ■ Java
    ■ JavaScript
    ■ Objective-C / Objective-C++
    ■ Perl
    ■ PHP
    ■ Prolog
    ■ Python
    ■ Ruby
    ■ TI-BASIC
    ■ QBASIC
    ■ Visual Basic
    ■ Visual C++
    ■ XML
    ■ Zsh
 

galerecon

Distinguished
May 29, 2015
88
1
18,645

I was never a fan of Haskell, took it in college and just wasn't for me. Different from what I'm used to. Same goes for Assembly.
 

McHenryB

Admirable


16-bit assembler isn't exactly useful nowadays.
 

itmoba

Reputable
Aug 14, 2015
768
0
5,360


True, but it's excellent for educational purposes.
 

McHenryB

Admirable


Not as excellent as 32- or 64-bit assembler, which could actually be of use in the real world. 16-bit assembler will teach you irrelevant stuff about segments that is nothing like the use of segments in any modern OS.
 


I have to disagree with this. Intel's use of segmentation in real-mode and 16-bit protected mode resulted in tons of bugs and unnecessary complexity. The ability to address a full address space in 32-bit protected mode and the elimination of segmentation entirely in 64-bit long mode greatly simplified the architecture.

C is very hard to master, but it is very easy to learn. With proper use of language constants, symbols, macros, and pragmas it's possible to render almost any program written in C completely platform portable. In theory, a single well-written source tree can be used to build an identically functioning program across any number of architectures, any number of operating systems, and any number of ABIs provided that there's compiler support for each as required.

Assembly is platform specific by its very nature. It's great to familiarize oneself with the intricacies of the architecture and OS ABI but there are very few cases where assembly is required as a matter of necessity.

The only case that I can think of where assembly is strictly necessary is when changing processing modes, when performing very low level system maintenance for which no compiler support is possible (such as complex hardware interrupt handling), or when performing real-time tasks where specific instructions must be issued in a specific order. Unlike many application-level instructions such as vector arithmetic, these are not easily performed via compiler intrinsics. For example, it's not possible to inline a switch from real mode to protected mode in the middle of a C function as this will almost certainly screw up the compiler's view of the address space as well as muck with the code generator.

There are many cases where assembly is not strictly necessary, but is desirable as a matter of optimization or where a compiler deficiency results in undesirable behavior. The correct approach in these situations is to address the defect or deficiency in the compiler if possible.
For example, Intel's autovectorization routines in ICC are much more effective than GNU's autovectorization routines in GCC. The use of compiler intrinsics which explicitly invoke certain microprocessor behaviour (these intrinsics are usually just wrappers for the appropriate assembly instructions) can sometimes be used to resolve these issues, but these intrinsics are usually not standardized and will break platform portability for that particular codepath. ICC can generate x87/MMX, SSE, and AVX codepaths from the same fully portable source code and then select the most appropriate codepath at load time based on the microprocessor's actual capabilities.

If it's possible to hand-optimize a program or routine at the assembly level to a degree greater than that achievable through a compiler, then it's also possible to generalize and parameterize that optimization such that the compiler can perform that optimization automatically from portable code.
 

itmoba

Reputable
Aug 14, 2015
768
0
5,360


I have to disagree on several points.

First and foremost, 8-bit and 16-bit assembly is one of the ways people should be introduced to assembly language. The Motorola 68000, MOS 6502, and CHIP-8 (which is technically purely virtual) are a perfect suitable introduction to assembly. The limited number of instructions makes it easy to read, write, and understand the basic principles.

Secondly, the majority of universities stress languages which have automatic garbage collection (e.g., Python, Ruby, Java). This is great for beginners, but it makes for lousy and lazy programmers. When I had to interview people at a former workplace, I'd ask them "what happens in languages like C, C++, and assembly when it comes to cleanup?" The number of people who gave a correct answer -- mind you, from good universities -- was one.

Lastly, Intel's C compiler is only better at auto-vectorization out-of-box. If you read the "Dragon Book" (known formally as Compilers: Principles, Techniques, and Tools Textbook by Alfred Aho, Jeffrey Ullman, Monica S. Lam, and Ravi Sethi), optimizing code begins to become a piece of cake. This book, however, is very advanced and is suggested for people either impassioned with optimization and understanding concepts at a very-low level (e.g., me), advanced students (e.g., working on a Master's degree or PhD), professors, or work-related activities/education.