Java is a justly plain run-anywhere, write-once language to learn, with syntax that is modest, strong, and easy to comprehend. Rendered to Sun Microsystems, Java is a subtle software design language since Java grammar is founded on C++. Numerous complex and little-used features, such as operator overloading, explicit pointers have been removed from JavaJava (Grgic, Mihaljević, and Radovan, 2018, p 1540). Because JavaJava has Automatic Garbage Collection, there is no need to eliminate unreferenced objects. Java is an object-oriented computer language.
The software or hardware setting in which a program runs is a platform (Savitch, 2019). Java offers a software-based platform that differs from most others in that it is a software-founded podium that works on top of other hardware-centered systems (Christopher and Waworuntu, 2021, p. 66). Java code might run on several Linux, Windows, Mac/OS, Sun Solaris, and others. The compiler gathers Java code and changes it to bytecode. Because it may be run on different systems, this bytecode is platform-independent, Write Once and Run Anywhere.
Because there is no obvious pointer and its programs run inside a simulated machine sandbox, it is best recognized for its security. The classloader in this language is a component of the Java Runtime Environment used to load Java classes into the Java Computer-generated Machine energetically (Gusarovs, 2018, p. 112). It enhances safety by isolating the local file scheme classes package from those introduced from network bases. Bytecode Verifier examines code wreckages for criminal code that disrupt object access rights. The Security Manager controls which resource a class has access to, such as writing and reading to the local disk. This type of programming language includes these safeguards by default.
One of the key reasons to learn JavaJava with no programming experience is that it is a beginner-friendly language. Because it is relatively high-level, JavaJava is simple to understand, which made my experience enjoyable. This implies that one cannot go into the weeds as much as they would with a lower-level language. In contrast to C++, garbage collection occurs without one being involved in Java (Parsons, 2020, p. 6). Java is low-level enough to handle most tasks.
Clojure
Clojure contains valuable features that, when combined, make a simple, cohesive, and powerful tool. It is dynamic, which implies that a Clojure program is more than just something that can be compiled and run; it can also be interacted with (Hamers and Jongmans, 2020, p. 280). This is not a language concept but a setting in which practically all language hypotheses are reified and examinable and changeable. It includes mechanisms for avoiding the changeable state, functions as first-class matters, and stresses recursive repetition over side-effect-based looping (Facorro and Chechina, 2020, p. 45). Clojure’s theory is that the most significant aspects of utmost systems should be practical and that more functional programs are more robust.
It is a programming language in the Lisp family, and numerous Lisp characteristics have made their way into other languages. Lisp’s method to code-as-data and its macrostructure remain unique. It extends the code-as-data concept to vectors and maps in addition to parenthesized lists (Pinzaru, and Rivera, 2019, p. 78). The data structure represented by the forms is the outcome of the reading. Clojure can generate code-representation data structures, and as part of that procedure, it looks for calls to macros.
Clojure makes multi-threaded programming easier in a variety of habits. Since the underlying data structures are unchallengeable, they can be easily shared throughout threads. As a functional language, it permits the state to change (Santos et al., 2018 p. 317). This language does not replace the Java thread system but complements it (Khomtchouk et al., 2018, p. 540). Clojure functions use the JavaJava.util. Concurrent packages, as they are callable, interact with the Executor framework.
This language is exclusive since it was fashioned to build on top of prevailing systems. It has been a lot of fun to think about challenges as a series of data transformations while learning the language. Because it is a functional language, the primary mechanism for manipulating data is achieved by chaining together a series of small, focused functions that combine to produce the desired result. The macros in Clojure have allowed me to extend the language itself (Hickey, 2020, p. 27). The control flow “unless” construct is the most common example offered. Clojure has exposed me to thoughts and practices I had never encountered before in learning.
RAM
RAM is the CPU’s internal memory stores information, programs, and program outcomes. It is a read and writes memory storing data while the apparatus functions. Gigabytes are the most common unit of measurement for RAM (Sharma, Chawla, and Ram, 2020, p. 14). Information is distributed as shortly as the machine is switched off. RAM information can be retrieved at random, but it is pretty pricey. RAM is unstable, which means that data kept in it is misplaced when the processor or a power outage is switched off (Chen et al., 2020, p. 1282). As a result, holdup Uninterruptible Power Supply systems are frequently utilized with computers. RAM is little, both substantially and in terms of the quantity of information, it can hold.
This language is classified into dynamic RAM (DRAM) and static RAM (SRAM). Static RAM denotes memory that preserves its subjects as long as electricity is accessible. However, information is lost when the power goes off due to the unstable atmosphere. SRAM chips are built using a 6-transistor matrix and no capacitor (Sebastian et al., 2020, p. 537). This type of RAM is not regularly revitalized since transistors do not contain the necessary electricity to evade seepage. Meanwhile, there is extra space in the matrix; SRAM necessitates more chips than DRAM to store a similar volume of information, rising manufacturing expenditures (Molas et al., 2018, p.35). As an outcome, SRAM has speedy access and is used as cache memory. DRAM, contrasting SRAM, needs to be revitalized frequently to save the information. This is achieved by linking the memory to a refresh circuit, which rewrites the information hundreds of periods per second. Because it is inexpensive and compact, DRAM is used for most system memory. DRAMs are all built up of memory cells, consisting of one capacitor and one transistor.
A RAM is unique because the device allows data objects to be read or written around a similar quantity of time irrespective of where they are substantially located inside the memory. I have discovered that RAM is a critical hardware component of a computer; it will not function without it. Many processes are launched when someone does something on their laptop (Panda, Sahu, and Tseng, 2018, p.18). This labor is powered by RAM by typing a sentence, saving a document, or venturing into a video game.
Revenge of the Nerds
In his article, Graham discusses macros in LISP where Lisp macros accept Lisp code as input and return Lisp code as output. The resulting code is executed at runtime, and I believe he means the number of things we can communicate readily when he says “power.” Many Lisp notions can be expressed in C or Java, but it takes more work (Paul, 2002). Lisp is powerful because it requires fewer “words” to describe the same idea, and indeed, it appears to exercise our brains differently.
Graham asserts that more sophisticated languages utilize much fewer lines of code than less powerful languages. It appears that the thesis is that you can never justify not using LISP. It is suitable to use another language for little tasks, but you should use LISP if you ever need to complete a more extensive project because it is better (Paul, 2002). But then he counters by demonstrating the difference in time and code size between those who use LISP and those who use lower-level languages. According to my knowledge, languages differ in power. This is because Lisp might not be the language to use if you needed to do anything extremely low-level, such as move bits about, and processor time was more valuable to you than programmer effort.
Graham did an outstanding job of recounting the power of LISP. However, I had the impression that he presumed that most programmers could quickly produce and understand very concise code. We heard in a previous reading that JavaJava was built to appeal to a broad audience, which may explain why it is not as straightforward as LISP. Perhaps some programmers select a lesser language because they find it easier to learn than their superiors tell them to. I cannot entirely agree that Lisp is unsuitable for producing short scripts. Its participatory nature lends itself particularly well to this. Because Java and lisp both employ garbage collection for internal memory management, it is common for the language’s runtimes to assign memory from the functioning system not being used by the application software (Paul, 2002). Memory used by the Lisp expansion environment, compiler, and runtime libraries is comprised of Lisp applications’ memory consumption. The invention of Clojure is significant since it uses most of the Lisp aspects.
Reference list
Chen, C., Li, K., Ouyang, A., Zeng, Z. and Li, K., (2018) ‘Flink: An in-memory computing architecture on heterogeneous CPU-GPU clusters for big data’, IEEE Transactions on Parallel and Distributed Systems, 29(6), pp.1275-1288.
Christopher, L. and Waworuntu, A., (2021) ’Java Programming Language Learning Application Based on Octalysis Gamification Framework’, IJNMT (International Journal of New Media Technology), 8(1), pp.65-69.
Facorro, J. and Chechina, N., (2020) ‘Clojure: the expressive power of Clojure on the BEAM’, Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang (pp. 41-52).
Grgic, H., Mihaljević, B. and Radovan, A., (2018, May) ‘Comparison of garbage collectors in Java programming language’, 2018 41st International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO) (pp. 1539-1544). IEEE.
Gusarovs, K., (2018) ‘An Analysis on Java Programming Language Decompiler Capabilities’, Applied Computer Systems, 23(2), pp.109-117.
Hamers, R. and Jongmans, S.S., (2020) ‘Disclosure: Runtime verification of communication protocols in Clojure’, In International Conference on Tools and Algorithms for the Construction and Analysis of Systems (pp. 266-284). Springer, Cham.
Hickey, R., 2020. ‘A history of Clojure’, Proceedings of the ACM on programming languages, 4(HOPL), pp.1-46.
Khomtchouk, B.B., Weitz, E., Karp, P.D. and Wahlestedt, C., (2018) ‘How the strengths of Lisp-family languages facilitate building complex and flexible bioinformatics applications’, Briefings in bioinformatics, 19(3), pp.537-543.
Molas, G., Sassine, G., Nail, C., Robayo, D.A., Nodin, J.F., Cagli, C., Coignus, J., Blaise, P., and Nowak, E., (2018) ‘Resistive memories (RRAM) variability: challenges and solutions’, ECS Transactions, 86(3), p.35.
Panda, D., Sahu, P.P. and Tseng, T.Y., (2018) ‘A collective study on modeling and simulation of resistive random access memory’, Nanoscale research letters, 13(1), pp.1-48.
Parsons, D., (2020) ‘The Java Story’, In Foundational Java (pp. 1-10). Springer, Cham.
Paul, G., (2002) Revenge of the Nerds, Web.
Pinzaru, G. and Rivera, V., (2019) ‘Towards static verification of Clojure contract-based programs’, In International Conference on Objects, Components, Models and Patterns (pp. 73-80). Springer, Cham.
Santos, E.A., Campbell, J.C., Patel, D., Hindle, A., and Amaral, J.N., (2018) ‘Syntax and sensibility: Using language models to detect and correct syntax errors’, In 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER) (pp. 311-322). IEEE.
Savitch, W., (2019) Java: An introduction to problem-solving & programming. Pearson Education Limited.
Sebastian, A., Le Gallo, M., Khaddam-Aljameh, R. and Eleftheriou, E., (2020) ‘Memory devices and applications for in-memory computing’, Nature nanotechnology, 15(7), pp.529-544.
Sharma, N., Chawla, V. and Ram, N., (2020) ‘Comparison of machine learning algorithms for the automatic programming of computer numerical control machines’, International Journal of Data and Network Science, 4(1), 1-14.