6

私はWindows(.NETではなくネイティブ)プログラマーであり、アプリケーションをMacに移植したいと考えています。

実際には、オリジナルは多くのActiveXコントロールに依存しているため、より多くの書き直しになると思います。

私はこれまでずっとMacを使ったことがないので、いくつかのガイダンスが必要になります。O :-)

a)Win32からMac OSに移行するためにどの本をお勧めしますか?
b)Mac用のDelphi(RAD)に似たものはありますか?
c)Lispworks(www.lispworks.com)を推奨する(または推奨しない)人はいますか?
d)サードパーティのCOMコンポーネントのWindows市場に似たものはありますか(すべてを書く必要はありません)?
e)Mac市場について他に知っておくべきことはありますか?
f)ああ、ところで、私はどのMacを買うべきですか?O :-)(ラップトップである必要があります)

前もって感謝します

4

5 に答える 5

9

私は、Windows の経験がある何人かのプログラマーに Cocoa プログラミングを教えてきました。この件に関する以前の投稿が役立つ場合があります。

Cocoa は、MFC やその類とはまったく異なる考え方です。ObjC で現在の考え方を実装する最も簡単な方法を見つけようとするよりも、時間をかけて Cocoa が物事にどのようにアプローチし、その考え方に適応するかを学ぶ方が、はるかに優れた結果をもたらすでしょう。Mac 用の MFC スタイルのコードを作成することは可能ですが、そうすると常にフレームワークと格闘することになります。多くの Windows 開発者がこれに苦労しているのを見てきました。

Cocoa を学ぶのに最適な本はCocoa Programming for Mac OS Xです。OOP の経験が豊富な C++ 開発者であれば、この本から始めることをお勧めします。オブジェクト指向のバックグラウンドが限られている場合は、Objective-C 2.0 のプログラミングから始めてください。

パターンを理解すると、Objective-C のコーディング速度に驚かれることでしょう。私の経験では、C++ と比較して本当に驚くべきものです。REALbasic のような RAD に似たシステムは他にもあり、Ruby で Cocoa アプリを開発することができます。しかし、Mac 市場には ObjC に代わるものはありません。Mac のフレームワークを使用せずに Mac アプリのように動作するアプリを作成するのは難しく、Mac ユーザーは Windows ユーザーよりもそのようなことに神経質になる傾向があります。

私は LispWorks のバックグラウンドを持っていませんが、LISP は、Mac アプリで知られている種類の豊富な UI を開発するにはひどい言語のようです。私は LISP が好きですが (実際にはかなり)、Functional Programming の「副作用なし」という哲学は、最もリッチな UI の目標とは相いれないように思えます (特に、Mac の UI がますますアニメーション中心になるにつれて)。どちらかといえば、Mac プログラミングは関数型プログラミングではなく宣言型に移行しています (Core Animation と Grand Central Dispatch には、多くの宣言型の概念が忍び寄っています)。

Windows ほど大きなサードパーティ コンポーネント市場はありません。その理由の一部は、MFC にはない豊富なコンポーネント セットが Cocoa にすでに用意されているためです。また、適切に動作する Mac アプリは、他のすべての Mac アプリと同じように動作するように、これらのコンポーネントを使用することが期待されているためです。RadControls for .NET のような商用コンポーネントの市場は間違いなくほとんどありません (非常に優れたツールキットです)。しかし、柔軟なライセンス (通常は MIT ベース) を備えた優れた無料のコンポーネントがかなりの数あります。私のお気に入りのいくつか:

前述したように、Mac ユーザーは UI にうるさいです。Windowsユーザーよりもはるかにそうです。彼らは物事が洗練されることを期待しており、Mac を優れたものにするすべての小さな要素と統合されることを期待しています。つまり、ドラッグ アンド ドロップ、Spotlight、サービス、Applescript、Expose、QuickLook、統合されたスペル チェックなどです。組み込みのフレームワークを使用しない場合、これらすべてを正しく行うことは非常に困難です。そういうわけで、新しい Mac 開発者は最初から始めて、フレームワークを学ぶことをお勧めします。

Mac の場合、周辺にたくさんのハードウェア (キーボードやモニターなど) がある場合、Mac Mini は安価な箱として最適です。オールインワンが必要な場合は iMac が最適です。携帯性が必要な場合は、任意の MacBook が適しています。今日の市場には、完全に優れた開発ボックスではない Mac はありません。明らかに、多くの作業を行う場合、8 コアの Mac Pro の方がコンパイルがはるかに高速になりますが、私は 13 インチの MacBook で多くの専門的な開発を行ってきましたまたは中古 (私は改装済みの Mac Mini が大好きです。) 少なくとも開発を始めている間は、Intel ベースの Mac はどれも開発に適しています。

于 2009-09-29T13:44:17.847 に答える
2

Cに精通している場合は、Objective Cを学習することをお勧めします。これは、Macの「ネイティブ」プログラミング言語であるためです。これは、iPhoneアプリケーションを作成するために使用する必要があるものでもあります。CocoaはAppleの主要なAPIであり、探しているツールがたくさんあります。

a)本の推奨事項についてはこのスレッドをお読みください:https ://stackoverflow.com/questions/7571/cocoa-and-objective-c-resources

b)Appleは開発用のXcodeを作成しています。確かに優れたものはありますが、悪くはありません。

d)CocoaはAppleのメインAPIであり、ネットワーク用のCFNetworkのような「コア」サービスを提供します。コアデータ、コアオーディオ、コアアニメーション、コアイメージ、コアロケーションなどもあります...そのすべての下で、OSXはUnixであるため、多くのunix/linuxライブラリにアクセスできます。

e)iPhoneはMac市場の大きな部分を占めています。iPhoneとOSXの開発環境はそれほど違いがないので、両方を学ぶことができます。

f)ほとんどの開発にはMacで十分です。あなたがラップトップが欲しいなら、それは本当に画面サイズと価格の問題です。しかし、私は少なくとも15インチの画面をお勧めします。より高速なCPUのために余分に費やす必要はありませんが、より大きなハードドライブを入手したい場合があります。

于 2009-09-29T13:39:05.690 に答える
1

Windows のネイティブ プログラミングを C や C++ で行ったことがある場合は、アプリケーションを C#/.Net に移行してから、Mono を使用して Mac で実行する方が簡単かもしれません。利用可能なサードパーティの .Net コンポーネントの少なくとも一部は、Mono で実行されます ( http://www.mono-project.com/Third_Party_Controls_Statusを参照)。

どの Mac を購入すればよいかわかりません。きれいな Mac を購入することをお勧めします。

于 2009-09-29T13:00:54.360 に答える
1

e) その小さな市場。

f) iMac。編集:ラップトップと書かれているので、Macbook Pro 13はお得です。

于 2009-09-29T13:12:41.530 に答える
1

a) ...

b) Python を wxPython と組み合わせて使用​​し、クロスプラットフォームにすることができます。Python はデフォルトで Mac OS X に含まれています。

c) ...

d) 確かにあると思いますが、これ以上は言えません。Python を使用している場合は、大量のサードパーティ ライブラリを無料で入手できます。

e) 彼らは親切な外国人 GUI ガイドラインを受け入れません:

1993 年に発売された Word 6.0 は、Windows 用の Word 6.0 と同じコードベースに基づいていたため、Mac 用の Word の史上最悪のバージョンであると広く考えられています。つまり、Macintosh プログラムというよりは、Windows ソフトウェアのように見え、動作するということです。Mac ユーザーは非常に怒っていたので、Microsoft は Word 5.1 のダウングレードを実際に Word 6.0 の所有者に不満を持ってリリースしました。

f) ほとんどの iMac は、プログラミングには十分です。最も気に入った RAM を搭載したものを選択してください。

于 2009-09-29T13:24:42.720 に答える