I can only suppose you are using the formal definition of an algorithm, like the one in your original post ("this is an algorithm that calculate factorial,")
In the vast universe of programming the cases of actual implementation of those methods represents such a small fraction of the total code base to be effectively zero. I would not be surprised if the percentage is even smaller than what it represented by winning the grand prize in a national lottery.
In contrast then are a vast, vast number of "algorithms" in the general sense that do not have a formal definition. They solve business, research and even educational problems but one cannot 'define' them because they are unique.
As an example following is some code that I just copied from my computer. What is the actual text that you expect your program to report for the "algorithm" for this?
if they are unique, sure they can be defined due to their unicity.
That isn't the problem.
How are YOU going to define all such algorithms so that your proposed solution can output some 'definition' of it. Your factorial one is easy. It exists. Computer science and math defines it so if your solution finds it it can write out "factorial" but others have no such definition.
As I say always,
As my previous post said and the other poster noted as well what exactly is your program going to put out for the code that I posted?
if they are unique, sure they can be defined due to their unicity.
You're absolutely right, of course they can be defined and identified. But the identifier can add no meaning and will probably look something like 87fad930-be8c-928a-0384feead334
If that's what you want, then fine.
You're asking for AI that can look at "any" algorithm and, from the universe of possible "things to do", extract a meaningful name / description. (e.g. find factorials; compute best route between 3 points; find a perfect love match). To do that the AI has to have "Knowledge" of the entire universe and the language used to describe that universe. At this point - and for the foreseeable future - no AI system is that widely knowledgeable.
You could build a system that operates on algorithms in a very well-defined sector (e.g. fluid mechanics, perhaps) such that the system could "learn" to categorise code that implements one of a set of predefined algorithms.
BTW, you can also - without the need for any AI at all - build a rule-based parser that uses English-like language to say "this is a routine that takes a string and an integer and uses them to return a string and a boolean". Depending on the algorithm you might even be able to further indicate that it determines whether the first [n] characters of input [string] contains a make of car (provided you give your tool a list of every maker of cars).
it's very easy to examine each instruction and conclude the main idea
Sorry, but to put it bluntly, that's rubbish. A high-level language is (almost by definition) easier to extract "ideas" from. At a low level, trying to determine the importance of outcomes is virtually impossible. Loading a number into a register could be because you need that number in the register to do other things with outside of the algorithm itself, or it might be the primary objective of the algorithm. You can have no idea of the intent of the code when examining it at that level, partly because at that level the code is not divided up into clear enough structures to even know the boundaries of the algorithm, and partly because the sheer number of instructions at low level will complicate the task by several magnitudes.
As an aside: many, many years ago I had the joy of maintaining a suite of COBOL programmes. The original coder had delighted in the following valid code:
IF (MILKING-PARLOUR IS EMPTY)
MOVE COWS TO MILKING-SHED
PERFORM MILKING UNTIL NO-MORE-MILK OR COWS-FED-UP.
This was in a financial accounting system. You tell me what the algorithm does!
I have joined this forum and I loved it the way everyone communicates.
Actually next week I am going to have automation testing project and I do not know which tool is best to use. I am confused between Selenium and TestingWhiz, I have read reviews about both, but I am not able to get to the point.
I don't have the first idea of how to write code nor the time or money that is required to do it..I want to know what is the biggest factor stopping the next platform of social media being developed to take on Facebook? It seems like Zuckerberg has the whole pie
You have to be innovative... and in a way that interest your target user base. FB initially targeted college kids, and did a damn good job of it too... that helped it build up a huge user base. From there it expanded to a bigger audience.
Now about being innovative, if you're making the same thing that FB already has, well... odds are people won't be too interested in joining yet another social site (Google+ has pretty much flopped because it doesn't offer enough novelty to make people want to join). If on the other hand, you have something new that people like to offer, then you might have something (i.e. Snapchat and all their video/image filters).
First off, I'm sorry if this is in the wrong section. I didn't see a section for Python and did a search for it but that just returned really old posts.
I'm trying to create a Python calculator to create quotes and estimates. It would be similar to a mortgage calculator but have much more variables to deal with. I tried finding something "out of the box" because I figure I'm not the only one who needs this but couldn't find anything so my only other option would be to write it myself.
If anyone knows of a program, software or where to start trying to build my own, I'd really appreciate it.
It's always the client's (contracting party) responsibility to provide any agreement required. I'd still review all the terms closely to make sure everything is acceptable to both parties. The terms can be negotiable if one of the parties strongly disagrees with something.
FYI... for that small of a contract, you can probably just look for something online that has broad terms that fit the need and attach some requirements to that, that way everybody knows what to expect when the contract ends.
Don't pay lawyers to do it! There are plenty of pro-forma contracts available on contracting sites (e.g. ContractorUk.com). If you are offering a service then you offer YOUR terms and conditions - that is all a contract is. If the client is not willing to accept your T&C's then it is their responsibility to offer an alternative - which you are within your rights to reject, accept or offer suggestions for amendments.
Software Development contracts are no different to any other service provided by any other supplier... negotiation may be more prevalent is all.