Понимание основ программирования
Как член студенческой лиги Microsoft ADC в моем университете, я имел честь пройти несколько курсов, чтобы должным образом закрепиться в программировании. Эти курсы позволили мне понять основы программирования и разработки программного обеспечения. Я пишу эту статью в качестве руководства для всех, кто начинает работать инженером-программистом и ищет лучший путь, поскольку я считаю, что эти курсы помогли мне понять траекторию становления инженером-программистом.
Курсы:
1.Основы программирования: основы
Этот курс помог мне понять основы программирования и языков программирования, он научил основам, которые являются общими для нескольких языков, таких как переменные, строки и условный код. Вы также узнаете, как работать с несколькими типами данных, правильно комментируя свой код и устранение ряда ошибок. Я также узнал одну важную вещь: как сделать правильный выбор при выборе языка программирования для использования. Этот курс помог мне понять, что программирование позволяет вам указывать компьютеру, что делать и как это делать.
2. Основы программирования: алгоритмы
Алгоритмы — это основа программирования. Это логические / пошаговые процедуры, которым вы следуете для решения любой проблемы. Этот курс помог мне понять, как алгоритмы предлагают способ думать о задачах программирования, а также заставил меня понять и увидеть наиболее распространенные алгоритмы для поиска и сортировки информации. . Я также увидел зацикливание и рекурсию в действии и то, как их можно использовать в программировании и понимании общих структур данных. Я также научился оценивать производительность заданного алгоритма и уникально фильтровать значения && count с помощью хеш-таблиц. Ниже приведен фрагмент кода некоторых реализаций того, чему я научился с помощью python.
# Loops # For loop to iterate over a list my_list = [1, 2, 3, 4, 5] for num in my_list: print(num) # Recursion # Recursive function to calculate the factorial of a number def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n-1) print(factorial(5)) # Output: 120 # Filtering and Counting Unique Values with Hash Tables # Using a hash table (dictionary) to filter and count unique values my_list = [1, 2, 2, 3, 4, 4, 5, 5, 5] unique_values = {} for num in my_list: if num in unique_values: unique_values[num] += 1 else: unique_values[num] = 1 print(unique_values) # Output: {1: 1, 2: 2, 3: 1, 4: 2, 5: 3}
3. Основы программирования: структуры данных
Этот курс поможет вам понять структуры данных, он предоставил мне введение в структуры данных, а также дал углубленный обзор нескольких структур данных, таких как массивы, стеки и очереди, списки, деревья и графы и хеш-таблицы. на основе структур данных. Я увидел, как их можно реализовать на нескольких языках и как они влияют на производительность и эффективность приложений. Ниже приведена реализация каждой из этих структур данных с использованием Python.
# Arrays # Creating an array my_array = [1, 2, 3, 4, 5] # Accessing elements in the array print(my_array[0]) # Output: 1 # Modifying an element in the array my_array[2] = 10 # Printing the modified array print(my_array) # Output: [1, 2, 10, 4, 5] # Stacks and Queues # Stack implementation using a list my_stack = [] # Pushing elements onto the stack my_stack.append(1) my_stack.append(2) my_stack.append(3) # Popping elements from the stack (last-in, first-out) popped_element = my_stack.pop() print(popped_element) # Output: 3 # Queue implementation using a list my_queue = [] # Enqueuing elements into the queue my_queue.append(1) my_queue.append(2) my_queue.append(3) # Dequeuing elements from the queue (first-in, first-out) dequeued_element = my_queue.pop(0) print(dequeued_element) # Output: 1 # Lists # Creating a list my_list = [1, 2, 3, 4, 5] # Appending an element to the list my_list.append(6) # Inserting an element at a specific index my_list.insert(2, 7) # Removing an element from the list my_list.remove(3) # Printing the modified list print(my_list) # Output: [1, 2, 7, 4, 5, 6] # Trees and Graphs # Tree node class class TreeNode: def __init__(self, value): self.value = value self.left = None self.right = None # Creating a binary tree root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) # Graph implementation using a dictionary my_graph = { 'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'] } # Printing the tree and graph print(root.value) # Output: 1 print(my_graph['A']) # Output: ['B', 'C'] # Hash-based Data Structures # Dictionary implementation my_dict = {'key1': 1, 'key2': 2, 'key3': 3} # Accessing values using keys print(my_dict['key2']) # Output: 2 # Modifying values my_dict['key3'] = 10 # Printing the modified dictionary print(my_dict) # Output: {'key1': 1, 'key2': 2, 'key3': 10}
4. Основы программирования: базы данных
Базы данных, как следует из названия, хранят данные. Программам нужно место для хранения данных, сгенерированных либо пользователем, либо самой программой. Этот курс помог мне понять потребность в базах данных и роль, которую они играют в создании сложных приложений. Я познакомился с несколькими терминами, такими как
я. Обычные формы. Обычные формы — это правила проектирования базы данных, которые устраняют избыточность данных и обеспечивают целостность данных за счет определения отношений и зависимостей между таблицами.
ii. ACID: ACID — это набор свойств (атомарность, непротиворечивость, изоляция, долговечность), которые гарантируют надежность и согласованность транзакций базы данных.
iii. CRUD: CRUD представляет четыре основные операции (создание, чтение, обновление, удаление), используемые для управления данными в базе данных.
iv.Целостность ссылок: целостность ссылок гарантирует точное поддержание связей между таблицами за счет обеспечения согласованности и предотвращения аномалий данных.
v. Транзакции. Транзакции — это логические единицы работы, состоящие из нескольких операций с базой данных, обеспечивающие надежные и согласованные изменения в база данных.
vi. Записи. Записи представляют собой наборы связанных элементов данных, хранящихся как единое целое, представляющих строку в таблице базы данных.
vii. Таблицы. Таблицы организуют и хранят данные в структурированном виде, состоящем из столбцов, представляющих атрибуты, и строк, представляющих записи или записи данных, формируя основу реляционных баз данных.
Я также научился писать запросы, необходимые для извлечения данных, и как выбирать между различными требованиями к хранилищу, доступу, производительности и безопасности.
5.Основы программирования: объектно-ориентированный дизайн
«Все хорошее программное обеспечение начинается с отличного дизайна». Одна из основных вещей, которые я усвоил из этого курса, — это важность объектно-ориентированного мышления и принципов объектно-ориентированного проектирования, необходимых для создания программного обеспечения. Этот курс познакомил меня с такими понятиями, как объекты, классы, абстракция, наследование и полиморфизм. Я также научился составлять требования к приложению, определять варианты использования и планировать классы с помощью универсального языка моделирования (UML). Я узнал, почему это важно сделать до написания кода. Ниже приведен фрагмент кода различных концепций ООП, которые я изучил в этом курсе, используя python.
# Define the abstract base class 'Shape' class Shape: def area(self): # Abstract method to calculate the area of a shape pass def perimeter(self): # Abstract method to calculate the perimeter of a shape pass # Define a concrete class 'Rectangle' that inherits from 'Shape' class Rectangle(Shape): def __init__(self, length, width): self.length = length self.width = width def area(self): # Calculate the area of the rectangle return self.length * self.width def perimeter(self): # Calculate the perimeter of the rectangle return 2 * (self.length + self.width) # Define another concrete class 'Circle' that inherits from 'Shape' class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): # Calculate the area of the circle return 3.14 * (self.radius ** 2) def perimeter(self): # Calculate the circumference of the circle return 2 * 3.14 * self.radius # Create instances of the classes and demonstrate polymorphism rectangle = Rectangle(4, 6) circle = Circle(5) # Call the 'area()' and 'perimeter()' methods on the objects print("Rectangle:") print("Area:", rectangle.area()) # Output: Area: 24 print("Perimeter:", rectangle.perimeter()) # Output: Perimeter: 20 print("\nCircle:") print("Area:", circle.area()) # Output: Area: 78.5 print("Perimeter:", circle.perimeter()) # Output: Perimeter: 31.4
6.Основы программирования: API и веб-службы
API (интерфейс прикладного программирования) — это набор правил и протоколов, которые позволяют различным программным приложениям взаимодействовать друг с другом. API-интерфейсы позволяют приложениям получать доступ к определенным функциям или функциям других программных систем, таких как веб-службы, библиотеки, операционные системы или базы данных, без необходимости понимать внутреннюю работу этих систем. Веб-службы позволяют приложениям раскрывать свои функции или данные через четко определенные API (интерфейсы прикладного программирования), к которым другие приложения могут получить доступ через Интернет. Этот курс познакомил меня с тем, что такое веб-сервисы и как их защитить, а также объяснил несколько веб-сервисов, таких как:
REST: передача репрезентативного состояния (REST) — это архитектурный стиль для разработки веб-служб, использующий стандартные методы и ресурсы HTTP для создания масштабируемых API без сохранения состояния, что позволяет клиентам эффективно взаимодействовать с ресурсами на стороне сервера.
SOAP: Простой протокол доступа к объектам (SOAP) — это протокол, определяющий набор правил для структурирования сообщений в веб-службах, использующий XML для представления данных и обеспечивающий более надежный и стандартизированный подход к взаимодействию между приложениями.
GraphQL: GraphQL — это язык запросов и среда выполнения для API-интерфейсов, которые позволяют клиентам запрашивать определенные требования к данным и получать только те данные, которые им нужны, уменьшая избыточную и неполную выборку и обеспечивая более эффективный и гибкий подход к поиску данных в веб-службах. .
Далее показано, как разрабатываются API-интерфейсы для некоторых из этих сервисов, а также потребность в API-интерфейсах и веб-сервисах при разработке программного обеспечения.
7.Основы программирования: тестирование программного обеспечения/контроль качества
Этот курс познакомил меня с тем, что такое обеспечение качества и что такое тестирование, я узнал роль QA в разработке программного обеспечения и важность тестирования при разработке программного обеспечения. Я увидел различные виды тестирования и то, как тестирование вписывается в жизненный цикл разработки программного обеспечения. Я также изучил несколько механизмов, используемых для определения общего состояния продукта. Этот курс еще больше укрепил мою способность смотреть на то, над чем я работаю, критически думать о том, как эти части сочетаются друг с другом, и определять способы помочь моей команде достичь целей в области качества. с каждым выпуском.
ЗАКЛЮЧЕНИЕ
В целом, эти курсы были очень полезны для моего роста как инженера-программиста. Мне удалось понять несколько ключевых компонентов, участвующих в разработке программного обеспечения, а также увидеть несколько реализаций полезных концепций. Программирование — это весело и связано с поиском творческих решений проблем. Чем больше вы учитесь и экспериментируете, тем больше вы сможете найти более разумных способов решения проблем.
Примите радость обучения и наслаждайтесь каждым его шагом. Время от времени это становится сложным, но вы можете становиться лучше только после каждого испытания.
На пути к тому, чтобы стать инженером-программистом, любопытство и последовательность — ваши надежные спутники. Любопытство подпитывает вашу жажду знаний и исследований, побуждая вас задавать вопросы, искать ответы и глубоко погружаться в сложные процессы разработки программного обеспечения. Это заставляет вас понять не только то, как все работает, но и то, почему это работает именно так.
Таким образом, любознательность и последовательность являются незаменимыми качествами на вашем пути к тому, чтобы стать инженером-программистом. Развивайте свою любознательность, задавая вопросы, изучая новые технологии и интересуясь внутренним устройством программного обеспечения. Поддерживайте свое любопытство последовательно, посвящая время каждый день обучению, практике и совершенствованию. С любознательностью и последовательностью в качестве ваших надежных компаньонов вы пойдете по пути разработки программного обеспечения с энтузиазмом, ростом и успехом.