|"01000010 01101001 01101110 01100001 01110010 01111001 00100000 01101100 01101111 01101100"|
/PROG/ is a fairly new board on 420chan that is for computer science class homework. Although the board generally gets a few posts a day, many /prog/rammers felt ultimately validated when Kirtaner himself posted on the board. Beware of networking/offtopic computer related discussion (which belongs in /tech/) and thirteen year old "hackers."
 Languages of /prog/
Here is a brief overview of some of the languages that have been witnessed on /prog/ and the reaction of the community to those languages.
C is the language that was initially designed to program the original UNIX OS, which at the time was a fairly impressive innovation because normal practice at the moment was coding an OS's kernel in assembly; by making the C language as low-level as possible to allow for fine-tuning and optimization, and writing the UNIX kernel in C, it was possible to shit a System V UNIX (and even today a Linux) binary image with maybe just a few adjustments. Because C was intended to produce code that doesn't requires an OS, its biggest strengths are its blazing fast generated machine code (which makes it pretty well suited to embedded software development), and memory management and handling functions which are so superpowered that some people criticize C as being way too powerful at it. C++ is basically object-oriented C, like Objective C but more inclined towards faster, static programming.
Generally criticized as being unnecessarily memory efficient for most applications (the exception being scientific stuff and games of course). C++ is sometimes said to be a lose-lose due to it's lack of C like elegance and lack of Java-like easiness. However, because most Programming 101 courses are taught in C, this is generally used as the default programming language for discussions; not necessarily on /prog/, but in most discussions anywhere, and if people are discussing a software problem, the solution will usually be posted in C. However this is changing as so called scripting langauges become more and more popular compared to traditional compiled languages, the usual combo being inefficient but simple high-level scripts running on top of a fast, efficient compiled core.
 Objective C
An object-oriented programming language initially conceived as an OOP variant of C. At first it didn't catch on because, unlike C++, it didn't include a standard runtime library. However, it was the main language of the old NeXTSTEP operating system, which is the ancestor of Mac OS X and Apple iOS, and as a result, if you see someone learning Objective C you can pretty much wager that they intend to develop an OS X program or an iPod/Phone/Pad app.
Once praised as the beloved creative tool of hackerdom, Perl is now almost always regarded as hideous, inelegant, impossible to maintain, and inferior to Python for everything but server scripting and text manipulation. It is the favorite language of network spammers and 13 year old hackers. Others praise Perl as being great for what it is meant to do, noting that Perl isn't intended for the kind of programming Python is intended for. Perl's real bazooka is text manipulation, a task at which it is largely unparalleled.
The holy grail of languages for new programmers. Despite being considered extremely slow, Python is praised for it's beauty, ease of use, and the fact that there are just so many libraries, tools and utilities, that Python literally lets you do EVERYTHING. A tiny minority of Lispers hate Python ever since it replaced Scheme as the language in which MIT's Intro to Computer Science course is taught.
Liked by IT management douchebags for its ease of use, its magnificent OO paradigm and the staggering amount of buzzwords associated with it, detested by most as the COBOL of our time. Some think it can be a major downfall for a programmer to learn Java as a first language. Those who intend to develop an Android app have no choice but to put up with it because it's its main programming language.
 Microsoft .net
Basically, Microsoft's own version of Java, usually comprising Microsoft's languages C# and Visual Basic .net. Not exactly liked, but not as reviled as Java on account of being a bit faster, more practical and elegant. Lots of people have to learn it anyway, because IT management douchebags love it as much as Java. Visual Basic .net is often bashed due to its superficial resemblance to old creaky Visual Basic 6, which is largely unfounded owing to the fact that Visual Basic .net is pretty much C# with VB6-like syntax.
Recommended by many Gods and Wizards as a first language for the truly determined. Often learned for Reverse Engineering purposes. Assembly is almost universally adored on /prog/ as something everyone should eventually learn. Because assembly language is architecture-specific, it's as complex as the CPU for which it's targeted: if you're coding for a Microchip PIC, a Zilog Z80 or an Intel 8051 microcontroller it will be actually simple (verbose as fucking fuck but every instruction is predictable and does only one thing), but God forbid if you're trying to write Intel x86 assembly. Note: anything other than x86 assembly doesn't counts on /prog/, so hold the 8051 assembly.
Serious technical discussions of HTML are rare, mostly they consist of college students (ie Liberal Arts majors) asking for help with their web design class they are taking as an elective. Responses usually emanate condescension.
The next step of evolution from plain ol' HTML, this time in the form of a shiny new standard pioneered by Mozilla and Opera, sponsored by big megacorps in the Web technologies trade, and drafted by experts from all over the world. In addition to being a markup language, HTML5 also specifies a number of functionalities such as the Canvas element (which is like a Flash object but not Adobe-proprietary), drag-and-drop, web storage (like cookies but better), document edition, and offline Web content.
Unfortunately, despite all these new features and standardization, HTML5 is currently way too aimed at software engineers, and it won't be until Adobe launches an artfag-friendly HTML5 authoring tool that looks and feels "like Flash but universal" (Adobe Edge, currently in development) that HTML5 will finally see widespread adoption.
 Common Lisp/Scheme
Lisp is the second oldest programming language in current use, dating back from 1958 (as of 2012 it's literally 54 years old); Scheme is a very similar language, with fewer constructs and as a result cleaner and more elegant yet usually more verbose. Based on a mathematical system called lambda calculus (more or less like a theoretically perfect programming language), Lisp and Scheme's syntax are actually p. simple; in fact, they're so simple that it is possible to write a basic Lisp interpreter in Lisp with less than 100 lines of code. Most people recommend learning them, despite suspicions that few of those who recommend it actually know it. Understanding Lithp (hehe) is generally thought to bring enlightenment and peace. Programming in Lisp has been described as "mental sex".
Not long ago, Scheme used to be the programming language taught on the MIT's famous Intro to Computer Science course, and in fact many people who learn Scheme did so through Structure and Interpretation of Computer Programs, a currently freely available book which was the course's official learning material and is nowadays a classic among computer programmers.
Haskell is a functional language, which means absolutely everything in this language is implemented in terms of a good ol' function that takes a bunch of inputs and returns one or more outputs. Sounds intuitive, until you get to the part that there are literally no variables in Haskell; the closest thing there is in this language is a monad, which is an arcane concept that can only be understood through many hours of practice or a master's degree in computer science.
Fortunately, the bright side of this is that programs in Haskell are very easy to debug: because everything is a predictable function, you don't have to pull your hair finding out why a section of code does weird things due to another section interfering with your program's state. Parallel processing in Haskell is also easy to implement because there is absolutely no state and no variables, which makes it very uncommon to encounter any such thing as a race condition -- a dreaded bug in which two threads that simultaneously change a shared variable interfere in extremely murky and convoluted ways. (Of course, in this case you're not getting your brain fucked trying to figure out the cause of a bug, simply because your brain is already fucked hardcore from learning how to code in Haskell!).
MATLAB is a sky-high level language for scientists (read: gigantic nerds) who have a solid technical background but don't really know how to program. Octave is p. much the same but GNU, and for good reason, because one single license of the full MATLAB suite costs a brand new Camaro. In this language everything is a two-dimensional array, which means adding two arrays can be done as a straightforward sum instead of having to loop through the arrays. This practical way of handling lots of data, combined with its automated memory management and its core functions being written in blazing fast Fortran, makes MATLAB/Octave absolutely killer at number crunching and signal processing. Big megacorps have these incredibly crazy-ass things where you literally program microcontrollers in MATLAB (instead of programming it with a super low-level language like C for embedded systems).
Fortran is an old-ass language developed in 1953, when monitors didn't even exist and computers had to resort to electrical typewriters to display their output; it was straightforwardly developed as an alternative to tedious assembly language, and the first few dialects were meant to be coded in punchcards. Thanks to its optimizing compiler (the very first one) that produced extremely fast machine code, and its native support of complex numbers (which are p. much the mathematical foundation of analog electronics), Fortran quickly gained acceptance and remained one of the most widespread computer languages until the late 70s.
As programming languages evolved and Fortran started to show its signs of old age, the language's keepers decided to focus it towards doing only one thing and being very good at it: number crunching. So much, that even today its numeric functions are actually faster than C++'s. Even as of 2012, thanks to almost 60 years of ungodly optimization, Fortran is still used on intensive numerical processing programs, and it's also the base of MATLAB/GNU Octave's basic libraries.
Not absolutely forbidden, but outright discussion is not encouraged either. /prog/ is not /i/.
 External Links
- /prog/ - Programming board
- Green Tea Press, home of three great introductory programming books: Think Python, Think C++ and Think Java.
- Learn You a Haskell, a free Haskell tutorial for people who already know how to program.
- Structure and Interpretation of Computer Programs, the book they used at MIT's Intro to Computer Science class back when they still used Scheme.
|Boards on 420chan|