Showing posts with label computation. Show all posts
Showing posts with label computation. Show all posts

Python Scripting for Computational Science (Texts in Computational Science and Engineering) Review

Python Scripting for Computational Science (Texts in Computational Science and Engineering)
Average Reviews:

(More customer reviews)
Are you looking to buy Python Scripting for Computational Science (Texts in Computational Science and Engineering)? Here is the right place to find the great deals. we can offer discounts of up to 90% on Python Scripting for Computational Science (Texts in Computational Science and Engineering). Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Python Scripting for Computational Science (Texts in Computational Science and Engineering) ReviewThe author has 2 main goals:
1) To improve the productivity of scientists familiar with specific software systems (especially Matlab, Maple, and Mathematica) by teaching them to "glue" applications together.
2) To advocate Python as the preferred "glue" language. In his own words, "I hope to convince computational scientists having experience with Perl that Python is a preferable alternative, especially for large long-term projects."
He has certainly done a creditable job. As an expert in computational differential equations, he neglects neither efficiency nor correctness, while stressing both simplicity and reliability. In this sense, he has done a great service to the Python community.
The question is: What justifies the purchase of his book?
The answer is: Chapters 4, 9, and 10.
Contents:
1. Introduction--26pp
Very convincing arguments.
2. Getting Started With Python Scripting--38pp
Interesting examples.
3. Basic Python--56pp
A too-quick tutorial. Go to python dot org instead.
4. Numerical Computing in Python--48pp
Stellar explanations of vectorized array operations.
5. Combining Python with Fortran, C, and C++--36pp
Details use of Fortran2Py and SWIG. Mentions many alternatives.
6. Introduction to GUI Programming--70pp
Useful examples of Tkinter/pmw widgets.
7. Web Interfaces and CGI Programming--24pp
Good source of ideas.
8. Advanced Python--132pp
Deep and extensive. Includes: option parsing, regular expressions, data persistence and compression, object-oriented programming, exceptions, generic programming, efficiency.
9. Fortran Programming with NumPy Arrays--32pp
All about efficiency and re-use.
10. C and C++ Programming with NumPy Arrays--40pp
More about efficiency. NumPy C API, C++ objects, and SCXX.
11. More Advanced GUI Programming--73pp
Tedious discussion of both Web and standalone GUIs. BLT, canvas, cgi.
12. Tools and Examples--70pp
Excellent examples of PDE solvers, with a powerful GUI, but quite long and tedious.
A. Setting up the Required Software Environment--16pp
Wonderfully specific installation instructions!
B. Elements of Software Engineering--50pp
Python's strength! Very practical advice on modularity, documentation, coding style, regression-testing, version-control.Strengths:
+ Downloadable py4cs package, esp. numpytools module
+ Great advice everywhere, e.g. CGI checklist, Pythonic programming, and trouble-shooting.
+ Concrete evidence for most assertions.
+ Very attractive presentation. Sturdy, high-quality cover, binding and pages. Brief, elegant code fragments (except in Chapter 12). Readable prose. No wasted space.
+ Available as 5MB pdf file, after purchase of hardcopy. Very nice.
+ Slides, installation instructions, and errata also at web site. Very professional.My peeves:
- Not enough tables to be a useful manual.
- On p.428(#7) he points out that handling a raised exception is very slow. However, when I time his example with a positive argument, the try-except version is 20% faster (b/c the if clause is skipped), so he is actually giving bad advice for the general case. Luckily, he contradicts himself later, on page 685: "Exceptions should be used instead of if-else tests." The best advice: Avoid common exceptions in inner loops.
- The 10-page index is not as great as it at first seems. (See Martelli's Python in a Nutshell for a better one.)
- Pure interface functions should 'raise NotImplementedError', rather than 'return'.
- Exceptions should never be trapped mindlessly with 'except:'. That would hide your own SyntaxErrors!
- Too many exercises. (It's published as a textbook.) Since there are no answers, the exercises are useless for non-students. (See Lutz's Learning Python for effective exercises with answers.)Overall rating:
This contains the best information on numerical programming in Python that I've seen. Though expensive, it could easily be your only Python book, given the excellent online documenation already available.Python Scripting for Computational Science (Texts in Computational Science and Engineering) OverviewWith a primary focus on examples and applications of relevance to computational scientists, this brilliantly useful book shows computational scientists how to develop tailored, flexible, and human-efficient working environments built from small scripts written in the easy-to-learn, high-level Python language. All the tools and examples in this book are open source codes. This third edition features lots of new material. It is also released after a comprehensive reorganization of the text. The author has inserted improved examples and tools and updated information, as well as correcting any errors that crept in to the first imprint.

Want to learn more information about Python Scripting for Computational Science (Texts in Computational Science and Engineering)?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Concepts, Techniques, and Models of Computer Programming Review

Concepts, Techniques, and Models of Computer Programming
Average Reviews:

(More customer reviews)
Are you looking to buy Concepts, Techniques, and Models of Computer Programming? Here is the right place to find the great deals. we can offer discounts of up to 90% on Concepts, Techniques, and Models of Computer Programming. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Concepts, Techniques, and Models of Computer Programming ReviewThis book is a real mind-bender that illuminates paths for computer design at both the conceptual and practical levels I'd never travelled down before.
The notion that one language can be so flexible as to accomodate both the syntax and semantics of so many different computational models, or paradigms, took some unlearning of bad programming practice before its power, elegance and potential began to sink in.
It also explodes the myth that "pure" languages -- i.e., pure OO, or pure functional, etc., languages--have some kind of innate advantage over so-called "hybrid" languages. In fact, "hybrid" (or as the authors would prefer to call them, "multi-paradigm") languages come out of this book looking even more powerful than the "pure" ones, insofar as they allow the programmer to use the right model for each task, instead of trying to make OO fit, for instance, in places where it doesn't fit so well.
The idea here is that each computational model represents a completely different way of approaching a domain problem. Used by themselves, each has its niche. For instance, everybody knows OO is good for domain modelling and busines objects. Prolog-type languages are good for applications that need to apply rules over a set of data. Functional languages are great in mathematical applications. And so on. What is new here is that one can program in an environment in which all of these tools are available in a single core semantics that seamlessly weaves these computational models into a complementary whole. Used together judiciously, with an eye toward program correctness, they make things possible that have long been considered very hard -- for instance, constraint programming.
Mozart-Oz, the underlying technology, is a strange language when you first look at it. It's hard at first to get used to concepts like "higher-order programming" or "by need execution" or "lazy execution" if you are the programming grunt in the field of most modern IT shops, forced by bosses to code in your standard fare -- Java, C#, VB, etc. If OO in Java is like the hammer that makes everything look like a nail, in Mozart-Oz you have a language that is like walking into Ace hardware store, a swiss army knife of a language (conceptually speaking) that challenges you to become a highly skill code craftsman, not just a programmer.
But, if only for the personal growth you will experience grappling with the concepts in this book, I recommend it very highly even to "non academic" programmers (like myself) as well as to any advanced student of computer science. It may be painful, you may scratch your head in places where the concepts just seemed to leap over your cranium, but if you are patient, do the exercises (and at least think about what it would take to tackle some of the research projects), you will grow.
Unfortunately, you may find the languages you work on to be rather confining, and maybe even boring, after you get a whiff of what multi-paradigm programming can do. More likely, however, is that you will grasp very clearly how the language you code in today works, and that can only make you a better software engineer. So do it-buy this book!Concepts, Techniques, and Models of Computer Programming OverviewThis innovative text presents computer programming as a unifieddiscipline in a way that is both practical and scientifically sound. The bookfocuses on techniques of lasting value and explains them precisely in terms of asimple abstract machine. The book presents all major programming paradigms in auniform framework that shows their deep relationships and how and where to use themtogether.After an introduction to programming concepts, the book presents bothwell-known and lesser-known computation models ("programming paradigms"). Each modelhas its own set of techniques and each is included on the basis of its usefulness inpractice. The general models include declarative programming, declarativeconcurrency, message-passing concurrency, explicit state, object-orientedprogramming, shared-state concurrency, and relational programming. Specializedmodels include graphical user interface programming, distributed programming, andconstraint programming. Each model is based on its kernel language -- a simple corelanguage that consists of a small number of programmer- significant elements. Thekernel languages are introduced progressively, adding concepts one by one, thusshowing the deep relationships between different models. The kernel languages aredefined precisely in terms of a simple abstract machine. Because a wide variety oflanguages and programming paradigms can be modeled by a small set of closely relatedkernel languages, this approach allows programmer and student to grasp theunderlying unity of programming. The book has many program fragments and exercises,all of which can be run on the Mozart Programming System, an Open Source softwarepackage that features an interactive incremental development environment.

Want to learn more information about Concepts, Techniques, and Models of Computer Programming?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...

Software Abstractions: Logic, Language, and Analysis Review

Software Abstractions: Logic, Language, and Analysis
Average Reviews:

(More customer reviews)
Are you looking to buy Software Abstractions: Logic, Language, and Analysis? Here is the right place to find the great deals. we can offer discounts of up to 90% on Software Abstractions: Logic, Language, and Analysis. Check out the link below:

>> Click Here to See Compare Prices and Get the Best Offers

Software Abstractions: Logic, Language, and Analysis ReviewThis book describes Alloy, a tool for specifying and analyzing data structures and other relationships within your programs. The book walks you through a tutorial, showing you how you can find the bugs in your specifications before you actually write any code, and then goes into the details of the language and its semantics.
I think I was exactly the target audience for this book (and the Alloy language), as I write a lot of Java software and have been looking for a practical specification tool. I've heard of other people who were less happy with this book, as they were trying to learn _about_ Alloy rather than learning Alloy itself. There is some material at the beginning and end that compares and contrasts Alloy with other specification languages, but the real value of this book comes in the middle where it teaches you how to use Alloy effectively.Software Abstractions: Logic, Language, and Analysis OverviewIn Software Abstractions Daniel Jackson introduces a new approach tosoftware design that draws on traditional formal methods but exploits automatedtools to find flaws as early as possible. This approach--which Jackson calls"lightweight formal methods" or "agile modeling"--takes from formal specificationthe idea of a precise and expressive notation based on a tiny core of simple androbust concepts but replaces conventional analysis based on theorem proving with afully automated analysis that gives designers immediate feedback. Jackson hasdeveloped Alloy, a language that captures the essence of software abstractionssimply and succinctly, using a minimal toolkit of mathematical notions. The designercan use automated analysis not only to correct errors but also to make models thatare more precise and elegant. This approach, Jackson says, can rescue designers from"the tarpit of implementation technologies" and return them to thinking deeply aboutunderlying concepts.Software Abstractions introduces the key elements of theapproach: a logic, which provides the building blocks of the language; a language,which adds a small amount of syntax to the logic for structuring descriptions; andan analysis, a form of constraint solving that offers both simulation (generatingsample states and executions) and checking (finding counterexamples to claimedproperties). The book uses Alloy as a vehicle because of its simplicity and toolsupport, but the book's lessons are mostly language-independent, and could also beapplied in the context of other modeling languages.

Want to learn more information about Software Abstractions: Logic, Language, and Analysis?

>> Click Here to See All Customer Reviews & Ratings Now
Read More...