Search Results

Search found 12674 results on 507 pages for 'programming competitions'.

Page 212/507 | < Previous Page | 208 209 210 211 212 213 214 215 216 217 218 219  | Next Page >

  • Learn Many Languages

    - by Jeff Foster
    My previous blog, Deliberate Practice, discussed the need for developers to “sharpen their pencil” continually, by setting aside time to learn how to tackle problems in different ways. However, the Sapir-Whorf hypothesis, a contested and somewhat-controversial concept from language theory, seems to hold reasonably true when applied to programming languages. It states that: “The structure of a language affects the ways in which its speakers conceptualize their world.” If you’re constrained by a single programming language, the one that dominates your day job, then you only have the tools of that language at your disposal to think about and solve a problem. For example, if you’ve only ever worked with Java, you would never think of passing a function to a method. A good developer needs to learn many languages. You may never deploy them in production, you may never ship code with them, but by learning a new language, you’ll have new ideas that will transfer to your current “day-job” language. With the abundant choices in programming languages, how does one choose which to learn? Alan Perlis sums it up best. “A language that doesn‘t affect the way you think about programming is not worth knowing“ With that in mind, here’s a selection of languages that I think are worth learning and that have certainly changed the way I think about tackling programming problems. Clojure Clojure is a Lisp-based language running on the Java Virtual Machine. The unique property of Lisp is homoiconicity, which means that a Lisp program is a Lisp data structure, and vice-versa. Since we can treat Lisp programs as Lisp data structures, we can write our code generation in the same style as our code. This gives Lisp a uniquely powerful macro system, and makes it ideal for implementing domain specific languages. Clojure also makes software transactional memory a first-class citizen, giving us a new approach to concurrency and dealing with the problems of shared state. Haskell Haskell is a strongly typed, functional programming language. Haskell’s type system is far richer than C# or Java, and allows us to push more of our application logic to compile-time safety. If it compiles, it usually works! Haskell is also a lazy language – we can work with infinite data structures. For example, in a board game we can generate the complete game tree, even if there are billions of possibilities, because the values are computed only as they are needed. Erlang Erlang is a functional language with a strong emphasis on reliability. Erlang’s approach to concurrency uses message passing instead of shared variables, with strong support from both the language itself and the virtual machine. Processes are extremely lightweight, and garbage collection doesn’t require all processes to be paused at the same time, making it feasible for a single program to use millions of processes at once, all without the mental overhead of managing shared state. The Benefits of Multilingualism By studying new languages, even if you won’t ever get the chance to use them in production, you will find yourself open to new ideas and ways of coding in your main language. For example, studying Haskell has taught me that you can do so much more with types and has changed my programming style in C#. A type represents some state a program should have, and a type should not be able to represent an invalid state. I often find myself refactoring methods like this… void SomeMethod(bool doThis, bool doThat) { if (!(doThis ^ doThat)) throw new ArgumentException(“At least one arg should be true”); if (doThis) DoThis(); if (doThat) DoThat(); } …into a type-based solution, like this: enum Action { DoThis, DoThat, Both }; void SomeMethod(Action action) { if (action == Action.DoThis || action == Action.Both) DoThis(); if (action == Action.DoThat || action == Action.Both) DoThat(); } At this point, I’ve removed the runtime exception in favor of a compile-time check. This is a trivial example, but is just one of many ideas that I’ve taken from one language and implemented in another.

    Read the article

  • How do you deal with information overload?

    - by talonx
    There are so many (good) programming blogs out there. Some of them are consistent in what they post - as in they stick to programming topics. Some of them occasionally post on other unrelated topics. Also, not every programming post might be relevant to me. I might have read one good post once, and not wishing to miss any future good ones - subscribed to the blog. Subscribing to too many blog feeds usually leads to just skimming through all of them (which takes time as well). Another option might be to subscribe to aggregators, like Hacker News - but that too has a huge rate of link accumulation. How do you manage if you wish to keep up with the programming blogosphere and still maintain a good signal to noise ratio?

    Read the article

  • Interview question ranking FizzBuzz (1), implementing malloc (10)

    - by blrs
    I'd like to have your opinion on the difficulty of the following interview question: Find the subarray with maximum sum in an array of integers in O(n) time. This trivial sounding problem was made famous by Jon Bentley in his Programming Pearls where he uses it to demonstrate algorithm design techniques. On a scale of 1-10, 1 being the FizzBuzz (or HoppityHop) test and 10 being implement the C stdlib function malloc(), how would you rank the above problem? I think the people who can best answer this question are those who have read Programming Pearls and have tried to solve this problem on their own. To motivate those who haven't, 'Programming Pearls' gets featured many times in the 'Top 10 programming books' list.

    Read the article

  • How do I make the correct career decision in regards to product manager/QA vs programmer?

    - by Adel
    I'm curious about how to approach the issue of whether I should focus on programming or on QA/testing/product management. I know that the latter seems like a broad category( if so, think of it as "general IT support" for now). At the moment I'm stronger in QA/prod. mgt ; however I'd like to switch more to programming, and I see I may have this opportunity. Wouldn't it be easier to switch to QA/prod. mgt in the future, if I go into programming now; rather than trying the reverse-order(i.e. if I decided later to go into coding.. say around mid-30s then it'd likely be harder). Just looking for any advice or tips about how to see more clearly. Part of me is scared I can't handle the programming side, but part of me says since there's demand and I'm interested that it's still worth a shot.

    Read the article

  • I still can't figure out how to program!

    - by Mark K.
    Please help! I've read lots of programming books for various languages, Java, Python, C, etc. I understand and know all of the basics of the languages and I understand algorithms and data structures. (Equivilant of say 2 years of CompSci classes) BUT, I still can't figure how to write a program that does anything useful. All of the programming books show you how to write the language, but NOT how to use it! The programming examples are all very basic like build a card catalog for a library or a simple game or use algorithms etc... They dont't show you how to develop complex programs that actually do anything useful! I've looked a open-source programs on sourceforge, but they don't make much sense to me. There are hundreds of files in each program & thousands of lines of code. But how do I learn how to do this? There's nothing in any book I can buy on Amazon that will give me the tools to write any of these programs. How do you go from reading Intro to Java or Programming Python, or C Programming Language, etc.. to actually being able to say, I have an idea for X Program.. this is how I go about developing it? It seems like there is so much more involved in writing a program than you can learn in a book or from a class. I feel like there is someth Can anyone put me on the right track?

    Read the article

  • what should I read in Windows [closed]

    - by Umesha MS
    I think I am asking generic question. Being a developer in windows what should I read to improve my skills? Do I need to read concepts on need basis or do I need to read concepts well in advance? If I want to read the concepts in advance then what topics do I need to read. (Note : I am a Windows developer. I use c++ programming language, Win32/MFC frame work and I use Visual studio IDE.) Updated: To be more specific when a fresher comes to my team I will ask him to read the following things and I tell him that these are very important. 1)C++ : 1 The C++ Programming Language by Bjarne Stroustrup's 2 Thinking in C++ 2nd Edition by Bruce Eckel 2)Win32/MFC : 1 Programming Applications for Microsoft Windows by Jeffrey Richter 2 windows programming by charles petzold 3 Programming Windows with MFC –by Jeff Prosise For 2 years and above developer I ask them to read 1)Above concepts (C++ and Win32/MFC)are mandate 2)Design Pattern : 1)Gang Of Four. 2)Head first patter. 3)Design princples. But for above 6 years’ experience developer what are the concepts are important.

    Read the article

  • IIS App Pool Identity Internet Settings

    - by Programming Hero
    How does an IIS App Pool determine its Internet Settings? I'm specifying a custom identity under which to host a .NET web application, a service account that is part of our Active Directory domain. When the application runs, it needs to make HTTP requests to other servers. This action causes it to read web and proxy settings from some location, but I can't understand where it goes for this information. Does it look: At the default account's settings on that box? At the default profile on the AD server? Its own local/roaming profile? A combination of the above? Somewhere completely different?

    Read the article

< Previous Page | 208 209 210 211 212 213 214 215 216 217 218 219  | Next Page >