MATLAB so với C++

Tôi có mục tiêu tạo ra phần mềm kế toán đơn giản nhất cho Mac và Windows để giúp các doanh nghiệp nhỏ ở Canada

Điều này đã dẫn tôi đến 2 năm dài khám phá ngôn ngữ tốt nhất có thể cung cấp các tính năng này

  • Năng suất tổng thể tuyệt vời
  • Sử dụng rộng rãi trên toàn thế giới để đảm bảo tính bền vững lâu dài và dễ tìm tài liệu
  • Tính linh hoạt để tạo trang web và phần mềm máy tính để bàn
  • Trải nghiệm nhà phát triển thú vị
  • Khả năng tạo giao diện người dùng hiện đại ưa nhìn
  • Cơ hội việc làm với ngôn ngữ này

Tôi đã thử Python, Java, C# và C++ mà không tìm thấy thứ tôi đang tìm kiếm

Khi tôi phát hiện ra Javascript, tôi thực sự biết đó là ngôn ngữ phù hợp để sử dụng. Nghĩ về điều này ngày hôm nay khiến tôi càng nhận ra quyết định tuyệt vời như thế nào khi học, sử dụng và thành thạo Javascript. Đó là một con đường thú vị, đầy thử thách và hiệu quả mà tôi vẫn hài lòng

Rõ ràng khi nhắc đến Javascript không phải không ám chỉ hệ sinh thái rộng lớn xung quanh nó. Đối với tôi, JS là cả một vũ trụ trong đó hầu hết mọi công cụ có thể tưởng tượng đều tồn tại. Thật tuyệt vời - thực tế. Cảm ơn tất cả những người đóng góp đã làm cho nó có thể

Để rõ ràng hơn về mức độ mãnh liệt của tôi với Javascript, hãy nói rằng niềm đam mê đầu tiên của tôi là âm nhạc. Cho đến khi, tôi tìm thấy mã hóa bằng Javascript. Vâng tôi biết

Vì vậy, cuối cùng, tôi đã chọn Javascript vì nó linh hoạt, thú vị, được sử dụng rộng rãi, hiệu quả cho cả phần mềm máy tính để bàn và trang web với khả năng tạo giao diện người dùng đẹp mắt hiện đại (giả sử có liên quan đến HTML và CSS) và cuối cùng là có cơ hội việc làm

Các lớp MATLAB có thể định nghĩa các thuộc tính chung, mà bạn có thể sửa đổi các thuộc tính này bằng cách gán rõ ràng các giá trị cho các thuộc tính đó trên một thể hiện nhất định của lớp. Tuy nhiên, chỉ các lớp bắt nguồn từ lớp

obj = SimpleClass('red');
6 mới thể hiện hành vi tham chiếu. Sửa đổi một giá trị thuộc tính trên một thể hiện của một lớp giá trị (các lớp không bắt nguồn từ
obj = SimpleClass('red');
6), chỉ thay đổi giá trị trong ngữ cảnh thực hiện sửa đổi

Các phần tiếp theo mô tả hành vi này chi tiết hơn

Các đối tượng được truyền cho hàm

MATLAB chuyển tất cả các biến theo giá trị. Khi bạn truyền một đối tượng vào một hàm, MATLAB sẽ sao chép giá trị từ hàm gọi vào biến tham số trong hàm được gọi

Tuy nhiên, MATLAB hỗ trợ hai loại lớp hoạt động khác nhau khi sao chép

  • Các lớp xử lý - một biến thể hiện của lớp xử lý đề cập đến một đối tượng. Một bản sao của biến thể hiện của lớp xử lý đề cập đến cùng một đối tượng như biến ban đầu. Nếu một hàm sửa đổi một đối tượng điều khiển được truyền dưới dạng đối số đầu vào, thì việc sửa đổi sẽ ảnh hưởng đến đối tượng được tham chiếu bởi cả điều khiển ban đầu và điều khiển được sao chép

  • Các lớp giá trị — dữ liệu thuộc tính trong một thể hiện của một lớp giá trị độc lập với dữ liệu thuộc tính trong các bản sao của thể hiện đó (mặc dù, một thuộc tính của lớp giá trị có thể chứa một núm điều khiển). Một hàm có thể sửa đổi một đối tượng giá trị được truyền dưới dạng đối số đầu vào, nhưng việc sửa đổi này không ảnh hưởng đến đối tượng ban đầu

Xem So sánh các lớp Xử lý và Giá trị để biết thêm thông tin về hành vi và cách sử dụng của cả hai loại lớp

Truyền đối tượng giá trị. Khi bạn truyền một đối tượng giá trị cho một hàm, hàm này sẽ tạo một bản sao cục bộ của biến đối số. Chức năng chỉ có thể sửa đổi bản sao. Nếu bạn muốn sửa đổi đối tượng ban đầu, hãy trả lại đối tượng đã sửa đổi và gán nó cho tên biến ban đầu. Ví dụ, xem xét lớp giá trị,

obj = SimpleClass('red');
0

classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end

Tạo một thể hiện của

obj = SimpleClass('red');
0, gán giá trị của
obj = SimpleClass('red');
2 cho thuộc tính
obj = SimpleClass('red');
3 của nó

obj = SimpleClass('red');

Truyền đối tượng cho hàm

obj = SimpleClass('red');
4, hàm này gán
obj = SimpleClass('red');
5 cho thuộc tính
obj = SimpleClass('red');
3

function y = g(x)
   x.Color = 'blue';
   y = x;
end

Hàm

obj = SimpleClass('red');
4 sửa đổi bản sao của đối tượng đầu vào và trả về bản sao đó, nhưng không thay đổi đối tượng ban đầu

Nếu hàm

obj = SimpleClass('red');
4 không trả về giá trị, thì việc sửa đổi thuộc tính đối tượng
obj = SimpleClass('red');
3 sẽ chỉ xảy ra trên bản sao của
function y = g(x)
   x.Color = 'blue';
   y = x;
end
0 trong không gian làm việc của hàm. Bản sao này sẽ nằm ngoài phạm vi khi quá trình thực thi chức năng kết thúc

Ghi đè biến ban đầu thực sự thay thế nó bằng một đối tượng mới

Vượt qua đối tượng xử lý. Khi bạn truyền một giá trị điều khiển cho một hàm, hàm đó sẽ tạo một bản sao của biến điều khiển, giống như khi truyền một đối tượng giá trị. Tuy nhiên, vì bản sao của đối tượng xử lý đề cập đến cùng một đối tượng với đối tượng xử lý ban đầu, nên hàm có thể sửa đổi đối tượng mà không phải trả về đối tượng đã sửa đổi

Ví dụ: giả sử bạn sửa đổi định nghĩa lớp

obj = SimpleClass('red');
0 để tạo một lớp dẫn xuất từ ​​lớp
obj = SimpleClass('red');
6

classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end
5

Tạo một thể hiện của

function y = g(x)
   x.Color = 'blue';
   y = x;
end
3, gán giá trị của
obj = SimpleClass('red');
2 cho thuộc tính
obj = SimpleClass('red');
3 của nó

classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end
9

Truyền đối tượng cho hàm

obj = SimpleClass('red');
4, hàm này gán
obj = SimpleClass('red');
5 cho thuộc tính
obj = SimpleClass('red');
3

Hàm

obj = SimpleClass('red');
4 đặt thuộc tính
obj = SimpleClass('red');
3 của đối tượng được tham chiếu bởi cả handle trả về và handle ban đầu

Các biến

classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end
51 và
function y = g(x)
   x.Color = 'blue';
   y = x;
end
0 đề cập đến cùng một đối tượng

obj = SimpleClass('red');
7

Hàm

obj = SimpleClass('red');
4 đã sửa đổi đối tượng được tham chiếu bởi đối số đầu vào (
function y = g(x)
   x.Color = 'blue';
   y = x;
end
0) và trả về một điều khiển cho đối tượng đó trong
classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end
51

MATLAB Vượt qua các Xử lý theo Giá trị. Một biến xử lý là một tham chiếu đến một đối tượng. MATLAB chuyển tham chiếu này theo giá trị

Xử lý không hoạt động như tài liệu tham khảo trong C++. Nếu bạn chuyển một đối tượng xử lý cho một hàm và hàm đó gán một đối tượng khác cho biến xử lý đó, thì biến trong trình gọi sẽ không bị ảnh hưởng. Ví dụ, giả sử bạn định nghĩa một hàm

classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end
56

obj = SimpleClass('red');
2

Truyền một đối tượng xử lý cho

classdef SimpleClass
   properties
      Color
   end
   methods
      function obj = SimpleClass(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end
56

obj = SimpleClass('red');
4

Hàm ghi đè bộ điều khiển được truyền dưới dạng đối số, nhưng không ghi đè lên đối tượng được gọi bởi bộ điều khiển. Xử lý ban đầu

function y = g(x)
   x.Color = 'blue';
   y = x;
end
0 vẫn tham chiếu đối tượng ban đầu

MATLAB có dễ hơn C không?

Chúng tôi thường thấy rằng sinh viên bắt đầu lập trình bằng MATLAB dễ dàng hơn nhiều so với sử dụng C vì MATLAB giải quyết được nhiều vấn đề .

Tại sao C tốt hơn MATLAB?

Sự khác biệt chính giữa Matlab và ngôn ngữ C là Matlab là môi trường điện toán tương tác trong khi Ngôn ngữ C là ngôn ngữ lập trình mục đích chung cấp cao.

MATLAB có dựa trên C không?

Tính đến năm 2020, MATLAB có hơn 4 triệu người dùng trên toàn thế giới. . MATLAB

MATLAB có nhanh hơn C++ không?

C++ có tốc độ xử lý trung bình nhanh hơn 500 lần so với mã Matlab . Điều này không chỉ áp dụng cho mã này mà còn có thể áp dụng cho bất kỳ so sánh mã nào khác giữa các tệp MEX của Matlab và C++. So sánh, lợi ích về tốc độ do C++ mang lại vượt xa sự đơn giản của Matlab.