Friday, September 30, 2016

                                Metaprogramming 


Metaprogramming is the art of writing a computer program with the ability to treat programs as their data.It means that a program could be design to read, generate, analyze or transform other programs, and even modify itself while running. Metaprogramming is what is done with C++ templates or CommonLisp macros. The code in question usually consists of a template and some instructions and how to fill it. The instructions in Metaprogramming are rather complicated. CommonLisp Macros can transform or generate the code in arbitrarily sophisticated ways.The programs that can be modified at runtime or have incremental compilation  available can be actually used to perform Metaprogramming without generating a source code. The java languages can be used for metaprogramming are  C#, Forth, Frink, Groovy, JavaScript, Lisp, Lua, Perl, PHP, Python, REBOL, Ruby, Smalltalk, and Tcl.

Why is Metaprogramming done ?

  • To get around limitations in the primary development languages. Usually, this sort of thing is done when  there is a management edict to use a particular language. The use of a different language is not allowed but doing MetaProgramming with the development language as the target is politically acceptable. 
  • To encapsulate domain-specific knowledge. These languages are generally more domain-dependent.
  • To allow users to configure and program a system even though it is assumed that the user will not be capable of modifying the program source directly, or might not even have access to that source. 





Is metaprogramming a good idea ?

The answer to the problem of whether Metaprogramming is a good idea or not depends on how domain-specific the meta-language is and on how complicated it is. The domain-specific meta-languages are more justifiable and simpler, and simpler is better.
_______________________________________________________________________________


References 

_______________________________________________________________________________



Friday, September 23, 2016

                         Turing Machine

Turing machines are the original idealized model of a computer invented by Alan Turing in 1936. They were initially called a-machines, which referred to the automatic machine. They are equivalent to modern electronic computers at a certain theoretical level, but differ in many details.Turing machines are simple abstract computational devices intended to help investigate the extent and limitations of what can be computed.They are finite state machines with the ability to read and write data to a tape with an unlimited supply of paper. There are formulations of Turing machine, but essentially the machine reads a symbol from the tape, which is used as an input to the finite state machine.
 The turing machine consists of a tape, a head, a state register and a finite table of instructions. A tape is divided into cells, one next to the other. Each cell contains a symbol from some finite alphabet. The alphabet contains a special blank symbol which is denoted by '0' and one or more other symbols. The tape is assumed to be arbitrarily extendable to the left and to the right.The head is the part of the machine that can read and write symbols on the tape and move the tape left and right one (and only one) cell at a time. In some models the head moves and the tape is stationary.state register is the part that stores the state of the Turing machine. Among these is the special start state with which the state register is initialized. The finite table of instructions tells the computer to either erase or write a symbol, move the head and then assume the same or new state.

The initial arrangement of the colors of the cells on the tape correspond to the input given to the computer. This input can contain both "program" and "data". The steps of the Turing machine correspond to the running of the computer. The rules for the Turing machine are analogous to machine-code instructions for the computer.Given the particulars, each part of the rule specifies what "operation" the machine should perform. The remarkable fact is that certain Turing machines are universal with the appropriate input. They can be made to perform any ordinary computation.
___________________________________________________________________________

Reference



___________________________________________________________________________


Friday, September 16, 2016

                    Programming  Video Games 

One of the Industries that has taken over the world is the Video game Industry. The video game industry targets the audience between the age group of 18 -34. This field is all about Computer Science programming and Designing. Game programming is a small part of this industry but is the most important part of this industry. It is that part of the industry which deals with the software development of the video games. Software Development of the video games is defined as " the process of computer programmingdocumenting,testing, and bug fixing involved in creating and maintaining applications and frameworks resulting in a software product. "

The choice of Computer Language used for programming is not only  a matter of mere choice or preference but it also depends on a lot of other factors like whether the language is supposed to be object oriented, whether it has minimal CPU overhead ,  whether it has familiar syntax or whether it is easily portable and more. Sometimes the domain specific features are also taken into account such as interfacing with the operating system, and resilience to reverse engineering for online video games.Many games are not written in only one specific language but are a combination of two or more programming languages such as C, C++, Java. An example of such a game engine is Unity which includes C,C++, and C# .The most commonly used Computer languages for video game programming are Assembly, Java , C, C++ and Javascript.
People who want to be game programmers are required to have substantial skills in software engineering as well as specialization in one of the fields such as simulationcomputer graphicsartificial intelligencephysicsaudio programming, and inputProgrammers often closely follow the game design document. As the game development progresses, the design document changes as programming limitations and new capabilities are discovered and exploited.The formal quality assurance testing process, performed by professional game testers, begins well into game development. High-budget titles may begin testing with the first playable alpha, while low-budget and casual games might not enter testing until a release candidate is ready. The programmers' task is to fix errors and bugs as such are discovered by the QA teams
_________________________________________________________________________________

Reference 


_________________________________________________________________________________






Friday, September 9, 2016

                                Algorithmic  Trading 

An Algorithm is a process or set of rules to be followed in calculations or other problem-solving operations especially by a computer. Algorithmic trading is a method executing a large order using automated pre-programmed trading instructions accounting for  a variety of variables such as time and price to send smaller orders out to the market over time. It involves a trading system that relies  on mathematics and computer science to output different strategies of trading.
The greatest part of Algorithm Trading is High Frequency Trading. High Frequency Trading(HFT) is a program trading platform that uses powerful computers to transact a large number of orders at very fast speeds. High Frequency Trading uses multiple complex algorithms to understand  a number of markets and execute  the orders based on market conditions.

Algorithmic trading is used is by investment banks, pension funds, mutual funds, and other buy side institutional traders. It is used to minimize the cost, market risk and market impact in execution of an order. Algorithms are used in this method so that the larger amount of stock can be distributed into smaller groups to be electronically executed over minutes, hours and days. In order to evaluate an algorithm the average prices obtained by trading with a market benchmark must be compared.

 In one of my previous entries, I explained how machines are taking over all the industries. The future of Investing is said to be Algorithmic Trading.The algorithm simply takes all the tradable assets and combines the decision-making components with technical analysis using computers and math in order to create a final signal which will predict the direction the asset will move.The algorithm is able to put in a lot of different dynamics which is generally impossible for an analyst.This could affect the future market price and thus forecast the future price movement in advance.The algorithms learn from previous forecasts and is continuously adapting the relationships and thus, is capable of quickly adjusting to a fluctuating market. As a result of the algorithm learning from past data and previous forecasts it consequently becomes more intelligent and produces increasingly more accurate forecasts as time progresses.

_________________________________________________________________________________

              References

Friday, September 2, 2016

                                     Cyber Security 

        As Find law says "Cyber crimes are criminal offenses committed via the internet or otherwise aided by various forms of computer technology, such as the use of online social networks to bully others or sending sexually explicit digital photos with a smart phone." This has been a problem that prevails from a very long time and there are form of different Cyber Securities coming up to combat Cyber crimes. “Cyber security is referred to as the information technology security, focuses on protecting computers, networks, programs and data from unintended or unauthorized access, change or destruction”.
       Cyber security is important because it helps us keep all the confidential information confidential and protects an individual's and company's privacy and a country's secret safe.To be able to do high level programing for developing ways to make online sites secured, the main requirement is know how the computer works and how programming is done.Thus, Computer Science is the most important part of Cyber Security. Few methods used for Cyber security are User account access control, Cryptography, Firewalls, Intrusion detection System.
   These have a great use in the current society when most people like to keep most of their important details on their phones or computers.User account access control is when the user has to provide authentication that it is he who is signing into his/her account and not anybody else. Cryptography is the practice and study of techniques for secure communication in the presence of third parties.Firewalls is a network security system that monitors and controls the incoming and outgoing network traffic based on predetermined security rules.An intrusion detection system (IDS) is a device or software application that monitors a network or systems for malicious activity or policy violations. Thanks to Computer Science are online systems can be made secured.

-----------------------------------------------------------------------------------------------------------------------------References 

--------------------------------------------------------------------------------------------------------------------------

Robotics and Artificial Intelligence

  Robots can solve lots of problems but there are some limitations to that. This has been a controversial topic as to whether robots and computers can be actually considered to be Intelligent. There are certain tasks which humans might take ages to do but the computer can do it in a few minutes. This brought about a new concept known as Artificial Intelligence. Artificial Intelligence is the computational model of human behavior and human thought that helps the computer to behave like a human being and operate like the humans do.
     The computers and robots work based on the sensory input or the human input. Therefore they are even capable of social interactions. After hearing this, would it be wrong to call robots as humans without emotions?                        
      The next challenge for Artificial Intelligence is to learn how natural Intelligence works. We all know that the human brain works with neurons and with electrical relationship between them . The Robotics is just a great contribution of programming and computer science. Computer Science made circuits which are the building blocks of the robots.
         Robotics is used to understand the animal and the human anatomy. The roboticist have the dream to make it possible to make a robot with real intelligence.Some scientists have been predicting that the future beholds a large use of robots not only for certain tasks but even for the tasks in our daily life. Some even go further on to say that robotic evolution will ultimately turn us into cyborgs. Cyborgs refer to humans integrated with machines. People could load their minds in a robot and live for a thousand years. This might sound scary cause it can be misused by the evil minded people but the genius minds could also be able to contribute more to our world.
--------------------------------------------------------------------------------------------------------------------------

References


--------------------------------------------------------------------------------------------------------------------------