<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: WilliamAdams63</title>
    <description>The latest articles on DEV Community by WilliamAdams63 (@williamadams63).</description>
    <link>https://dev.to/williamadams63</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F372791%2Fd43ff3fe-895b-47b7-942e-d1763284d006.jpg</url>
      <title>DEV Community: WilliamAdams63</title>
      <link>https://dev.to/williamadams63</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/williamadams63"/>
    <language>en</language>
    <item>
      <title>MVP vs MVC vs MVVM - Choosing Web Architecture for your Project</title>
      <dc:creator>WilliamAdams63</dc:creator>
      <pubDate>Thu, 23 Jul 2020 13:49:10 +0000</pubDate>
      <link>https://dev.to/williamadams63/mvp-vs-mvc-vs-mvvm-choosing-web-architecture-for-your-project-468n</link>
      <guid>https://dev.to/williamadams63/mvp-vs-mvc-vs-mvvm-choosing-web-architecture-for-your-project-468n</guid>
      <description>&lt;p&gt;App development is trending these days, thanks to the rising number of mobile phones around the world. Seeing the huge rise in mobile users, companies have started to shift their business towards the online platform. &lt;/p&gt;

&lt;p&gt;This has given a good opportunity of employment to Android developers. Thanks to this, many people are learning Android app development these days. &lt;/p&gt;

&lt;p&gt;One of the important elements of Android is its architecture, its basic design. Android architecture is basically of three types: MVC(Model View Control), MVP(Model View Presenter), and MVVM(Model View View-Model).&lt;/p&gt;

&lt;p&gt;So in this blog, we are going to discuss MVP, MVC, and MVVM and do a comparison between them. &lt;/p&gt;

&lt;p&gt;But before that, let us see why we need design patterns.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It removes the boilerplate code&lt;/li&gt;
&lt;li&gt;Easy to Test &amp;amp; Maintain the code&lt;/li&gt;
&lt;li&gt;Time-saving or less time consuming&lt;/li&gt;
&lt;li&gt;Build a more responsive and error-free application&lt;/li&gt;
&lt;li&gt;Separate the UI and business logic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that we're clear with the need for design patterns, let us start the design frameworks.&lt;/p&gt;

&lt;h2&gt;Model View Controller(MVC)&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodersera.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F07%2Fmvc-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodersera.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F07%2Fmvc-1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Model–view–controller (usually known as MVC) is a software design pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. &lt;/p&gt;

&lt;p&gt;The MVC design pattern forms the basis for the first architectural solution of the first programming environment with a graphical user interface – Smalltalk-80.&lt;/p&gt;

&lt;p&gt;The architecture of Model-View-Controller is such that it allows you to segregate the data model, user interface, and control logic into three individual components. Since the three components are individuals, any change in a component won’t be reflected in others.&lt;/p&gt;

&lt;p&gt;This type of architecture is well suited for those who are working on large app development projects as a team. &lt;/p&gt;

&lt;p&gt;MVC consists of three components–&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;View &lt;/li&gt;
&lt;li&gt;Controller&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Model&lt;/b&gt; – It basically represents the data that is to be displayed on the screen. In most cases, this refers to the communication between the databases. This communication can be in the form of adding new data, changing existing ones, or selecting specific data. It performs operations on the raw data. The data displayed by it to the user could be in any form.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;View&lt;/b&gt; – View is used for displaying the data taken as input by the model to the user. It represents the User Interface components like HTML and XML. It receives at the input a set of raw data that must be transmitted to the user and formats it following the requirements of the user.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Controller&lt;/b&gt; – As the name suggests, the Controller is responsible for handling all the processes, that is, it is responsible for resolving all the external requests and fulfills these requests. It takes the user’s data through the model to view, acting as a mediator between the two.&lt;/p&gt;

&lt;h2&gt;Model View Presenter&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodersera.com%2Fblog%2Fwp-content%2Fuploads%2F2020%2F06%2Fmvp-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodersera.com%2Fblog%2Fwp-content%2Fuploads%2F2020%2F06%2Fmvp-1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Model–view–presenter (MVP) is a derivation of the model–view–controller (MVC) architectural pattern. Since it is a derivation of MVC, it has many features similar to it. It appeared for the first time in IBM and then in Taligent during the 90s. &lt;/p&gt;

&lt;p&gt;MVP consists of three components-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;View&lt;/li&gt;
&lt;li&gt;Presenter&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Model&lt;/b&gt; – The Model represents a set of classes that describes the business logic and data. It also defines business rules for data means how the data can be changed and manipulated. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;View&lt;/b&gt; – View is used for making interactions with users like XML, Activity, fragments. It has got nothing to do with the logic that is to be implemented in the process.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Presenter&lt;/b&gt; – It is the processing unit of the system. The presenter gets the input from the View, processes the data with the help of Model, and passes the results back to View after the processing is done. &lt;/p&gt;

&lt;p&gt;To simplify the MVP model, the presenter responds to the input data and returns it to View after the processing is done. View and Presenter are not related to each other and interact only through the interface. &lt;/p&gt;

&lt;h2&gt;Model View View-Model&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodersera.com%2Fblog%2Fwp-content%2Fuploads%2F2020%2F06%2Fmvvm-1-1024x176.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcodersera.com%2Fblog%2Fwp-content%2Fuploads%2F2020%2F06%2Fmvvm-1-1024x176.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Model–view–view model (MVVM) is a software architectural pattern that facilitates the separation of the development of the graphical user interface (the view) – be it via a markup language or GUI code – from the development of the business logic or back-end logic (the model) so that the view is not dependent on any specific model platform. &lt;/p&gt;

&lt;p&gt;It has three main components-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;View&lt;/li&gt;
&lt;li&gt;View-Model&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Model&lt;/b&gt; – The model used in MVVM is similar to the model used in MVC, consisting of the basic data required to run the software.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;View&lt;/b&gt; –  View is a graphical interface between the user and the design pattern, similar to the one in MVC. It displays the output of the data processed.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;View-Model&lt;/b&gt; – View-Model is on one side an abstraction of the View and, on the other, provides a wrapper of the Model data to be linked. That is, it comprises a Model that is converted to a View, and it also contains commands that the View can use to influence the Model.&lt;/p&gt;

&lt;p&gt;With that, we have covered the basics of all the three design frameworks of Android. Now, we move towards the comparison.&lt;/p&gt;

&lt;h2&gt;Comparison between MVC, MVP, and MVVM&lt;/h2&gt;

&lt;p&gt;The comparison between &lt;a href="https://codersera.com/blog/mvc-vs-mvp-vs-mvvm/" rel="noopener noreferrer"&gt;MVC, MVP, and MVVM&lt;/a&gt; are mentioned below-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Performance Evaluation – When we are testing the UI performance, MVP turns out to be the one with the highest reliability and lowest hindrance when it comes to rendering frames. Data binding in MVVM creates an additional overload that could drastically affect its performance when performing complex tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatibility – When testing the patterns based on their compatibility, MVVM was the best of the lot due to its data binding which had a positive impact. MVP fared better than MVC, which had serious restating issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modifiability – When we talk about design patterns, it is evident that it should be modifiable since that gives us the option of adding new features and strategies into our app. Based on these factors, we observed that changes are very less in MVP and MVVM, with MVVM contributing a lot towards maintainability. MVC tends to increase the number of changes in the majority of the cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;References – In MVC, the view doesn’t have reference to the Controller while in MVP, the view has reference to the presenter and in MVVM, the view has reference to the view-model.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Android development is a promising field for the future. It is bound to grow at high rates. The basic architecture of Android contains design patterns - MVC, MVP, and MVVM. They are quite similar but have a few differences which make them distinct. Hope this helped you in getting the basic idea of architecture.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Best Programming Languages for Beginners</title>
      <dc:creator>WilliamAdams63</dc:creator>
      <pubDate>Fri, 01 May 2020 13:44:05 +0000</pubDate>
      <link>https://dev.to/williamadams63/best-programming-languages-for-beginners-1f2l</link>
      <guid>https://dev.to/williamadams63/best-programming-languages-for-beginners-1f2l</guid>
      <description>&lt;p&gt;When you have no prior idea of programming from before, then it is best if you start by learning the easy programming languages.  A programming language is a formal language, which comprises a set of instructions that produce various kinds of output. Programming languages are used in computer programming to implement algorithms.&lt;/p&gt;

&lt;p&gt;Coding with entry-level programming languages is not very difficult. It is actually quite fun and interesting. As a newbie in programming, it is understandable for one to be confused and looking for the easiest programming language to start their coding journey.&lt;/p&gt;

&lt;p&gt;To help you with this, we have mentioned some of the easy-to-learn programming languages with their brief description.&lt;/p&gt;

&lt;p&gt;1.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Objective-C&lt;/b&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Er9P8yQY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://career.guru99.com/wp-content/uploads/2014/12/file-3220844882.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Er9P8yQY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://career.guru99.com/wp-content/uploads/2014/12/file-3220844882.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html"&gt;Objective-C&lt;/a&gt; is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. It was the main programming language supported by Apple for macOS, iOS, and their respective application programming interfaces (APIs), Cocoa and Cocoa Touch, until the introduction of Swift in 2014.&lt;/p&gt;

&lt;p&gt;Objective-C is a superset of C and inherits syntax, primitive types, and flow control statements of C programming language. It adds syntax for defining classes and methods and provides dynamic runtime capabilities.&lt;/p&gt;

&lt;p&gt;Objective-C source code 'implementation' program files usually have .m filename extensions, while Objective-C 'header/interface' files have .h extensions, the same as C header files. Objective-C++ files are denoted with a .mm file extension.&lt;/p&gt;

&lt;p&gt;2.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bfZuMbQP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/BLFGxo0qhMkwYODvV3qyxSpXNlxsvd7-0PqLyNyIOxyom7-ycjEnbtiZCjznjNOWvvQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bfZuMbQP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com/BLFGxo0qhMkwYODvV3qyxSpXNlxsvd7-0PqLyNyIOxyom7-ycjEnbtiZCjznjNOWvvQ"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cplusplus.com/"&gt;C++&lt;/a&gt; is a high-level, general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significantly over time, and modern C++ has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.&lt;/p&gt;

&lt;p&gt;C++ was designed with a bias toward system programming and embedded, resource-constrained software and large systems, with performance, efficiency, and flexibility of use as its design highlights. C++ has also been found useful in many other contexts, with key strengths being software infrastructure and resource-constrained applications, including desktop applications, video games, servers (e.g. e-commerce, Web search, or SQL servers), and performance-critical applications (e.g. telephone switches or space probes).&lt;/p&gt;

&lt;p&gt;Talking from the beginner's perspective, C++ is one of the easiest languages that you can learn. Not only this but C++ shares the basics with many other programming languages, giving you an edge when learning other languages too.&lt;/p&gt;

&lt;p&gt;3.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;C#&lt;/b&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X0cuPO_x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pluralsight.imgix.net/paths/path-icons/csharp-e7b8fcd4ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X0cuPO_x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pluralsight.imgix.net/paths/path-icons/csharp-e7b8fcd4ce.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/dotnet/csharp/"&gt;C#&lt;/a&gt; (pronounced see sharp) is a general-purpose, multi-paradigm programming language encompassing strong typing, lexically scoped, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.&lt;/p&gt;

&lt;p&gt;It is as simple as C and C++ with some additional features.&lt;/p&gt;

&lt;p&gt;4.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Java&lt;/b&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2uEGtkA1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/en/thumb/3/30/Java_programming_language_logo.svg/141px-Java_programming_language_logo.svg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2uEGtkA1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/en/thumb/3/30/Java_programming_language_logo.svg/141px-Java_programming_language_logo.svg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://java.com/"&gt;Java&lt;/a&gt; is a general-purpose &lt;a href="https://codersera.com/blog/best-programming-languages-for-beginners/"&gt;programming language&lt;/a&gt; that is class-based, object-oriented, and designed to have as few implementation dependencies as possible. It is intended to let application developers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. &lt;/p&gt;

&lt;p&gt;Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but it has fewer low-level facilities than either of them. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client-server web applications, with a reported 9 million developers.&lt;/p&gt;

&lt;p&gt;It is also commonly used as a server-side language for enterprise-level backend development (90% of fortune 500 companies use Java). As a general-purpose language, Java is dominating the software industry and is used everywhere from building Android apps to desktop apps and games.&lt;/p&gt;

&lt;p&gt;5.&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Swift&lt;/b&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X3Kq-4_5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d3l69s690g8302.cloudfront.net/wp-content/uploads/2019/07/25090721/Swift-5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X3Kq-4_5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d3l69s690g8302.cloudfront.net/wp-content/uploads/2019/07/25090721/Swift-5.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.apple.com/swift/"&gt;Swift&lt;/a&gt; is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, iPadOS, macOS, watchOS, tvOS, Linux, and z/OS. Swift is designed to work with Apple's Cocoa and Cocoa Touch frameworks and the large body of existing Objective-C code written for Apple products.&lt;/p&gt;

&lt;p&gt;Swift is a fast and efficient language that provides real-time feedback and can be seamlessly incorporated into existing Objective-C code. Swift is easy to use and open source programming language, so anyone who wants to create something exciting and new must learn Swift.&lt;/p&gt;

&lt;p&gt;Hope this helps you.&lt;/p&gt;

</description>
      <category>java</category>
      <category>c</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
