|
bwallan wrote: Since Alan K. was playing around with LISP in the late 1960's, I would assume the quote came from around then.
Quite likely.
|
|
|
|
|
After reading through some of the other comments, these things come to mind:
1. I agree, after learning Common Lisp for a few days, I was like "What on earth will I ever use this for?"
2. After spending a couple of days with Clojure, I was like, "Oh man, I wish I could use this to write ALL of my code!"
So if you're going to look into it, I can personally recommend Clojure for the following reasons:
1. It's fun (at least in my opinion)
2. It will absolutely change the way you think about programming (even in OO contexts)
3. It's a JVM language, so you can use it along with Java code (or Scala, or Groovy, or ...)
4. You have the functional paradigm (it's a LISP dialect) but you can also do object-oriented things (it runs on the JVM) if that makes sense for the situation.
5. It IS in active use in a number of projects today (though I can't remember them off the top of my head; that's fine, go ahead and call me out for that; or better yet, just google it)
6. It has an active user community. I've always found answers to my questions on Stack Overflow.
As for why to learn functional programming in general, I agree with one of the posters who said that it increases his productivity. In my experience, functional programs are easier to reason about. If you can break your entire program down into a set of small functions, you can test each of the functions individually. (If you put in the same arguments you should always get the same result.) If you can determine that each of your smaller functions is logically correct, then it becomes easier to reason that your full program is logically correct. And if your program has fewer bugs, you won't spend as much time debugging.
Thinking functionally requires me to think more about what I want to DO, and much less about HOW I want to do it. (I know everyone says that about functional languages, but it is true in my experience!)
I have also found that my programs in Clojure are more concise than what I write in other languages. This is partially due to the syntax (come on, guys, the parentheses really aren't that bad; Emacs formats it REALLY nicely) but it is also due to the functional paradigm---it just forces you to think straight to the point of what you're trying to do.
Having a REPL (Read-Eval-Print Loop) is EXTREMELY helpful in learning a new language. Try stuff out in real time in the interpreter (just like with Python, etc.) Decreases the amount of time to master a given concept, in my opinion. Because of this, it's also awesome as a prototyping language. I sometimes use Clojure to make a prototype before coding it up in the language that we'll use for production.
The things I've learned from Clojure have changed the way that I do things in R, C#, Java, and Python (the languages I use more frequently at work.)
So, in conclusion, I'd highly recommend that you learn a functional programming language, and I personally recommend Clojure as a viable way to do that. (I haven't used Scala, etc., so I can't speak to their merits.)
Some Clojure resources:
* Mark Volkmann's Clojure Page[^]: A lengthy tutorial on Clojure broken up by topics. REALLY good resource
* Leiningen[^]: a build automation tool that makes library dependencies REALLY easy. Go check this out for sure.
* Clojars[^]: a repository of third-party clojure JAR libraries that is checked automatically by Leiningen
* The Clojure Toolbox[^]: A list of clojure libraries broken up by purpose. (Need an HTML parser? How about clj-tagsoup?)
Hopefully that's enough to get you going if you decide that it has piqued your interest. Good luck!
|
|
|
|
|
Thanks for the information and links. I will have to look into Clojure.
|
|
|
|
|
Hi,
I've used AutoCAD for 20+ years. For almost all of those I've used AutoLISP to get AutoCAD to do what I want it to. It's obviously not Common Lisp, but I've found it to be extremely useful when trying to automate tasks. In AutoCAD you can almost use it as a scripting language - it's easy to make changes on the fly (no code compilation required).
I've never touched Common Lisp though!
Cheers.
|
|
|
|
|
Thanks for the information
|
|
|
|
|
Anyone who use emacs or works with HLA (a lot of the defence simulation industry) or one of the SAFs (modsaf, onesaf etc) will use lisp as the configuration language. They won't call it lisp: they will give it some configuration language name but it is still lisp in syntax.
Do you use lambda functions? They started in lisp.
|
|
|
|
|
Member 4608898 wrote: Do you use lambda functions? They started in lisp.
Yes I do and didn't know the originated in LISP.
|
|
|
|
|
JimmyRopes wrote: Yes I do and didn't know the originated in LISP.
You'd be surprised just how many things originated from lisp. Even the ubiquitous if-then-else wasn't in Fortran before it was taken from Lisp, it only became ubiquitous in other languages when it was shown to be so much easier to use than conditional goto-statements. Map functions (i.e. the functional method of iterating over a list/array and modifying each item to produce a list of results) was originally in the oldest of Lisps - generally known as the mapcar function.
Chances are that whatever language you're using, about half of it stemmed from Lisp originally. Lisp was the first language to actually have all of the now "new" concepts incorporated in one package: iterative, imperative, functional, recursive, object oriented, meta (macros), etc. It allows you to mix-n-match any of these interchangeably so you can choose which works the best for the scenario at hand. That is probably why it makes you able to program in other languages a lot better after you've done some Lisp.
Note though, Lisp comes in 3 major dialects: Common, Scheme & "Other". Clojure and NewLisp can be seen as examples of the "Other" type, while they are still Lisps, they don't conform to the strict specifications of Common / Scheme - it would be like a new type of C where it's not conforming to the general principles of C (you could see it like the difference between Java and C#, both look reasonably the same and do the same things, but in slightly different detail).
Scheme is generally used in universities since it's a minimalist language, i.e. only the basics are incorporated into its spec. You're supposed to generate your own libraries or use others' libraries - these are usually not included into the language. Common Lisp is at the other end of the spectrum, it's specification tries to encompass all generally needed libraries and functionality. The Others tend to be a mix or they're built on top of existing libraries.
Here's one thing which opened my eyes quite wide: The creator of IronScheme first started to make an IronLisp (intended to be a Common Lisp on the DotNet VM). He gave up on this because it was too difficult. One aspect (of many) which is very dificult to near impossible to implement in the CLR is Common Lisp's object orientation (known as CLOS - Common Lisp Object System) and especially the MOP (meta object protocol). It simply doesn't translate into something which the CLR can do. Scheme was then chosen, since it doesn't specify an object oriented system, thus the built-in DotNet system can be used.
|
|
|
|
|
I sometimes develop some small applications, data-centric, using VBA and MSAccess.. Say, software for a swimming club (members, competitions, records,....), ... about 10 tables plus the lookup table, multilange, data oriented, almonst no graphics (pictures of people, maps for locating the clubs for next competitions, tables of results,... ). Modest volumes, clubs with 1000 members as a maximum
Now it is time to turn to a moden environment: I think VBA is stuck in the same flavour as 15 years ago, so .NET should be the target
Database_ SQL-Server Express or MySQl
Problem comes with language: C# o VB? I prefer VB because I am more familiar, and (at least some years ago), there were only 15% performance increase in favour of C#, which was absolutely irrelevant for me. No idea of what is the point today. Both languages are just instruments to manage the underlying .NET framework
Visual Studio Express (Windows 8.1) comes in 5 formats: Web, Windows, Windows Desktop, Team Foundation and Windows Phone
No idea what to get: my software will be used by few people (from 1 to 10 as a maximum), in the premises of the swimming club (so, no web....),.... but,.... everyone things today in checking things from a web browser (last results of a given swimmer, payment status of a given member, dates for next competitions,...), ... or even from an Android....
I remember Windows Forms allowed more "complex" forms (in terms of data interation), some years ago...
Additionally, if I develop the sw in 3-tier, theoretically changing the display tier would allow to move to another platform, which forces me to use Web Services or another current technology to communication between tiers.... so, more complexity for a simple, basic application...
Any hints on that please? I would like a rapid development, but I wouldn't like hearing potential clubs saying this is an "old" application because it is not web-based...
thanks
|
|
|
|
|
C#, Asp.net MVC with SQLExpress backend will serve you well. There is also good video tutorials on the Asp.net website.http://www.asp.net/mvc[^] (I used them a lot when first started using this stack).
Alternatively you could go down the Javascript route, using Node.js+Express+MongoDB but probably more of a steeper learning curve.
I would go with #1 to start with.
|
|
|
|
|
I would like to recommend to learn SPA (Single Page Application) with AngularJS.SPA is the latest trend in dev world these days.Good Luck !
Some useful links for you.
angularjs
johnpapa
|
|
|
|
|
SQL Server Express or SQL Server CE.
VB.net is OK if you do it right, otherwise C#.
Visual Studio Express has served me well.
Or, if you take a class in C#, look into DreamSpark to get Visual Studio Professional.
This space intentionally left blank.
|
|
|
|
|
C# isn't too hard to get used to if you have any familiarity with VB.NET. I am a long time VB6 VBA C/C++ programmer and I found I prefer C# these days for applications. It requires a little more discipline than VB but that actually results in more robust software.
It was broke, so I fixed it.
|
|
|
|
|
stp66 wrote: I wouldn't like hearing potential clubs saying this is an "old" application because it is not web-based... Simples; don't go to that club.
Anyone posting those statements should not be taken seriously. That's regardless of position
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I And don't join clubs that would have you as a member.
Edit: Shoot, I didn't mean "I". That changed the whole meaning of the sentence. Sorry.
This space intentionally left blank.
modified 1-Feb-14 14:37pm.
|
|
|
|
|
PIEBALDconsult wrote: I don't join clubs that would have you as a member. I think those clubs might be illegal where you live.
Would you waste time on someone who is shouting he doesn't know what he's doing? Worse, waste time educating someone whose job it is to know the difference?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy Vluggen wrote: might be illegal where you live
Nah, this is the wild wild west. Even Roger is welcome here.
This space intentionally left blank.
|
|
|
|
|
I came via the VBA route and here is my advice for what it's worth.
Start with VB - give yourself a month of programming with VB just to get a sense of the .NET framework and the IDE.
Then dive into C#, learning C# will make it easier to drop any bad programming habits you gained through programming in VBA(...and I had loads of them).
C# has an elegance to it that makes programming a delight
(in my work I program with both VB and C#)
Here's a nice easy intro to VB clickety[^] - it covers the really basic .NET stuff and may be overly simple but it's what kick-started my .NET career.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
modified 1-Feb-14 15:37pm.
|
|
|
|
|
Another point for the c# route is that the majority of learning resources are in c#.
I would look at the asp mvc path, I travelled the Silverlight route and it is now dead so be aware the latest trend may be short lived.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
|
Sounds to me like web is the way to go, and as you're on PC I'd take a look at Micro$oft Expre$$ion Web 4. It handles pretty much everything, has drag and drop for the interface / UI stuff and a reasonably sensible editor for all that 'backend' melarchy. Oh, and it's free...
As for what that melarchy should smell like, I'd go with what you know every time. If you were looking to take this web thing seriously though (rather than getting a proper job) I'd say give PHP a whirl. It's a C-like language (in as much as it looks vaguely like C source from a distance. If you squint. Through a sock.), it's widely used, works hand in hand with MySQL, is extensively supported, documented and ridiculed (unfairly IMHO), it's alarmingly forgiving and the whole caboodle is free, end to end.
You'd need a bit of javascript on the client to tie the UI to the cleaver stuff on the server, but that really is noddy stuff.
Can't believe I just recommended a Micro$oft product there... Must be getting old .
Danny
|
|
|
|
|
Anything about modelling your app first? i.e. MVC (Model View Controller) paradigm. and there are others. Generally speaking: if you master that your view can get changed without touching the other two layers, then you profed already to be a professional. And nobody will say: "it's an old apps". because most do not understand or are able to valuate just the MVC paradigm. Also such things in mind makes chosing the language (dialect) more unimportant. Knowing your architecture of your apps helps you in many situation to prevent fatal errors or choose the proper i.e. IDE. my 2 cents. Josef
|
|
|
|
|
Doesn't look like you got a lot of answers to the real underlying question there...
Which development environment?
Visual Studio is arguably the best (I would argue that it is), especially for the MS stack.
The varieties that you noted are "Web", "Windows", "Desktop", "Phone", "TFS".
"Windows" is only for "Modern Apps" on Windows 8+.
"Phone" is only for Windows phone apps.
"Web" only for web apps (like ASP .Net) or services.
"Windows Desktop" is for WinForms or WPF with C# or VB (you can also create Win32 apps as well but I doubt that's what you want).
"TFS" is actually not Visual Studio it is Team Foundation Server which is a Source Control solution which also integrates bug tracking, collaboration and planning tools amongst others. It isn't an IDE so shouldn't be on your list. However you SHOULD use it (even as a single dev) but I would look at VS Online for that because it provides free online source control for up to 5 users and is excellent.
From the sound of things you should install Express 2013 for Windows Desktop. You could also install "Web" in case you do decide to try making web applications. However you can just as easily use Web Matrix for that if you are only doing simple development and it has a much smaller learning curve.
You also specified Database access. And you could continue to use Access for all of that but to be honest SQL Server CE or MySQL are just as simple to use and far better so I would go with one of them. Not full MSSQL server for these small applications unless you don't mind the hassle of installing and providing support for your users who will have no idea how to use it.
As to which language? That is pure opinion but I think the fundamentals of programming apply to any language and learning what is required for making a swimming pool club frontend is very little. Do yourself a favour and learn C# then later when you choose to expand yourself you will find it much easier.
Winforms will probably be familiar enough to start with but I highly advise you pick up WPF along the way. You will like it I promise.
Also don't listen to people who say "Yay for Web Apps"... everyone does not want them! I would take a fluid, responsive native app over a web app every time. And for your purposes the "Users" are swimming clubs and are unlikely to want to host and maintain any web apps themselves. Until someone asks you to do that of course... but that is the time you should start learning about web
Hope that helps you out.
|
|
|
|
|
I've used VB6 for many years (at one time I was teaching it), but I recommend C#.NET. VB.NET is a mess as far as I am concerned.
Basically you will be talking to the same objects, but C# is much more concise.
int i = 0;
versus
dim i as integer = 0
Some of the VB.NET constructions are just toturous.
However I will admit a fondness of FOR/NEXT/STEP over C's construction of (init something; test something; increment something) which requires discipline to follow and I've encountered too many programmers who thought themselves too clever by far and abused it.
Psychosis at 10
Film at 11
Those who do not remember the past, are doomed to repeat it.
Those who do not remember the past, cannot build upon it.
|
|
|
|
|
With your description, I would go for VB.NET, then learn C#, use SQL Server Compact 4 as the database and perhaps look at the MVC pattern, you may even use WPF with XAML and it's databinding properties is you want to be able to quickly switch front ends.
|
|
|
|
|