How do I become a multimedia programmer? - multimedia

Recently I'm interesting in multimedia programming but all I know about multimedia is simple and basic concepts related to codecs and container formats. So can you tell me from where to begin and is there some good books which explain multimedia concepts from software programming standpoint. In fact, I'm looking for the prerequisite knowledges and key concepts of multimedia programming which a software developer must master

If you have a little mathematical background, you should learn something about DSP (Digital Signal Processing), there are lots of books and websites Eg: http://www.dspguide.com/pdfbook.htm
And in that area it's quite popular Matlab (there are free clones, as Octave) , its high level language well suited to experiment with DSP and grasp the main concepts.

Related

SIGNAL vs Esterel vs Lustre

I'm very interested in dataflow and concurrency focused languages. I've read up on the subject and repeatedly I see SIGNAL, Esterel, and Lustre mentioned; so I take it they're prominent players in those fields. However, many of their links in the resources I found are dead and they don't seem very accessible. I managed to find a couple compilers I can compile from source (Polychrony Toolset for SIGNAL and the Columbia Compiler for Esterel) but they've both had issues when trying to compile with cmake. Even textbooks teaching these languages have been tough to come by.
With the background of the way, my actual questions are: is anyone really familiar with this field of programming? Are these languages still big deals, or have they "died out" by now? Could it be they're just available to big companies with a hefty price tag, so the average programmer wouldn't really be able to pick those languages up?
I ran into a couple other dataflow/concurrent paradigm languages, such as Oz or E, but they seemed to be mostly for education and not suitable for real world projects. Not to say they aren't impressive languages, but their implementation was limited and it would be unlikely to see them in production contexts. Does anyone know of other languages in this field they can recommend that are actually accessible (have good documentation, tutorials, and an installable compiler to actually code in)? Or can anyone clarify a language such as Oz or E and hopefully show that they indeed are good enough for large real world projects?
All the languages you mentioned are not widespread. This means their compilers and runtime have bugs, the community is narrow and can give little help, and linking with general purpose libraries can be problematic.
I recommend to use an actively supported general purpose language such as Java, Scala, Kotlin or C++. They all have libraries to support asynchronous computations, and dataflow is no more than support of asynchronous procedure call. You even can develop your own dataflow library. This is not that hard: I wrote a dataflow library for Java which is only 40 kilobytes of source code.
Have you tried Céu? It is a recent variant of Esterel, and compiles to C. It is simple to understand, and provides a reactive and concurrent structuring of control flow. Native C calls can be made by just prefixing them with an underscore ("_printf").
http://ceu-lang.org
Also, see the paper "Structured Synchronous Reactive Programming with Céu" for a nice overview.
http://www.ceu-lang.org/chico/ceu_mod15_pre.pdf
These academics languages mostly disappeared as such and are used in industrial tools
Esterel-Lustre are the basis of in Ansys' SCADE
Signal is used in 3DS' ControlBuild
Esterel was used in Synopsys' ConcentricStudio.
Researchers use also Heptagon for synchronous language studies for code generation, formal methods, new concepts.

Distribution in Ada

I'm searching for some good books/tutorials/guides on how to develop distributed applications using Ada.
I already have some books on Ada programming, but all of them don't talk about distribution or they only mention it very briefly.
The ideal thing would be a book/guide that focus on the practical side of things (implementation) but any resource, either free or commercial, is appreciated.
The "Burns & Welling" book covers concurrency in depth, but doesn't have as much to say about distributed systems as I would expect. Nevertheless it is probably essential reading if you're going to be doing a lot of this stuff.
I'm still reading Professor McCormick's book "Building Parallel, Real-time and embedded Applications with Ada" and it does an excellent job of getting a reader started with a wide range of application-oriented aspects of Ada - sadly missing in other books which focus o the base language - and that includes both the DSA (pure Ada) and PolyOrb (for mixed languages) approaches to distributed systems, including very readable code examples.
Start with this latter book (IMO). (and its lead author has been seen around these parts, so this is a good place to ask questions! :-)
Section 8 in the "PolyORB User's Guide" is a small tutorial on how to develop a distributed application in Ada using the Distributed Systems Annex (DSA).
The "PolyORB User's Guide" also contains examples of developing distributed applications using other constructs than the DSA, which might be of interest, but using the DSA is likely to give you the most elegant application if all the components primarily are in Ada.

Which English tutorial would you advise to learn OCaml? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I want to advertise OCaml to beginners, and I am looking for good tutorials in English; not that you have only heard of, but that you have actually tried and found useful...
I quite like the book Developing Applications With Objective Caml -- I guess the title should be updated to mirror the 'OCaml' naming decision. It is old and therefore slightly out-of-date, but on only minor aspects -- eg., it presents the stream syntax as belonging to the core language, but it is now outsourced as a Camlp4 extension. The book is surprisingly complete, and there is a lot of meat already in the chapters 2, 3 and 4.
This books covers a bit of system programming, but if it's what the reader is interested in, I would rather recommend the separate book Unix system programming in OCaml -- also translated into english by a community effort.
Finally, if one want to discover the theoretical underpinnings of OCaml, If found the U3 book, Using, Understanding, and Unraveling the OCaml Language to be a great resource. But it's only for readers that already know about OCaml.
PS: I have a very good opinion on Jason Hickey's introduction to Objective Caml as well, but I can't say I have read it in full, only glanced at it. That's the problem with "beginners" books, you can really read at most one good one.
For me, the primary one is:
$ apt-cache show ocaml-book-en
Package: ocaml-book-en
Source: ocaml-book
Version: 1.0-5
Installed-Size: 7061
Maintainer: Debian QA Group <packages#qa.debian.org>
Architecture: all
Recommends: www-browser | pdf-viewer
Description-en: English book: "Developing applications with Objective Caml"
This is the English translation of the O'Reilly's OCaml French
book "Developpement d'applications avec Objective Caml" that can
be found in the ocaml-book-fr package.
.
This package contains both the HTML and PDF version of the book.
:)
There is also great book for system programming in OCaml and cookbook-style resource here.
The tutorial I used when learning and the one I always recommend to beginners - ocaml-tutorial.org (mirrored at ocamlcore as original site went down).
Here is a book that is intended for newcomers to programming and also those who know some programming but want to learn programming in the function-oriented paradigm, or those who simply want to learn OCaml.
An OCaml port of the book How to Think Like a Computer Scientist has been created by Nicolas Monje.
According to the website, the PDF version of the book should be downloaded
From the book:
The goal of this book is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.
The single most important skill for a computer scientist is problem solving. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called, “The way of the program.”
On one level, you will be learning to program, a useful skill by itself. On another level, you will use programming as a means to an end. As we go along, that end will become clearer.
I've just started with Ocaml, and these are tutorials that I find most helpful:
Documentation and user’s manual - most useful and official
Introduction to Caml - this one i used in my first days (recently) and it was really helpful because of it's simplicity
I thought Jason Hickey's Introduction to Objective Caml was very good (the only actual text on the language I've read, and how I started). INRIA's documentation is nice as well; and reading module signatures by themselves is quite instructive once you get the hang of it ;)
Believe it or not, OCaml was the first language I (really) learned.
There is a new book "Real World OCaml" of Jason Hickey is going to be published soon. On the web-site there is a public beta available for free. Despite the fact the book is not finished yet, I didn't notice any major mistakes or irrelevancies.
It gave me a full-fledged understanding of OCaml. It contains lots of examples illustrating concepts and could be easily considered as a tutorial. I also liked that it partly covers standart modules (List, ListLabels, Map, Sys, String, may be some others).
"The Runtime System" section in this book is very useful. It provides details about compiler implementation, memory management, linkage with foreign code, language cost intuition. The latter I consider very important, because many functional programming books cover concepts without saying how expensive they are in terms of memory and time. Highly recommend this book, especially when there is a free online version.

Resources for learning Verilog [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm new to Verilog. Can someone suggest a learning resource, book, video, blog or anything that they had a good personal experience with and helped them learn it faster?
If it helps, I have experience programming in several high-level languages, but have no experience programming in C.
Thanks
I'm a big fan of Stuart Sutherland's papers and books. He has an exceptionally deep understanding of the language and it really comes through in his writing.
As with any language, the best way to learn is by reading other people's code. To that end, consider OpenCores and OpenSPARC. If you have tools from Xilinx or Altera installed, consider looking through the source code for their IP cores (some cores will be obfuscated, but many are not).
Learning Verilog is very far from high-level languages. The syntax has been inspired by C, yes, but designing electronics (be it using VHDL or Verilog) is very different from writing software.
Having said that, I suppose that you have found the obvious through Google. For instance this tutorial, and them main Verilog site. The latter lists books and contains a free tutorial.
Verilog, first and foremost, is a hardware description language. So you need to have some background in digital design (or at least get yourself familiar with it). Also, the answer to your question will depend on the reason you want to learn Verilog:
are you going to do some FPGA development? If yes, Xilinx and Altera have lots of good Verilog examples and other learning resources. You can install free tools (with some limitations)
are you going to do ASIC development or verification? If yes, browse Synopsys or Cadence sites.
if you just want to learn the language then you'd need at least a simulator to do anything useful with your Verilog code. Look at Icarus Verilog simulator.
There are a number of good text books out there. Online tutorials can introduce the major concepts but there are far fewer hardware engineers using Verilog than there are programmers writing software. You won't get far trying to learn from the few web sites out there.
Of course, there is no point in learning Verilog if you aren't very familiar with digital logic design principles. Verilog is a modeling language, after all, and it is necessary to understand the hardware to model it properly.
"Verilog HDL" by Samir Palnitkar is an easy-to-read, introductory book for Verilog. I found it useful when I was learning the language.
I would recommend that your start with the book 'FPGA prototyping by verilog examples pong p. chu'
FPGA prototyping by verilog example
This book uses all synthesizable codes. The most important thing when programming with HDL (Hardware descriptive language) is that you have to keep what hardware are you making in FPGA with your verilog code statement. For example you make a mux when you use assign statement e.t.c.
You will be thinking hardware.
check this out. This can help write good verilog code with interactive syntax corrections. VGuru is first of its kind Learn-Practice-Teach platform. On the mobile device with less number of key strokes, we can complete a verilog code. Just by a click we can create testbench. https://play.google.com/store/search?q=skand+vlsi

Functional languages: Real-life Examples

Do functional languages bring anything in the resolution of everyday business problems?
Are there any successful projects that have been implemented using a functional language (ideally with a published test case)?
There are quite a few listed on Functional Programming in the Real World. From the site:
The main criterion for being real-world is that the program was written primarily to perform some task, not primarily to experiment with functional programming.
The Xen hypervisor is at base, implemented in OCAML; and Erlang is deployed in ultra-high reliability telephony systems (the ones that have zero down-time over periods of years).
One implementation of Perl 6, Pugs, is written in Haskell, but it has largely given way to the standard Rakudo Perl implementation.
Friends of mine use Haskell every day to implement financial algorithms.
There was a talk at the Lang.NET conference about how they'd used F# to improve the performance of an insurance application, which is about as everyday as you can get. Silverlight video, WMV video. That said, most of the focus of that talk is on F#'s concurrency support, less on the idiomatically functional aspects of the language.
Xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell.
Facebook's chat feature makes heavy use of Erlang. http://www.facebook.com/note.php?note_id=14218138919&id=9445547199&index=0
Have you heard of Lisp machines before? The emacs editor also makes extensive use of Lisp.
I would argue that the Lotus Notes formula language is an example of a widely used real world functional programming language.

Resources